Otabek’s I/O
1.26K subscribers
50 photos
3 videos
63 links
Staff Software Engineer @Dropbox | Mentor @qirikki

I write about Backend, Infrastructure, Math, ML/AI, and Computer Science.
Download Telegram
Backendga sayohat

Bismillah! Aytilgan gap otilgan o'q.

Vaqt muammo bo'lib ba'zan to'xtab qolsak ham bizni tark etmaysiz degan umiddamiz.

Qo'ldan kelgancha tushunchalarni sodda, jaydari va vizuallashtirishga urunayabmiz.

Postni foydali deb topgan bo'lsangiz ulashib qo'ying, sizdan faqat bitta click ketadi.

Post haqida feedback qoldirib ketsangiz, uni yaxshilashga yordam qilgan bo'lardingiz.

@otabekswe
Otabek’s I/O
Backendga sayohat Bismillah! Aytilgan gap otilgan o'q. Vaqt muammo bo'lib ba'zan to'xtab qolsak ham bizni tark etmaysiz degan umiddamiz. Qo'ldan kelgancha tushunchalarni sodda, jaydari va vizuallashtirishga urunayabmiz. Postni foydali deb topgan bo'lsangiz…
This media is not supported in your browser
VIEW IN TELEGRAM
Access Network chiqdi 🎉

Ushbu qismda biz qanday qilib internetga ulanish haqida qisqacha ko'rib o'tganmiz.

Kelasi qismlarda Advanced topiclarga to'xtalamiz.

Postni foydali deb topgan bo'lsangiz share qilib qo'yishni unutmang🙃

Post haqida feedbacklarni kommentda yozib keting. Bu orqali xatolarimizni to'g'irlashga yordam qilasiz.

@otabekswe
Tree

Frontendni o'rganayotgan paytlarim "HTML Tree" desa g'alati eshitilar edi.

HTML Tree bekorga tree emasligini DSA o'rganib tushundim.

Tree data structureda "leaf" degan termin mavjud ya'ni "barg".

Undan tashqari internal node va external node lar ham bor (bularni to'liqroq "dsa.uz"da gaplashamiz).

Binary Tree ni uzog'i ikkita yoki umumman bolasi bo'lmasligi mumkin.

Yuqoridagi rasmda keltirilgan misolda siz HTML treeni va Treeni ko'rishingiz mumkin.

HTML Treeni Binary Treedan farqi u ko'p leaflarga egalik qila olishida.

Siz ishlatayotgan ammo bilmaydigan ko'plab narsalar shular asosida qurilgan.

Misol uchun browserda yangi pagega o'tish va ortga qaytishni "Stack" bajaradi va h.k.z

DSA o'rganish sizni nafaqat problem solving qobilyatingizni rivojlantiradi.

Balkim siz o'rganayotgan yoki o'rganib bo'lgan bilimlaringizni asosini ko'rsatib beradi.

@otabekswe
OSI Model chiqdi 🎉

Qo'llanma yozishda ba'zi xatoliklarga yo'l qo'ygan bo'lishimiz mumkin.

Iltimos uni izohlarda yozib to'g'irlab keting.

Qatiyatli bo'ling va o'rganishda charchamang.

Post foydali bo'lsa, ulashishingiz mumkin!

@otabekswe
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.

@otabekswe
Balkim qiziqdir

tup = (1, 2, 3, 4, 5)
tup = (3, 4, 5, 6, 7)


biror o'zgaruvchiga yangi qiymatni reassign qilganingizda nima sodir bo'lishini bilasizmi?

Ba'zilar bilmasligi mumkin keling o'rganamiz. Bu yerda tup o'zgaruvchisining qiymati update bo'ladi yoki o'zgarib qoladi degan fikrni unutaylik chunki unday emas.

O'zgaruvchilar shunchaki biror objectga reference xisoblanadi. Ushbu holatda esa (1, 2, 3, 4, 5) alohida object (3, 4, 5, 6, 7) alohida object.

Ularning ikkisi ham xotirada yaratiladi ammo yuqoridagi misolda aytilganidek siz endi (1, 2, 3, 4, 5) ga kira olmaysiz chunki tup reference unga emas balkim yangi object (3, 4, 5, 6, 7) ga kirish uchun qaratildi.

Xuddi shu holat boshqa typedagi qiymatlar bilan ham sodir bo'ladi. Agar biror o'zgaruvchiga biror yangi qiymatni reassign qilsangiz aynan shunday jarayon sodir bo'lishini tushundingiz deb umid qilaman.

Sizdan endi mana shunday oddiy savollar so'ralsa qiynalmay javob bera olasiz degan umiddaman )

P.S: Commentda rasm bilan misol keltirilgan.

@otabekswe
Forwarded from Otabek Nurmuhammad
Vaqt kerak

Oldinlari "vaqt" muammo edi hozir esa uni "to'g'ri sarflash".

Biz vaqtim yo'q iborasini ishlatamiz aslida esa noto'g'ri. Vaqt doim bo'lgan.

Uxlash, yeyish, dam olish, kitob o'qish, ishlash uchun topilayabdiku.

Vaqtni topishdan ko'ra to'g'ri sarflash qiyinroq muammo deb bilaman.

Instagramga ketadigan vaqtingizni o'sha ishlarga sarflang.

Vaqtingizni bekorchi o'g'irlaydigan ishlardan o'zingizni chetlating.

Doim oldinda bo'ling. Ustozingiz 1-mavzuda bo'lsa siz 3-mavzuda bo'ling.

Internet rivojlangan davrda oldinda yurish muammo emas qidirmaslik muammo.

Vaqt doim topilgan va topiladi. Ammo uni sarflash uchun qobilyat va matonat kerak.

P.S: Pul topishdan ko'ra uni sarflash muhimroq.

@otabeknurmatov_1
GIL

Bu mavzu haqida anchadan beri yozish niyatim bor edi va bugun shu kun keldi.

Keling GILga kirishdan oldin bazi narsalarni ko'rib chiqsak.

Thread - Bu kompyuteringiz ichida ishlaydigan ishchi. Biror ishni qilish uchun siz thread yaratasiz va unga task berasiz. U esa bajaradi.

Thread yaxshikuya ammo tasavvur qiling ikkita ishchingiz bitta ishni qilishga talashib qolsa nima qilasiz?

Bu muammo bizga "race condition"ni keltirib chiqaradi. Jaydarichasiga aytganda "Poyga"ni keltirib chiqaradi. Well shu yerda yordamga "Lock" keladi.

Lock - xojatxonaga hamma istalgan vaqt kira olmasligi uchun qulf qo'yishadiyu. Python ham huddi shu ishni qiladi. Bir nechta threadlar share qilingan resursga bir vaqtda kira olmasligi uchun lock ishlatiladi.

Moshinani bir vaqtda 2ta odam haydashini istamasangiz kerak menimcha.

Biror share qilingan resursni olaylik misol uchun o'zgaruvchi. O'zgaruvchiga kirayotgan thread avval uni "lock"ini ya'ni kalitini so'raydi.

Agar "Lock" boshqa thread tomonidan olingan bo'lsa, u o'sha thread o'z ishini tugatishini kutib turadi. Va keyin tugatishi bilan u ham o'z ishini o'sha resurs ustida bajaradi.

Yaxshi bir muammodan qutildik ammo yana bir muammo bor. Agar ikkita thread ham bir-birini resursi uchun "lock"ni kutib qolsa nima bo'ladi?

Bu muammo Deadlock deyiladi va bu butun dasturni birgalikda ishlashini cheklab qo'yadi. Buni yechish uchun "lock"lardan foydalanishda ehtiyot bo'lishimiz va boshqa threadlar resurslarni o'z vaqtida ishlatish uchun bo'shatishiga ishonch hosil qilishimiz kerak.

Garbage collector - o'z nomi bilan aytib turibdiki "musor teruvchi". U kompyuteringiz xotirasidagi anchadan buyon ishlatilmayotgan ma'lumotlarni musor deb o'ylab yig'ib ketadi. Ya'ni o'sha musor ma'lumotlarni o'chiradi.

Ammo ba'zan u thread ishlatayotgan ma'lumotni tasodifan musor deb o'ylab olib ketishi mumkin. Buni oldini olish uchun thread ma'lumotdan foydalanayotgan vaqtda, garbage collector ishlamasligini taminlash kerak.

GIL - Global Interpreter Lock. Bu xuddi gaichi akalarga o'xshaydi. Ubu joyda tekshiruv bo'lganda moshinalarni bitta-bitta o'tqazganidek ular ham threadlarni bitta-bitta ishlashini taminlaydi.

Python dasturlash tilini xotira menejmenti thread-safe emasligi uchun ular tunu kun ishlashadi. Ya'ni birdan ikkita moshina kirib ketib qolsa avaria yuzaga keladi deyayabman.

Bu akalarni o'z ishini yaxshi bajarganidan har bir thread o'z navbatini kelishini kutadi.

Demak qisqacha shular edi. Postda xatolar bo'lishi mumkin, yordam uchun comment tayyor.

Foydali bo'lsa share qilib qo'ying.

@otabekswe
Jahongir aka bilan bo'lgan o'sha "Oldik" men bilan ham bo'lgan.

Bu tasodif menimcha. Ammo bu narsa kursdoshlar bilan ancha qiziq bo'lgan.

Chet ellik do'stlar va hamkasblar bilan bo'ladigan voqealar juda qiziq bo'ladida.

Oldik 😅
Garbage Collection

Garbage collector odatda xotirani toza saqlash uchun kerak. U xuddi bir xizmatkorga o'xshaydi. Agar xonangizda keraksiz va ishlatilmaydigan narsalarni ko'rsangiz uni axlatga olib chiqib tashlaysiz. Xuddi shu ishni dasturlash tillarida Garbage Collectorlar bajaradi.

Hop Garbage collector qachon va qanday keraksiz object yoki data ni aniqlaydi?

Bu ishni amalga oshirish uchun inson qanday yo'l tutsa dastur ham deyarli o'shanday ish qiladi. Ya'ni reference count xisoblanadi. Inson biror narsani kim va necha marta ishlatishini ko'rib aniqlasa, dastur reference count xisoblaydi. Reference bu biror objectga yo'naltirilgan pointer ya'ni ko'rsatgich yo'l deb atasak bo'ladi.

Reference Count qanday ko'payadi yoki kamayadi?

Bilamizki biror o'zgaruvchi ochganimizda biz unga qiymat saqlamaymiz, balkim o'zgaruvchilar shunchaki bizni o'sha qiymatga kirishimiz uchun ko'rsatgich vazifasini o'taydi.

Bu huddi mahallada har bir nuqtaga odam qo'yib yashinmachoq o'ynashdek gap. Ya'ni qo'ygan odamlariz kim-qayerga ketganini ko'rsatib turadi va siz ko'p vaqt sarflamasdan ularni tez topishingiz mumkin (O(1) vaqtda desa ham bo'ladi 😅). O'zgaruvchilar ham shu vazifani bajaradi.

Qachon bir nechta o'zgaruvchi bitta object yoki dataga reference bo'lsa u yerda reference count oshadi. Agar ular keyin boshqa objectga reference qilinsa yoki o'chirib tashlansa, RC tushadi.

Misol uchun:

a = "hello" # "hello" objecti yaratildi va a unga reference bo'ldi
b = a # Ref. Count 1taga oshdi.
del a # Ref. Count 1taga tushdi
b = 17 # Ref. count 1taga kamaydi

Yuqoridagi misol Python dasturlash tiliga tegishli va u yerda reference count qachon oshishi va qachon tushishi ko'rsatilgan.

Kelin buni real ko'rish uchun mana bunday ish qilamiz. sys modulini getrefcount() funksiyasi bizga objectimiz nechta referencega egaligini ko'rishimiz mumkin. __del__() dunder methodi orqali esa object o'chirilganini ko'rishimiz mumkin, del statement objectni o'chirish uchun ishlatiladi.

import sys

class MyClass:
def __init__(self):
print("Creating object")

def __del__(self):
print("Deleting object")

obj = MyClass()
print("Reference count:", sys.getrefcount(obj) - 1)

# Reference Coutni oshiramiz
obj2 = obj
print("Reference count:", sys.getrefcount(obj) - 1)

# obj2 referenceni o'chiramiz
del obj2
print("Reference count:", sys.getrefcount(obj) - 1)

# obj ni o'chiramiz
del obj

Umid qilaman qisqacha Garbage collection mavzusiga tushunib oldingiz deb. Keyingi postda chuqurroq yoritishga harakt qilaman. Xatolar bo'lsa oldindan uzur.

@otabekswe
Classlar qanday yaratiladi?

Bir postga ko'zim tushib qoldi MetaClass haqida. Metaclassdan avval classlar qanday yaratilishi haqida qisqacha bo'lishib o'tmoqchiman.

type() orqali biz istalgan objectni turini tekshiramiz ammo aynan o'sha type() bizga class yaratib berishini bilarmidik?

class Dog:
def __init__(self, name: str) -> None:
self.name = name


Siz odatda classlarni shunday yaratasiz aslida esa orqa fonda boshqacha ishlar bo'ladi. type(Dog) desangiz u <class 'type'> classini objecti ekanligini ko'rishiz mumkin. Endi keling nimagaligni tushuntiray. Siz tepadagi traditional yo'l bilan class yaratganingizda u yerda mana bu narsalar bo'ladi.

class Dog(object, metaclass=type):
def __init__(self, name: str) -> None:
self.name = name


yuqorida ko'rsatilgan inheritance va metaclass qismlarini siz tashlab ketasiz ammo python uni run timeda shunday olib ketadi by default. Keling bu nima uchun undayligini gaplashsak. Qadamlarga bo'lamiz:

1. Python classni tana qismidagi kodlarni string qilib oladi
2. Bo'sh bitta dictionary ochadi.
3. Va ularni type()ga berish orqali sizga typedan object qaytaradi.

Yana bir qoida "Pythonda hamma narsa object".

Keling endi amaliyotga o'tsak. 1-qadam:

class_body = '''
def __init__(self, name: str) -> None:
self.name = name
'''


class tanasi uchun class_body o'zgaruvchisini ochib oldik va tanasidagi kodni doc-string ichiga yozib oldik. 2-qadamga o'tamiz.

class_dict = {}

Classlardagi ma'lumotlar key value sifatida saqlanadi shuning uchun class_dict ochildi. 3-qadam

endi class_bodydagi elementlarni class_dict ga o'tkazish uchun python standart exec() dan foydalanamiz. Bu shunchaki string shakldagi kodni ishga tushirib beradi.

exec(class_dict globals(), class_body)

Endi class_dict ni print qilib ko'rsangiz ajoyib narsa ko'rasiz. Hop ammo keling keyingi qadam klass yaratishga o'tamiz. 3-qadam:

Dog = type('Dog', (object,), class_dict)

VOILA! Class tayyor. Endi Persondan object yaratishingiz mumkin. Keling kodlarni jamlaymiz:

class_body = '''
def __init__(self, name: str) -> None:
self.name = name
'''
class_dict = {}
exec(class_body, globals(), class_dict)
Dog = type('Dog', (object,), class_dict)

bobik = Dog('Bobik')
print(bobik)
print(bobik.name)


Qisqacha shunday ishlar bo'ladi ammo siz traditional yo'ldan yuravering bu ish sal bosh og'riqrog'u ammo endi bilasiz ular qanday yaratilishini.

@otabekswe
🎉MusicCLI🎧

Endi musiqalarni shunchaki terminaldan qidiring va yuklab oling.

Uni qanday ishlataman?

Juda oddiy:

pip install musiccli

python -m musiccli <Musiqani yozasiz>

U sizga musiqa listini taqdim qiladi.

Siz biror musiqani tanlaysiz va uni Desktopda ko'rishingiz mumkin!

Version: 1.1.1

@otabekswe
Media is too big
VIEW IN TELEGRAM
MusicCLI

Ishlatish bo'yicha kichik qo'llanma!

@otabekswe
🥳 MusicCLI 1.2.0 🎧

Qulay va tezkroq
🎵 Milliondan ortiq musiqalar
💊 Xatoliklar tuzatildi!

Endi siz MusicCLI 1.2.0 da ko'plab musiqalarni oson, qulay va tezkor qidirishingiz mumkin!

O'rnatish uchun:

curl -sSL https://raw.githubusercontent.com/otabeknurmatov/MusicCLI/main/install.sh | bash

Ishlatish uchun:

mcli Shawn Mendes

To'liqroq ma'lumot va o'rnatish uchun bu yerga kiring

Loiha yoqgan bo'lsa uni qo'llab quvatlash uchun githubda star bosib qo'ying!

@otabekswe
Qiziqib ko'ring

O'zingiz ishlatadigan dasturlash tillini yaxshi bilishingiz eng muhim narsalardan biri, chunki ish qurolingizni qayerida nima kamchiligi bor yoki ustunligi bor bu sizni ancha ishizni yengillashtiradi. Qayerda nimani qo'llay olishni bilishlik bu tajriba degani o'zi aslida.

Misol uchun sizga kimdir Pythonda string methodlari orasidan lower() yoki upper() ni shu methodlarsiz yasab bera olasizmi desa nima qilasiz. Yokida JavaScriptdagi Array bilan Computer Sciencedagi Array o'rtasida nima farq bor desachi.

Bunday savollarga tayyor turishni bir yo'li o'zingiz ishlatadigan dasturlash tilidagi siz doim ishlatadigan funksiya yoki classlarni o'zingiz yasab ko'rishingizdir.

Bularni qanchalik yaxshi bilsangiz, qaysi birini qayerda qo'llasangiz qanday foyda yoki zarar borligini bilasiz. Kimdir aytganidek "To'g'ri data structure tanlash muammoni 50% yechadi, qolgan 50% ni esa Algorithm" 😉.

Siz ishlatadigan barcha narsalar o'zi aslida shu tushunchalar ustiga qurilgan, ularni o'rganing va kashf qiling.

@otabekswe
This media is not supported in your browser
VIEW IN TELEGRAM
🥳Yaxshi va yomon xabar!🥲

18-May kuni Yandexdan job offer oldim Software Engineer G14 positionga, bollar biz yutdik. Ammo buni ketidan yomon xabar ham bor.

Bu offerni rejact qilishga to'g'ri keldi, hozirgi vaziyatdan kelib chiqib. Ota-onam ham bunga qarshilik qilishdi ...🥲

Ammo bu ham bizga bir tajriba bo'ldi va yaxshilikga. Hali hammasi oldinda.

Sababini qiling va ko'proq o'z ustingizda ishlang. Trust the process.

Interview process haqida post yozaymi?

@otabekswe
DSA-Camp

Bugundan DSA-CAMP loihasiga start berdik. Bu loiha sizga Data Structure va Algorithm bilimlaringizni mustahkamlashda oz bo'lsa ham xissa qo'shadi degan umiddamiz.

Loiha davomida sizlar bilan DSAga doir turli xil bilim va ko'nikmalar ortiramiz, leetcode, codewars va codeforse dan muammolarni yechishni o'rganamiz.

Loihada qatnashish uchun quyidagi havola orqali o'zingizga qulay dasturlash tilini tanlang va berilgan muammolarni yeching.

Ro'yxatdan o'tishda google accountingizdan foydalanishingiz mumkin. Iltimos ism va familya degan joyga to'liq ismingiz va familyangizni kiritsangiz.

1-bosqich 3-iyun kuni tugatiladi.

2-bosqich shartlari 5-iyun kuni e'lon qilinadi.

Hammaga omad, bollar biz yutamiz!

Havola: DSA-CAMP

@unotech_log
Paradigms

Nima uchun paradigmalar ko'p degan savolga to'xtaladigan bo'lsak, chunki har bir paradigma qandaydir principle ni ilg'or suradi yokida qaysidir turdagi muammolarni yechishga ko'proq focus qaratadi. Misol uchun...

OOP:
keng, mashxur taralgan va deyarli ko'plab dasturlash tillari support qiladi. OOP qanday muammoni yechadi degan savolga qisqacha to'xtalsak, u siz qilmoqchi bo'lgan loihaga dasturlash tomonlama emas, balkim oddiy object sifatida qarashingizga imkon beradi.

Functional Programming:
Keng va ko'p ishlatiladiganlaridan xisoblanadi. Uning asosiy g'oyasi Functional Decomposition. Katta muammoga boricha emas balkim uni bo'laklarga bo'lish orqali qarashni ilg'or suradi. Misol uchun kir moshinani biror rejimga qo'yib kiringizni solib start bosdingiz, u har bir operatsiya uchun specific functinolarni ishlatadi, suv tortish, barabanni aylantirish va kirni siqish. Bu yerda ularning yig'indisi sizga bir mahsulotni taqdim etayabdi. Bu "easy to scale and maintain" dastur yasash imkonini beradi.

Parallel yoki concurrent programming:
Hozirda juda keng tarqalgan paradigma desak mubolag'a bo'lmaydi. Bu ikkisini bir xil deydiganlar ham topiladi. Ammo "parallelism" tushunchasi ikki va undan ortiq tasklarni bir vaqtda ishlashi bildirsa, "concurrency" bir nechta tasklarni noma'lum tartib va vaqtda boshlanib, ustida amallar qilib va tugashini bildiradi. Ovqatlanayotganda nonni tishlab uni yutishga ulgurmasdan choy xo'playsiz bu yerda concurrency ishlayabdi sizda, ammo uydagilar bilan gaplashib savuz to'g'rasangiz bu parallelism bo'ladi chunki ikki ishni bir vaqtda bajarayabsiz. Bu shunchaki sizda tushunchani uyg'otish uchun beirlgan misol bo'ldi ammo dasturlash tomonlama qaralganda 100% to'g'ri kelmaydi. Ular o'xshash ammo bir xil emas.

Yaxshi ular haqida qisqacha gaplashdik keling endi ulardagi kamchliklarni ham gaplashsak.

OOP:
OOP muammolarga object sifatida qarashni ilg'or suradi ammo biz uchratadigan muammolar doim ham object bo'lmasligi aniq. Misol uchun matematik formulalar va ko'plab misollarni olishimiz mumkin. Ular uchun class yaratish shunchaki kodni ko'paytirib ishni sekinlashtiradi. Joe Armstrong akani gapiga qo'shilaman

Functional Programming:
Oddiy va qulay ko'ringani bilan hamma muammoga yechim bo'la olmaydi. Agarda siz "action" o'yin yaratmoqchi bo'lsagniz siz uchun functional programming zo'r yechim emas. Bu yerda sizga OOP yordamga keladi. Chunki har bir personaj uchun specifi method va attribute berilish kerak. Ularni faqat method ya'ni functionlar bilan qilish ishni yanada chigallashtiradi.

Parallel yoki concurrent programming:
Bu ham ko'plab muammolarga yechim sifatida ko'rilishi mumkin ammo bu hamma muammo uchun yechim bo'la olmaydi. "Concurrency"da asosan shared memory bo'yicha ko'plab muammolar bo'lishi mumkin. Bu esa race condition keltirib chiqaradi. Ya'niki ikkita odam bitta xojatxonadan bir vaqtda foydalanmoqchi bo'lganidek gap. "Concurrency" single process, multi thread bo'lgani uchun ham ikki thread ham o'sha qiymat ustida qandaydir amal bajaradi. Ular kim oxiri qiymat yozish poygasini o'ynaydi. Kim oxiri bo'lib o'sha variableni o'zgartirgan bo'lsa demak o'shaniki qoladi. Bu yerda yana boshqa muammolar ham bor ularni qidirib o'rganib chiqishingiz mumkin.

"Parallelism"da esa muammo ba'zi ishlar step-by-step ishlashi talab qilinishi mumkin. Ya'ni sonni asosini topib olmaguncha uni ustida amal bajarish noto'g'ri calculationga olib kelish ehtimoli bor bu yerda u eng yomon yechim bo'lishi aniq. Yana ba'zi muammolar bu yerda synchronizing, locks, semaphores lar bilan ham uchraydi. Ularni google qilib ko'rishingiz mumkin )

Bu postdan olinadigan xulosa 2ta:

1. Hech qachon paradigmani dasturlash tiliga 100% bog'lamang, ular hech qachon 100% bir xil bo'la olmalik ehtimoli juda katta. Ba'zi holatlar bo'lishi mumkin.

2. Hech bir paradigma universal emas. Har xil muammo bo'lganidek ularga yechimlar ham har xil.

P.S: Xatolar bo'lsa uzur )

@otabekswe
#InterviewQuestions

Networking o'rganish qanchalik muhim degan savollarga tez-tez ko'zim tushadi.

Shaxsan o'zim Frontendchi ham Backendchi ham o'rganishi muhim deb bilaman.

Shaxsan o'zimda 6 ta interviewda quyidagi savollar tushganini aniq ayta olaman.

🔸 How DNS works?
🔸 Can you tell me what is the differences between Web Server vs Application Server?
🔸 What is Nginx? How it works?
🔸 Why use a single domain for the Backend and the Frontend?

Bu savollarga qanchalik yaxshi javob bera olasiz, o'zingizni sinab ko'ring.

Discussion ochiq deb e'lon qilaman )
Media is too big
VIEW IN TELEGRAM
#ChromeTabs

Deyarli ko'p dasturchilardagi muammoga ozgina yengillik bo'lishi uchun qisqa tutorial.

Bilmgan bo'lsangiz foydali bo'ldi deb o'ylayman.

Share qilishingiz mumkin )

@otabekswe