Engineering Notes
#savol Djangoda fayllarni to'g'ridan-to'g'ri DBda saqlash mumkinmi? Buning qanday kamchiliklari bor? *qisqartirildi
#javob
Django default holatda fileni DBga yuklamaydi. Bu uchun alohida file system ishlatadi. Ya'ni mediafilelar serverda(yoki cloudda) ko'rsatilgan biror directoryda saqlanadi va DBda faqat o'sha files olib boradigan path saqlanadi. Client fileni so'raganda esa DB fileni bermasdan, uning turgan joyini ko'rsatib, "faylni o'sha yerdan topasan" deydi. File aytilgan joydan topilmasa, DB aybni bo'yniga olmaydi ))
Siz so'rayotgan narsa esa BLOB deyiladi, ya'ni katta fileni to'g'ridan to'g'ri DBda saqlash(aslini olganda, bunda ham file tableda saqlanmaydi).
BinaryField orqali djangoda ham BLOB sifatida ishlatishingiz mumkin.
BLOBning men biladigan kamchiliklari:
— Nisbatan sekin. File "cherez baza" uzatiladi.
— Katta filelarni backup qilish qiyin.
— Cache qilish qiyin.
Lekin masalan, softwareni boshqa serverga migrate qilayotganda juda qo'l keladi.
Django default holatda fileni DBga yuklamaydi. Bu uchun alohida file system ishlatadi. Ya'ni mediafilelar serverda(yoki cloudda) ko'rsatilgan biror directoryda saqlanadi va DBda faqat o'sha files olib boradigan path saqlanadi. Client fileni so'raganda esa DB fileni bermasdan, uning turgan joyini ko'rsatib, "faylni o'sha yerdan topasan" deydi. File aytilgan joydan topilmasa, DB aybni bo'yniga olmaydi ))
Siz so'rayotgan narsa esa BLOB deyiladi, ya'ni katta fileni to'g'ridan to'g'ri DBda saqlash(aslini olganda, bunda ham file tableda saqlanmaydi).
BinaryField orqali djangoda ham BLOB sifatida ishlatishingiz mumkin.
BLOBning men biladigan kamchiliklari:
— Nisbatan sekin. File "cherez baza" uzatiladi.
— Katta filelarni backup qilish qiyin.
— Cache qilish qiyin.
Lekin masalan, softwareni boshqa serverga migrate qilayotganda juda qo'l keladi.
👍5
Engineering Notes
Photo
#javob
Connectionni MainDB objectni initialize qilayotganda ochmang.
Hozir siz MainDBdan object olganda connection ochayapsiz.
Bir method orqali query yuborganda with context manager orqali connectiondan foydalanib, keyin uni yopib chiqib ketayapsiz.
Keyingi safar query yubormoqchi bo'lganingizda connection yopilgani sabab error berayapti.
Yoki har bitta query uchun alohida connection ishlating, yoki (agar bitta connectionni doim ishlatmoqchi bo'lsangiz) with ishlatmang, sababi u kod execute bo'lganidan keyin connectionni yopadi.
Connectionni MainDB objectni initialize qilayotganda ochmang.
Hozir siz MainDBdan object olganda connection ochayapsiz.
Bir method orqali query yuborganda with context manager orqali connectiondan foydalanib, keyin uni yopib chiqib ketayapsiz.
Keyingi safar query yubormoqchi bo'lganingizda connection yopilgani sabab error berayapti.
Yoki har bitta query uchun alohida connection ishlating, yoki (agar bitta connectionni doim ishlatmoqchi bo'lsangiz) with ishlatmang, sababi u kod execute bo'lganidan keyin connectionni yopadi.
👍5
Ajoyib mantiqiy savol o'qib qoldim, siz ham yechishga harakat qilib ko'ring:
Sizda ikkita bir xil bo'lmagan arqon bor va har biri to'liq yonishi uchun aynan bir soat vaqt talab qiladi. Lekin arqonning zichligi hamma joyida bir xil emas. Arqonni teng ikkiga bo'lsak, birinchi yarmi 20 minutda, ikkinchi yarmi 40 minutda yonishi ham mumkin.
Savol: shu ikki arqondan foydalanib, qanday qilib aynan 15 daqiqa vaqtni o'lchash mumkin?
Sizda ikkita bir xil bo'lmagan arqon bor va har biri to'liq yonishi uchun aynan bir soat vaqt talab qiladi. Lekin arqonning zichligi hamma joyida bir xil emas. Arqonni teng ikkiga bo'lsak, birinchi yarmi 20 minutda, ikkinchi yarmi 40 minutda yonishi ham mumkin.
Savol: shu ikki arqondan foydalanib, qanday qilib aynan 15 daqiqa vaqtni o'lchash mumkin?
Forwarded from Uz Python Meetup (Hojarbu)
'Hello World!'
Siz dasturchimisiz? Python tilida kod yozasizmi?Unda bu post aniq siz uchun! 🤩
Aprel oyining 17-sanasida Uzdjango developers community tomonidan navbatdagi "Python MeetUp" tashkillashtirilmoqda.
👉 @UzPythonMeetup
MeetUp davomida Siz:
⚡️Pythonda yaratilgan applarni deploy qilish uchun platformalar va instrumentlar;
⚡️Memory Management in Python;
⚡️Python testing tools;
⚡️Sun’iy intellekt yordamida ovozni tanish texnologiyalari;
⚡️Pythonda GIL va konkurrensiya va boshqa qiymatli ma'lumotlarga ega bo'lasiz.
Ha aytgancha, boshqa hamkasb dasturchilar va ish beruvchi kompaniyalar bilan tanishishga ham tayyor bo'ling!
Ro'yxatdan o'tish va manzilni bilish uchun navbatdagi e'lonlarimizni kuzatib boring!
Uzoq kutilgan MeetUpda ko'rishguncha! 😉
Forwarded from Uz Python Meetup (A'zam Mamatmurodov)
Barchani Navbatdagi Meetupga taklif etamiz! Kirish bepul va faqatgina ro'yxatdan o'tish talab etiladi! Shoshiling, joylar soni cheklangan!
Quyidagi havola orqali ro'yxatdan o'ting: https://forms.gle/HdHDVzN7Tt6mLnBi6
👉 @UzPythonMeetup
Quyidagi havola orqali ro'yxatdan o'ting: https://forms.gle/HdHDVzN7Tt6mLnBi6
👉 @UzPythonMeetup
Google Docs
Tashkent Python Developers Meetup#2
Spikerlar:
1. Erkin Isoyev - Sun’iy intellekt yordamida ovozni tanish texnologiyalari
2. Maxim Belov - Memory Management in Python
3. Mohinur Abdurahimova - Профессия Data Scientist. Кто такой Аналитик Данных
4. Ibrohim Ermatov - Python testing tools
5. Bobosher…
1. Erkin Isoyev - Sun’iy intellekt yordamida ovozni tanish texnologiyalari
2. Maxim Belov - Memory Management in Python
3. Mohinur Abdurahimova - Профессия Data Scientist. Кто такой Аналитик Данных
4. Ibrohim Ermatov - Python testing tools
5. Bobosher…
Engineering Notes
#savol FastAPI nima? U ham REST APIning bir qismimi? Ikkalasining farqi nima?
#javob
Tushunarliroq qilishga harakat qilaman:
Bilasiz, API (boshlanishiga, faqat web APIlar haqida gaplashamiz) bizga ikki xil dastur/application orasida ma'lumot almashish uchun kerak. Masalan, frontend backend bilan ma'lumot almashishi uchun API ishlatamiz.
API ishlatish uchun esa ikkala taraf ham tushunadigan usulda ma'lumot almashish kerak. Masalan, siz Xitoy tilini bilmaysiz, u esa O'zbek tilini bilmaydi. Lekin ikkalangiz ham ingliz tilini bilsangiz bir-biringiz bilan gaplasha olasizlar.
Qaysi tilda va qanday usulda, qanday qoidalar asosida "gaplashish"ga qarab API ko'plab turlarga bo'linadi.
Web APIlar orasida eng keng tarqalgan turlaridan biri REST turidagi APIlar. RESTda ma'lumot almashish uchun JSON formatidan foydalaniladi. Va ma'lumotlarni qanday ko'rsatish va hokazo kabi bir qancha qoidalarni o'z ichiga oladi.
E'tibor bering, REST aynan bir dastur emas, balki API turi, aniqrog'i, qoidalar to'plami. Shu qoidalar asosida ishlaydigan APIlar esa REST API deyiladi.
Web uchun ishlatiladigan ko'plab dasturlash tillarida REST APIlar qurish va ulardan foydalana olish uchun texnologiyalar qurilgan. Pythonda ham bu bo'yicha yetarlicha librarylar bor.
Django standart holatda server-side renderingdan foydalanadi, REST API ishlatmaydi. Lekin Django bilan REST API qurish uchun Django REST Framework (DRF) nomni library(balki, framework, anig'ini bilmayman) bor. Qisqasi, u djangoda API qurish uchun "adapter" sifatida ishlaydi.
Boshqa python frameworklar esa standart holatda REST APIlar bilan ishlay oladi. Bulardan eng mashhurlari esa Flask va FastAPI. Ya'ni bular REST qoidalaridan foydalangan holda API qura oladigan frameworklar.
REST yagona web API turi emas. Yana eng mashhurlaridan GraphQL nomli API turi bor.
Tushunarliroq qilishga harakat qilaman:
Bilasiz, API (boshlanishiga, faqat web APIlar haqida gaplashamiz) bizga ikki xil dastur/application orasida ma'lumot almashish uchun kerak. Masalan, frontend backend bilan ma'lumot almashishi uchun API ishlatamiz.
API ishlatish uchun esa ikkala taraf ham tushunadigan usulda ma'lumot almashish kerak. Masalan, siz Xitoy tilini bilmaysiz, u esa O'zbek tilini bilmaydi. Lekin ikkalangiz ham ingliz tilini bilsangiz bir-biringiz bilan gaplasha olasizlar.
Qaysi tilda va qanday usulda, qanday qoidalar asosida "gaplashish"ga qarab API ko'plab turlarga bo'linadi.
Web APIlar orasida eng keng tarqalgan turlaridan biri REST turidagi APIlar. RESTda ma'lumot almashish uchun JSON formatidan foydalaniladi. Va ma'lumotlarni qanday ko'rsatish va hokazo kabi bir qancha qoidalarni o'z ichiga oladi.
E'tibor bering, REST aynan bir dastur emas, balki API turi, aniqrog'i, qoidalar to'plami. Shu qoidalar asosida ishlaydigan APIlar esa REST API deyiladi.
Web uchun ishlatiladigan ko'plab dasturlash tillarida REST APIlar qurish va ulardan foydalana olish uchun texnologiyalar qurilgan. Pythonda ham bu bo'yicha yetarlicha librarylar bor.
Django standart holatda server-side renderingdan foydalanadi, REST API ishlatmaydi. Lekin Django bilan REST API qurish uchun Django REST Framework (DRF) nomni library(balki, framework, anig'ini bilmayman) bor. Qisqasi, u djangoda API qurish uchun "adapter" sifatida ishlaydi.
Boshqa python frameworklar esa standart holatda REST APIlar bilan ishlay oladi. Bulardan eng mashhurlari esa Flask va FastAPI. Ya'ni bular REST qoidalaridan foydalangan holda API qura oladigan frameworklar.
REST yagona web API turi emas. Yana eng mashhurlaridan GraphQL nomli API turi bor.
👍18
Watch "Here's A More Pythonic Factory Pattern" on YouTube
https://youtu.be/zGbPd4ZP39Y
https://youtu.be/zGbPd4ZP39Y
YouTube
The Factory Design Pattern is Obsolete in Python
💡 Learn how to design great software in 7 steps: https://arjan.codes/designguide.
What would the Factory Pattern look like if it was invented today instead of in the 90s? I talk about the design principles behind the Factory Pattern, and how you can achieve…
What would the Factory Pattern look like if it was invented today instead of in the 90s? I talk about the design principles behind the Factory Pattern, and how you can achieve…
Forwarded from Uz Python Meetup (Журабек Абриев Т)
Hurmatli kanalimiz kuzatuvchilari, meetup qayerda va qachon bo'lishi haqida eslatib o'tmoqchimiz!
Bosh hamkorimiz: INNO Innovatsion o'quv va ishlab chiqarish texnoparki
Ro'yxatdan o'tish: https://forms.gle/HdHDVzN7Tt6mLnBi6
Manzil : INNO Innovation texnoparki
Batafsil ma'lumot: 👉 @UzPythonMeetup
Bu yangilikni do'stlarga ulashishni unutmang 😉
Bosh hamkorimiz: INNO Innovatsion o'quv va ishlab chiqarish texnoparki
Ro'yxatdan o'tish: https://forms.gle/HdHDVzN7Tt6mLnBi6
Manzil : INNO Innovation texnoparki
Batafsil ma'lumot: 👉 @UzPythonMeetup
Bu yangilikni do'stlarga ulashishni unutmang 😉
Forwarded from Uz Python Meetup (Журабек Абриев Т)
Uz Python Meetup
Beshinchi mavzuimiz va spikerimiz bilan tanishing 👉 @UzPythonMeetup
Anaqqisa, sekin kelinoradi 🙂
👍2
Forwarded from Uz Python Meetup (Журабек Абриев Т)
https://instagram.com/uzpythondeveloperscommunity Manashu Instagram sahifamizda jonli efirdamiz
Cloud texnologiyalari haqida yaxshi ma'lumotlar berib boradigan YouTube kanali ekan:
https://youtube.com/c/BeABetterDev
https://youtube.com/c/BeABetterDev
Creating 3 brand new problems instead of dealing with one problem and calling this a solution.
This is what engineering is all about.
This is what engineering is all about.
👍7
Forwarded from Sardor Dushamov | PHP - tengi yo'q til!
HTTPS qanday ishlaydi?
Hypertext Transfer Protocol Secure (HTTPS) shifrlangan ma'lumotlarni Transport Layer Security (TLS) yordamida uzatadi.
Ma'lumotlar qanday shifrlanadi va deshifrlanadi?
1-qadam. Client (browser) va server TCP orqali o'rnatadi.
2-qadam. Client serverga "Client Hello" xabarini yuboradi. Xabarda kerakli shifrlash algoritmlari (cipher suites) va u qo'llab-quvvatlashi mumkin bo'lgan so'nggi TLS versiyasi mavjud. Server "Server Hello" javobni beradi, shundan keyin Browser algoritmlar va TLS versiyasini qo'llab-quvvatlashi mumkinligi haqida xabar topadi.
Keyin server clientga SSL sertifikatini yuboradi. Sertifikatda ochiq kalit, host nomi, amal qilish muddati va boshqalar mavjud. Client sertifikatni tasdiqlaydi.
3-qadam. SSL sertifikatini tekshirgandan so'ng, client session key generate qiladi va uni ochiq kalit(public key) yordamida shifrlaydi. Server shifrlangan session keyni oladi va uni private key bilan deshifrlaydi.
4-qadam – Endi client ham, Server ham bir xil session keyga ega (simmetrik shifrlash), shifrlangan maʼlumotlar xavfsiz bi-directional kanalda uzatiladi.
Nima uchun HTTPS ma'lumotlarni uzatishda simmetrik shifrlashga o'tadi? Ikkita asosiy sabab bor:
1. Xavfsizlik: assimetrik shifrlash faqat bitta yo'l bilan amalga oshiriladi. Bu shuni anglatadiki, agar server shifrlangan ma'lumotlarni clientga qaytarib yuborishga harakat qilsa, har kim ochiq kalit(public key) yordamida ma'lumotlarning shifrini ochishi mumkin.
2. Server resurslari: assimetrik shifrlash juda ko'p matematik yuklarni qo'shadi. Bu uzoq seanslarda ma'lumotlarni uzatish uchun mos emas.
Alex Xu sahifasidan olib tarjima qilindi
Hypertext Transfer Protocol Secure (HTTPS) shifrlangan ma'lumotlarni Transport Layer Security (TLS) yordamida uzatadi.
Ma'lumotlar qanday shifrlanadi va deshifrlanadi?
1-qadam. Client (browser) va server TCP orqali o'rnatadi.
2-qadam. Client serverga "Client Hello" xabarini yuboradi. Xabarda kerakli shifrlash algoritmlari (cipher suites) va u qo'llab-quvvatlashi mumkin bo'lgan so'nggi TLS versiyasi mavjud. Server "Server Hello" javobni beradi, shundan keyin Browser algoritmlar va TLS versiyasini qo'llab-quvvatlashi mumkinligi haqida xabar topadi.
Keyin server clientga SSL sertifikatini yuboradi. Sertifikatda ochiq kalit, host nomi, amal qilish muddati va boshqalar mavjud. Client sertifikatni tasdiqlaydi.
3-qadam. SSL sertifikatini tekshirgandan so'ng, client session key generate qiladi va uni ochiq kalit(public key) yordamida shifrlaydi. Server shifrlangan session keyni oladi va uni private key bilan deshifrlaydi.
4-qadam – Endi client ham, Server ham bir xil session keyga ega (simmetrik shifrlash), shifrlangan maʼlumotlar xavfsiz bi-directional kanalda uzatiladi.
Nima uchun HTTPS ma'lumotlarni uzatishda simmetrik shifrlashga o'tadi? Ikkita asosiy sabab bor:
1. Xavfsizlik: assimetrik shifrlash faqat bitta yo'l bilan amalga oshiriladi. Bu shuni anglatadiki, agar server shifrlangan ma'lumotlarni clientga qaytarib yuborishga harakat qilsa, har kim ochiq kalit(public key) yordamida ma'lumotlarning shifrini ochishi mumkin.
2. Server resurslari: assimetrik shifrlash juda ko'p matematik yuklarni qo'shadi. Bu uzoq seanslarda ma'lumotlarni uzatish uchun mos emas.
Alex Xu sahifasidan olib tarjima qilindi
👍10