Engineering Notes
2.46K subscribers
137 photos
5 files
208 links
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
Download Telegram
😁12
Forwarded from Azimjon's Fikrlog
Tanishing, bu qush - kanareyka.
Ko'p insonlar hayotini saqlab qolgan.

1800-yillarda, ko'mir konidagi hidsiz bo'lgan uglerod oksidi oqibatida ko'p insonlar vafot etishgan.

- Aaa, demak kanareyka sezarkanda deb o'ylayapsizmi?

Yo'q, kanareyka ham sezmaydi, darrov o'lib qolarkan - lekin insonlarga nisbatan tezroq. Bu esa odamlar kondan chiqib olishiga imkon beradi.

Rasmdagi qafas ustida kislorod balonini ko'rishingiz mumkin. Bu xushdan ketgan kanareykani hayotga qaytarish uchun ishlatilgan.

Asrlar o'tib, hozirgacha "kanareyka testi" g'oyasi saqlanib qolgan - ayniqsa dasturlashda.

Muhim servislar ishlab turganini, ya'ni "tirikligini" tekshirish uchun "canary test"lar yoziladi va har zamonda yuritib turiladi.

Nihoyatda go'zal.
👍32🍾1
Roses are red, violets are blue...
There's always an abstraction layer lower than you.

Credit: @programmer_humor
😁15
Bugun Python meetupda qatnashdim. Juda yaxshi o'tdi.
Sun'iy intellekt va Data Science uchun o'rganish kerak.

Yana bir narsa, buyog'iga ikki xil dasturchilarga ko'proq talab oshadi deb o'ylayman:
1) Sun'iy intellekt bilan shug'ullanadigan dasturchilar
2) Sun'iy intellektdan, u yordamida ishlab chiqilgan texnologiyalardan foydalana oladigan dasturchilar

Lekin bir narsani tushuning, hammaga ham emas Sun'iy intellekt bilan shug'ullanish.

Qiyos qilib tushuntiraman: kimdir Kimyo fanidan yaxshi o'qigan, o'zi ham yaxshi ko'radi, yoki matematikani olaylik. Hammadan ham yaxshi Kimyogar yoki Matematik chiqavermaydi. Insonni qiziqishi salohiyati har xil. Shuning uchun o'zingizni hamma o'zini urayotgan tarafga urishdan oldin, mengami o'zi bu deb savol bering.

Bu yo'nalish oson yo'nalish emas web yo'nalishdaka.
Shuning uchun sun'iy intellektda o'zizni ko'rolmayotgan bo'lsangiz web yo'nalishda PHPni o'rganib qo'yavering, osoni shu 😊

PS: rasmdagi pitonchilar orasida o'tiribman qo'ziqoringa o'xshab
👍15😁2
tg_image_781127663.jpeg
64.2 KB
"My code is readable and self-explanatory"

Meanwhile, the code:
😁10
Forwarded from Engineering Notes
Concurrency Control

Zamonaviy ma'lumotlar bazalarida bir vaqtda bir nechta foydalanuvchi tomonidan parallel operatsiyalarni amalga oshirish imkonini beradi. Agar bu operatsiyalar aynan bitta resurs ustida bo'lsa (masalan, 2 ta process bir vaqtda bitta ma'lumotni o'zgartirishga harakat qilsa) ular bir-biriga konkurrent bo'ladi va bu ma'lumot yo'qotilishi bilan bogʻliq bir qancha muammolarga olib keladi.

Konkurrent operatsiyalarni xavfsiz boshqarish uchun Concurrency Control (Konkurrensiya Nazorati) mexanizmlari mavjud bo'lib, ularning asosiy vazifasi konkurrent operatsiyalar natijasida ma'lumot buzilishining oldini olish.

CC mexanizmlari konkurrensiyaga bo'lgan munosabatiga qarab 2 ta kategoriyaga bo'linadi: Optimistic CC va Pessimistic CC.

1) Optimistic CC. Bu yondoshuvga ko'ra konkurrensiya holatlari kamdan-kam sodir bo'ladi va doim alohida tayyorgarlik ko'rishga arzimaydi. Bu usul xuddi bahorda ko'chaga soyabonsiz chiqishga o'xshaydi. Yomg'ir yog'masligiga umid qilasiz, lekin yog'sa jiqqa ho'l bo'lasiz.
Kam resurs talab qiladi, lekin operatsiya muvaffaqiyatsiz tugashi mumkin.

Bu usulda ishlaydigan usullardan eng keng tarqalganlari Timestamp-Based Concurrency Control (TBCC) va Multi-Version Concurrency Control (MVCC) mexanizmlari.

TBCC har bir tranzaksiyaga unikal timestamp berish orqali tranzaksiyalarning qat'iy ketma-ketligini ishlab chiqadi va har bir obyektga uni oxirgi marta o'qigan/o'zgartirgan tranzaksiyaning timestampini yozib boradi.

Tranzaksiyadagi har bir operatsiyani bajarishdan oldin o'qilayotgan/o'zgartirilayotgan obyektda ko'rsatilgan timestampga qarab 3 ta variantdan birini tanlaydi: bajarish, kutish yoki bekor qilish. Agar birorta operatsiya muvaffaqiyatsizlikka uchrasa (bekor qilinsa) butun tranzaksiya bekor qilinadi (yomg'ir yog'ib ho'l qiladi).
Ma'lumotlarni yagona versiyada saqlaydigan tezkor, yengil lekin ishonchsiz CC mexanizmi.

MVCC ham xuddi TBCCga o'xshab har bir tranzaksiyaga unikal ID berish orqali ularning tartibini aniqlaydi. Lekin uning ustun jihati bir vaqtning o'zida aynan bitta ma'lumotning asosiy (ishonchli) versiyadan tashqari har bir tranzaksiya uchun alohida versiyalarini saqlay oladi. Natijada muvaffaqiyatsizlikka uchraydigan operatsiyalar nisbati va kutish vaqti kamayadi.

Har bir ma'lumot bir nechta versiyaga ega va uning biror versiyasi hammaga emas, faqat ma'lum tranzaksiyalargagina ko'rinadi. Buni aniqlash uchun tranzaksiya IDlari va izolyatsiya darajalaridan foydalangan holda bir qancha murakkab qoidalardan iborat visibility check (ko'rinish tekshiruvi) o'tkaziladi. Ma'lumot yozish esa TBCCdagiga o'xshashroq. Umuman olganda, MVCC TBCCning ancha murakkab ko'rinishi.

2) Pessimistic CC. Bu yondoshuvga ko'ra konkurrensiya tez-tez sodir bo'ladigan jarayon va har doim unga tayyor bo'lishi kerak. Ya'ni har ehtimolga qarshi har doim soyabon olib yurish kerak. Biroz og'irroq, lekin sodda va ishonchli usul.

Bu usulning eng keng tarqalgan ko'rinishi Two-Phase-Locking (2PL) bo'lib, ishlashi juda oddiy. Tranzaksiya biror ma'lumotni o'zgartirishidan oldin uni lock(qulf) qiladi va tranzaksiya oxirigacha saqlab turadi. Bu vaqt davomida o'sha ma'lumotdan foydalanmoqchi bo'lgan boshqa tranzaksiyalar lock ochilishini kutib turadi. Natijada bazada yagona versiyali, ishonchli ma'lumot saqlanadi.

Bu CCning turlari haqida qisqacha ma'lumot edi. Aslida bu usullarning har biri haqida diplom ishi yozish mumkin.

@boboshersnotes
👍13
Fakt: Pythonda classlarning o'zi ham aslida boshqa classdan olingan object.

Kuningiz yaxshi o'tsin ))
😁14👍1👎1😢1
Python: So bo'lasila ))
😁14👍1
Yetmaganiga
😢21😁8🍾2👍1
Forwarded from Otabek’s I/O
Best practices

Shaxsiy fikrim inson nimanidir qilishga boshidan odatlanishi juda yomon agar u haqiqatdan yomon narsa bo'lsa.

Yomon kod yozishga boshidan o'rgansa keyin yaxshilashi uchun juda ko'p vaqt ketadi.

Boshlagan ishini oxiriga yetkazmasa, keyin to'g'irlash juda qiyin bo'ladi.

Shuni inobatga olib boshidan o'zini shu narsaga o'rgata olsa bu uning eng katta yutug'i bo'ladi deb o'ylayman.

Daraxt o'sib bo'lgandan keyin uni to'g'irlash juda katta muammolar keltirishi, sinishlar yuzaga kelishi mumkin.

Ammo nixol paytida qiyshiqlikni to'g'irlash hech qanday zarar yetkazmaydi.

Chiroyli va tushunarli kod yozishga odatlaning. Bilmasngiz o'rganing.

Mana bu sizga oz-moz yordam berishi mumkin.

@unotech_log
👍17
Which properties of mutable Python objects are modifiable?
Anonymous Quiz
27%
Identity, Value
47%
Type, Value
26%
Value
👍9👎1
Systems engineering (asosan database/storage systems) uchun asosiy til sifatida qaysi tilga ko'proq fokus qilishni tavsiya qilasizlar?
C/C++, Rust yoki Go?
👍1👎1
What is 0°C + 0°C?
👎2
Forwarded from Programming ∀
Qizil rangni kamaytirishimiz eng muhimi !
👍10👎1
Webhook vs polling?
No, webhook is a form of polling.
👎17👍4
Compiler vs interpreter?
No, interpreter is a form a compiler.
👎16👍1
Java vs C#?
Hmm...

P.S. Read the previous posts, lol.
😁21👎14👍2