dbit.one© 2026
000
booting_
Loading experience0%
dbit.one
Natija uchun kim javob beradi

Doniyor
Botirov.

Asoschi · Arxitekturani oʻzi yozadi

Siz taqdimotli akkaunt-menejerni emas, kodni yozgan muhandisni olasiz.

Toshkent · UTC+5Dasturlashda beshinchi yilShaxsan javob beradi
Doniyor Botirov
Kursorni olib boring — yorugʻlik ergashadi

Pozitsiya

Dasturlashni soat va odam bilan sotishadi. Sotib olishganda esa natija va xotirjamlik kerak boʻladi. Shuning uchun men jamoa rezyumesini emas, oʻlchanadigan narsalarni koʻrsataman: nima edi, nima boʻldi va qanday oʻlchandi.

Men tabiatan jamoa yetakchisiman: jamoani vazifa atrofida yigʻaman va reliz boʻlgunicha shu yerda qolaman, loyihani konveyer boʻylab uzatib yubormayman. Besh yil ichida shartnoma imzolangandan keyingi qoʻl almashinuvi loyihaga foyda berganini bir marta ham koʻrmadim.

Har qanday tizimni darrov tez qilish, keyin nega sekinligini tushuntirishdan osonroq. Shu saytning birinchi ekranini 6,4 dan 2,2 soniyagacha tushirdim — mijozning emas, oʻz saytimda: birovning raqamini tekshirib boʻlmaydi, meniknini esa hoziroq mumkin.

Muvaffaqiyatsizliklarni ham eʼlon qilaman. Blogda tashrifchilarning bir qismi sayt oʻrniga boʻsh ekran koʻrgan xatoning tahlili turibdi. Faqat gʻalabalar haqida yozadigan kompaniya sizga hammasini aytmayapti.

Bu loyihada nimani anglatadi

01

Arxitekturani oʻzim yozaman

Shartnoma imzolangach loyiha boshqa qoʻlga oʻtmaydi. Kim sotgan boʻlsa — oʻsha quradi.

02

Qoʻngʻiroqlarda menejer emas, men

Texnik savollar suhbat davomida hal boʻladi, «jamoadan soʻrab, qaytaman» degan javob yoʻq.

03

Kafolat toʻlov bilan tugamaydi

Biz yozgan koddagi nuqsonlarni muddatsiz va bepul tuzatamiz.

04

Kuchim yetmasa — rad etaman

Qoʻngʻiroqdagi «yoʻq» siz uchun uch oydan keyingi buzilgan muddatdan arzonroq.

Shu saytda tekshiring

Mijoz tizimlari NDA ostida va ularni soʻzga ishonib qabul qilish shart emas. Bu sayt esa oʻsha qoʻllar bilan qilingan va undagi hamma narsa oʻlchanadi — yomon qilinib, keyin tuzatilgan narsalar ham.

6,4 → 2,2 s
Mobil qurilmada birinchi ekran. Sabab va oʻlchov usuli blogda.
−79 %
Telefonda rasmlar vazni — tasvirlar konveyeri qayta qurilgandan keyin.
0 → 60
JavaScriptsiz oʻqiladigan bloklar. Avval oltmishdan nolta edi.
42
Uch tilda texnik material. Oʻz xatomiz tahlili ham shular ichida.

Qurgan tizimlarim

Ogʻir texnika parkini boshqarishJahon ishlab chiqaruvchisi
Milliy sogʻliqni saqlash tizimiDavlat miqyosi
Shifokor uchun AI-yordamchiUniversitet shifoxonasi
Chakana bank uchun tahlil konturiFintech
Taʼlim muassasalari tarmogʻi uchun CRMMarkaziy Osiyo

Mijozlar nomi NDA ostida. Nomlar, shartnomalar va tavsiya uchun kontaktlar oʻzaro kelishuv asosida qoʻngʻiroqda koʻrsatiladi.

Ochiq kod

Mijoz tizimlari NDA ostida. Bu toʻrt repozitoriy esa toʻliq ochiq — mendan soʻramay oʻqish, oʻrnatish va tekshirish mumkin. Birinchisi — usul. Keyingi ikkitasi — xato qilish eng oson va sezish eng qiyin joylar: mashinalar oʻrtasidagi va bitta mashina ichidagi izchillik. Toʻrtinchisi birinchisining tan olingan chegarasini yopadi: tanlanma xatolarni topadi, ammo ularni istisno qilmaydi.

Usul
unflakeGitHub’da koʻrish

Asinxron xatolar tasodifiy emas. Tasodifiy narsa — operatsion tizim tanlagan bajarilish tartibi, shuning uchun xato uch yuz yurishda bir marta chiqadi va takrorlanmaydi. unflake bu tanlovni OTdan tortib oladi: vaqt, taymerlar va tayyor kolbeklar tartibi sid asosidagi qiymatlarga aylanadi. Bir sid — bayt-baytigacha bir xil yurish. Topilgan xato minimal jadvalgacha siqiladi va istalgan mashinada takrorlanadi.

TypeScriptMITBogʻliqliklar yoʻqnpm da chop etilgan
Usul: mashinalar oʻrtasidagi kelishuv
bulwarkGitHub’da koʻrish

Yaxshi kunda ishlaydigan lider saylovini kim boʻlsa ham yozadi. Qiyin kun — tarmoq boʻlinib, ikki tugun oʻzini bosh deb hisoblagan, toʻrt soniya avvalgi xabar ikki marta yetib kelgan va oʻlikdan qaytgan tugun eskirgan log olib kelgan kun. bulwark — TypeScriptdagi Raft, uni determinlashgan simulyatsiya ushlab turadi: boʻlinishlar, qulashlar va xabarlar tartibining oʻzgarishi sid asosida beriladi, maqoladagi beshta xavfsizlik xossasi har bir holat oʻtishidan keyin tekshiriladi, mijoz operatsiyalarining har bir tarixi esa linearizatsiyaga tekshiriladi. Repozitoriydagi asosiy narsa — xatolar muzeyi: yettita eksponatning har biri Raftning aynan bitta qoidasini oʻchiradi va xarnessdan uni sid bilan hamda xossa nomi bilan tutishni talab qiladi. Bitta eksponat — xarness implementatsiyaning oʻzida topgan xato.

TypeScriptMIT5 ta xavfsizlik xossasiXatolar muzeyi: 7 eksponatnpm: @botiroff/bulwark
Usul: bitta mashina ichidagi kelishuv
adyaGitHub’da koʻrish

Har bir maʼlumotlar bazasi izolyatsiya darajalarini eʼlon qiladi. Ammo oʻz darajasi aslida nimaga yoʻl qoʻyishini deyarli hech kim koʻrsata olmaydi. «Bizda snapshot isolation» degani — bir vaqtning oʻzida ikkita daʼvo: undan zaifroq hech narsa yuz bermasligi va bu haqiqatan SI ekani, oʻsha nom ostidagi qatʼiyroq narsa emasligi. Ikkalasini ham kodni oʻqib tekshirib boʻlmaydi — bular matnning emas, bajarilishlarning xossalari. adya bajarilishlarni tutadi va soʻroq qiladi: bir tomondan — toʻrtta izolyatsiya darajasiga ega MVCC dvigateli, unda serializable Keyhill algoritmi bilan qilingan, aynan PostgreSQLdagi algoritm; ikkinchi tomondan — kuzatilgan tarixdan bogʻliqliklar grafini quradigan, undan sikllarni qidiradigan va topilganini Adya dissertatsiyasidagi nomlar bilan ataydigan tekshiruv: G0, G1a, G1b, G1c, G-single, G2-item. Har bir daraja ikki tomondan tekshiriladi: u oldini olishi shart boʻlgan narsani ishlab chiqarmaydi va keyingi daraja oldini oladigan narsani ishlab chiqaradi. Hech bir tomonga alohida ishonilmaydi — ular bir-birini fosh qiladi.

TypeScriptMIT4 izolyatsiya darajasiAdya boʻyicha 6 fenomennpm: @botiroff/adya
Tanlanma oʻrniga isbot
pnueliGitHub’da koʻrish

Bu repozitoriy unflake ning cheklovlar boʻlimidagi bitta jumla tufayli mavjud: yuzlab sid — juda yaxshi fazzing, ammo teorema emas. Jadvallar tanlanmasi xatolarni topadi va ularning yoʻqligini hech qachon isbotlamaydi; isbotlash — barcha erishiladigan holatlarni aylanib chiqish, bu esa eksponenta. Shuning uchun model checker dagi asosiy narsa qidiruv emas, qidirmaslikka imkon beradigan narsalar: simmetriya (oltita almashtiriladigan jarayon 15 625 taqsimot beradi, ammo atigi 210 multitoʻplam) va qisman tartiblangan qisqartirish. Asosiy muammo shundaki, buzilgan qisqartirish ishlaydiganidek javob beradi — «buzilish topilmadi». Shuning uchun toʻliq saralash yonida qoldirilgan — sekin va xato qila olmaydigan, — har bir spetsifikatsiya esa ikkalasida mos verdikt berishi shart. Jonlilik zaif adolat sharti ostida tekshiriladi: spinlok kontrmisol bilan tutiladi, Peterson algoritmi oʻtadi.

TypeScriptMITToʻliq saralash mezon sifatidanpm: @botiroff/pnueli

Toʻgʻridan-toʻgʻri aloqa

Pochta
[email protected]
Telefon
+1 (929) 435-5537
Telegram
@dbitone
GitHub
BOTIROFF-D
Javob
bir ish kuni ichida