Engineering Notes
1. The cake was baked by my sister for my birthday. 2. The book was written by a famous author. 3. The window was broken by a stray ball. 4. The news was announced by the president on national television. 5. The house was decorated with festive lights for…
Chat by @Otabek_Ismoilov
👍4
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.
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
There's always an abstraction layer lower than you.
Credit: @programmer_humor
😁15
Forwarded from Sardor Dushamov | PHP - tengi yo'q til!
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
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
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
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
Wikipedia
Concurrency control
measures to ensure concurrent computing operations generate correct results
👍13
Fakt: Pythonda classlarning o'zi ham aslida boshqa classdan olingan object.
Kuningiz yaxshi o'tsin ))
Kuningiz yaxshi o'tsin ))
😁14👍1👎1😢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
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
Forwarded from samdark blog ☕️ (Alexander Makarov)
🔗 Philosophies that Shaped Successful Frameworks
The writing by Qiang Xue, original creator of Yii framework. It is from 2016 but didn't lose its actuality.
https://medium.com/capital-one-tech/philosophies-that-shaped-successful-frameworks-f976781e9bd4
The writing by Qiang Xue, original creator of Yii framework. It is from 2016 but didn't lose its actuality.
https://medium.com/capital-one-tech/philosophies-that-shaped-successful-frameworks-f976781e9bd4
Medium
Philosophies that Shaped Successful Frameworks
During the past decade we’ve seen many software frameworks pop up. Frameworks such as Spring and Ruby on Rails have become so successful…
👍4
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?
C/C++, Rust yoki Go?
👍1👎1