TGViewer
Channel Public Channel
Engineering Notes

Engineering Notes

@boboshersnotes

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
Subscribers
2.61K
Photos
162
Videos
2
Links
229

Showing posts older than #486 · Back to latest

Older Posts 20 shown
Post #484 2.15K
Engineering Notes https://youtu.be/-UrdExQW0cs
Bu yerda berilgan ma'lumotlar ancha yuzaki, lekin agar bu mavzular sizga qiziq bo'lsa eng kamida videoda ishlatilgan terminlardan foydalanib ham ancha ma'lumot izlab topishingiz mumkin.
Post #482 2.06K
Berilgan directed multigraphdagi uzunligi 4 ga teng bo'lgan pathlar sonini toping.
  • 😢 11
  • 👍 3
  • 🍾 2
Post #480 2.55K
Muammolar takrorlanadi

Avvallari 1 ta komputerda 1 ta processgina run bo'la olgan. Keyinroq 1 ta CPU coreda bir nechta "virtual process"(bizga tanish software process)larni qisqa interval bilan navbatma-navbat run qilish orqali CPU coredan effektivroq foydalanish imkoniyati paydo bo'ldi va multiprocessing deb nomlandi.

Ba'zida qisqa vaqt ichida tez-tez yangi process ochib-yopish, bir processdan boshqasiga ma'lumot yuborish kerak bo'ladi. Processlar og'irligi va o'zaro ma'lumot almashish qiyinligi sabab bitta processning o'zida ham bir nechta "tipa process" – thread yaratishga ehtiyoj tug'ildi.

Dizayn jihatdan hammasi yaxshi edi, lekin implementatsiyaga kelganda boshqa bir qancha jiddiy savollar (process forking, signal handling, ...) bilan birga yana bir qiziq savol paydo bo'ldi: threadlarni kernel levelda implement qilish kerakmi yoki user leveldami?
Kernel levelda implement qilish threadga qo'yilgan asosiy talab – yengillik va tezlikni ta'minlab bera olmaydi. User levelda implement qilishda esa scheduling bilan jiddiy muammo chiqadi: agar biror thread I/O call qilsa OS faqat o'sha threadning o'zini emas, butun processni (ya'ni o'sha processdagi hamma threadlarni) bloklaydi. Sababi, kernelda joylashgan scheduler user spacedagi thread nimaligini ham bilmaydi.

Muammoni hal qilish uchun esa user spaceda ishlaydigan va muhimi har bitta threadni alohida schedule qilish imkonini beradigan yechim kerak bo'ldi va qaysidir darajada topildi ham.

***

Qizig'i, xuddi shunga o'xshash jarayon dasturlashning umuman boshqa bir yo'nalishi – network engineeringda ham sodir bo'lgan.

HTTP 1.0 protocolida bir vaqtda faqatgina bitta connection ochish mumkin edi. Bir vaqtda bir nechta resurslarni olishga ehtiyoj tug'ilgani sabab HTTP 1.1 versiyasida bir vaqtda 6 tagacha har biri alohida TCP connection ustiga qurilgan HTTP connection ochish mumkin bo'ldi. Bu yechim ancha omadli chiqqan bo'lsa-da bir qancha sabablar (connectionlarni ochish/yopish og'irligi, asinxron ishlashning imkoni yo'qligi) tufayli yana yangi nimadir o'ylab topish kerak bo'ldi.

HTTP 2.0 bitta TCP connection ustiga ko'plab yengil HTTP connectionlar ochish imkoniyatini taqdim etdi. Endi connectionlar sonini dinamik qilish va asinxron ishlash mumkin bo'ldi. Lekin kutilmaganda bir muammo chiqdi: birorta HTTP connection tarkibidagi birorta paket yetib kelmasa retransmission uchun butun TCP connection (demakki qolgan HTTP connectionlar ham) bloklanadi. Sababi, TCP transport layerda joylashgan va application layerdagi connection nimaligini bilmaydi. Bu muammo HOL Blocking deyiladi.

Bu muammoni hal qilish uchun application leyer va transport layerdagi connectionlar bir-birini "taniydigan" yangi mexanizm – QUIC va HTTP 3 ishlab chiqildi.

@boboshersnotes
  • 👍 28
Post #479 1.37K
Programmer Jokes Photo
True pain
Post #477 1.88K
When parallelism is serialized into a single CPU core, it's called multiprocessing.
When parallelism is serialized into a single process, it's called multithreading.
When parallelism is serialized into a single thread, it's called asynchronous execution.
  • 👍 44
  • 🍾 2
Post #476 2.51K
Ba'zi ustozlar yoniga 1 ta savol bilan borib, yangi 2 ta savol bilan qaytasiz. Ular sizga shunchaki javobni emas, balki javobga yo'nalishni ko'rsatadi. Bu yo'lda esa yangi savollarga duch kelasiz. Bu esa original savolga javob topgandan keyin ham yana ko'proq o'rganishga undaydi.

Shunday ustozlar mening qahramonim.
  • 👍 77
  • 👎 1
Post #475 2.05K
Java vs C#?
Hmm...

P.S. Read the previous posts, lol.
  • 😁 21
  • 👎 14
  • 👍 2
Post #474 1.93K
Compiler vs interpreter?
No, interpreter is a form a compiler.
  • 👎 16
  • 👍 1
Post #473 1.83K
Webhook vs polling?
No, webhook is a form of polling.
  • 👎 17
  • 👍 4
Post #471 1.7K
What is 0°C + 0°C?
  • 👎 2
Post #470 2.12K
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
Post #469 2.07K
  • 👍 9
  • 👎 1
Post #468 1.75K
Post #467 1.25K

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
Post #466 1.21K
Yetmaganiga
  • 😢 21
  • 😁 8
  • 🍾 2
  • 👍 1
Post #465 1.17K
Python: So bo'lasila ))
  • 😁 14
  • 👍 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →