Programming ∀
1.35K subscribers
216 photos
4 videos
1 file
131 links
Ushbu kanalda dasturlashga aloqador turli expriementlarim, g'oyalarim, hulosalarimni ulashaman.
Download Telegram
Eyhh hamkorlik o'xshamadi.
🤝4
Keyingi safar shunaqa murojatlar bo'lsa deb bitta baliq o'vi uchun page qivolish kerak ekan qiziq ocharmikan linkni :)
👌5
Mayli keyingi safarga yaxshiroq tayyorlanib ko'raman bazi narsalar yemadi.

Hullas user accountlar qanaqadir qilib linkni ochishiga majburlash kerak. Uyoqda katta extimol bilan LLM based personajlar bo'ladi.

Va manga qiziq LLMlar linkni ochishi :)

Shunga bitta norm domaincha olib page qilib uyoqda telemeteriya qo'yish kerak va qiziq botlar tashrif buyurarmikan yoki yo'q.

Negadir manga scammerlar ko'p yozadi va juda ham qiziq buyoqdagi qoravoylar qayerdagi serverlarda turibti vaxakazo ma'lumotlar.
❤3🔥1
Aytgancha bilasizmi skam tarixi javascriptdan boshlangan.

https://www.youtube.com/watch?v=OMwW4T19sHw

Full skam dasturchi bo'lmoqchi bo'lsangiz frontend jsda backend php da bo'lishi kerak.
😁15🤣4❤2
😁20🤣8💯2😭2
System design haqida gap ketganda qiziq narsa bor.

Ko'pchilik turli yechimlarni ko'rib buni train qilish kerak deb o'ylaydi. Masalan bitta narsa qanday ishlashini o'rganish, tushunish uncha qiyin emasdek ko'rinadi. Juda ko'p holda muammoni katta qismini infrastructure levelda hal etiladi.

Masalan:

Transactional processing system - misolida olsak, bizga kerak bo'ladigan narsa qanaqadir event sourcing uchun muhit. Eventlarni saqlash va process qilishga yechimlar. Aytaylik kafka + kql da consistency qilsak event handlerlarni esa kafka + app levelda qivoramiz. Masalan consumer groups bilan concurrent handlerlar qilishimiz mumkin. Endi manashuni kengaytirish kerak bo'lsa shunchaki saga pattern kabi yechimlar qilamiz, aytaylik har bir servisda o'zini eventlarini process qiladigan yoki eventlarni ochrestrate qiladigan yechimlar qilishimiz mumkin. Agar 2ta servis birxil data saqalasa shunchaki transactional outbox kabi narsa kerak.

Yani bu keysda technical narsalar ancha kam asosiy masala domain aspectlarda bo'ladi. Aytilgan narsalarni katta qismiga infratuzulma darajasidagi yechimlar yetarli. Masalan appingizda load ko'paysa kubernetesga tiqib autoscaling setup qilasiz tamam. Kafkani ham tog'ri setup qilsangiz juda ko'p holda sizni muammoni cover qiladigan yechimlar tayyor bo'ladi.

Shunga ko'p gapiraman internetda aytilgan system design degan narsalar sizga vaybdan boshqa hechvaqo bermaydi. Realityda muammoni katta qismi operational levelda hal bo'ladi. Enterpraysda esa sizni technical skilldan ko'ra non technical skill usunroq. Yani senior bo'lishingiz uchun biror dasturlash tilini yaxshi bilganingizdan ko'ra ko'proq odamlar bilan gaplasha olishingiz muhimroq. Chunki agar raxbar yoki manageringizni so'kib qo'ysangiz biroz noqulay bo'ladi 😃

Real engineering problems sal boshqacharoq bo'ladi. U yerda doyim ham million foydalanuvchi uchun ishlaydigan crud yozmaysiz. Juda ham sodda aytganda shunchaki davomli fuckery qilasiz, davomli itariladi miyyangiz. Sababi doyim ham tayyor yechimlar bo'lmaydi yoki tayyori sizga mos kemaydi. Tayyorini modify qilishingiz kuchaytirishingiz kerak bo'ladi. Bushqa tomondan esa sizni kimdir perfomance tomondan itaradi kimdir esa abstraction tomondan. Ko'proq code yozish kerak bo'ladi biror technical scopeda yaxshi background qilish kerak bo'ladi. Hullas ishingiz kechirmaydi skill issuelarni. Doyim ham yaxshi gapirib qutilib ketolmaysiz, sizga comfort bo'lmagan odamlar bo'lishi mumkin atrofingizda.

Juda sodda aytsak enterpraysda siz mexanizmni bir qismi bo'lishingiz kerak, shunda trik qolasiz. Agar raxbarga yoqmasangiz chopilasiz.

Rostmana muxandis bo'lsangiz avtoritet bo'lishingiz kerak shunda trik qolasiz. Agar sal kalla qo'ysangiz avtoritet minus bo'ladi va davom etaversangiz uje chopilasiz.
❤1
API testlar yozgani yana bir qiziq narsa topib oldim. Bu yerda turli request related automationlar va testlar yozish mumkin. Sodda dialekt va nisbatan qulay user expirence.

Hurl: https://hurl.dev/

Ammo manashu mavzuda boshqa muammolar ko'ryabman.

Code alohida
test alohida
benchmark alohida
nu bazida doc alohida

Deyarli hamma ekotizimda manashu masalalarda end to end solutionlar yo'q. Lekin o'ylab qarasa bularni eplash mumkin.

Maslan manda uje tayyor api code bor juda ko'p holda maximum swagger generate qilib bera olaman. Ammo qani edi man birdan swagger generate qilolsam, test cover qilolsam.

Apilar doyim ham bitta stepli bo'lmaydi masalan A->B dan kegin C or D ko'rinishida ketmaketlik asosida bo'lishi mumkin bazida esa concurrency tog'ri ishlaganini ham test qilish kerak bo'ladi. Bular o'ziga yarasha nuansli masalalar. Bazi narsalar esa async ishlaydi, buni ham avtomatlashtirish qiyin chunki aniqroq constant tiime qo'ya olmaysiz.

Ammo servant bilan bunga potensial yechimlar qilsa bo'ladi. Masalan 10 yillar oldin servant-js kabi narsalar chiqib bo'lgan bu orqali apidan biratola js api callar generate qilishgan, bu haqida yozgan edim. Manashu g'oyani kengaytirish kerak, apidan avtomatik tarzda testlar va unga mos loading request ham generate qilib ko'rish kerak. O'ylaymanki tez orada manashu mavzuga ham yetib boraman ozgina zerikarli ammo juda qiziq mavzu.
🔥1
Endi tushlarimga kirsa kerak bu video.

from 3.2Tbps to 102.4Tbps bla

bunaqa networkda
bilmayman qancha nix kesh server qo'ysak bo'ladi
bilmayman qancha mayner run qilsa bo'ladi

https://www.youtube.com/watch?v=yFSDB1BatrQ
😁1
juda ko'p providerlarda juda qo'pol xatolik bor.

Masalan sizdan yoki sizga qandaydir identificatorlar beradi. Aytaylik responseda qanaqadir id field bor va u numberic.

Ammo manashu numberic qismi juda juda opasniy, buni izohlash kerak. Turli tillarda integer boundaries farqli bo'lishi mumkin. Masalan rustda i32, i64 vaxakazo. Huddi shunaqa narsa Haskell, Java, C/C++ da ham bor. Agar o'sha id identificator qanday tipda type boundary ekani aniqroq aytilmasa bazida integer owerflow bo'ladi.

Ha bla manda integer overflow bo'ldi sababi manga kelgan id 64 bitli ekan 😏 Bunday narsalarni docga yozmasa ham primerno yaxshiroq izohlash kerak identifikator aynan qanaqa ekanini shunda clientda ozgina bo'lsada shans qoladi. Hullas qo'li yelkasida miyyasi kallasida bo'lish xozir qiyin anotamik darajada mutatsiya bo'lyabti programmerlar ham.

Yok ko'tni qisib UUID ishlatish kerak
🔥3
Documentda shunchaki qanaqadir random raqam bergan yaramaslar😏
😁3
Programming ∀
Documentda shunchaki qanaqadir random raqam bergan yaramaslar😏
200 but validation error

And I have exeption:

Left (DecodeFailure "Error in $: ... failed, key \"status\" not found")


Atayin empty request yuborib ko'rgan edim lekin bu daunlar validation errorni ham 200 status bilan qaytarar ekan.
🤣3
Endi bunaqa darajada api design qilgan dasturchilar bo'lganidan kegin, rostdan ham unaqalarga kurslar kerak, qanaqadir ustoz kerak IQ sal balandroq. Kimdir majburlab o'qitmasa yoki bo'lmasam aytmasa vapshe. Bunaqa molxona infratuzulma qilib tashlaydiganlar ko'paysa bizni yurtda dasturchilar qomaydi 🥲

Ha bla endi tushunyabman muammoni. Muammo infosiganlarda emas asil muammo stupid rate baland juda juda ekanida...
❤3😭1