Inson bilgan bor bilimini gapirib bera olmaydi. Gapirib tushuntira olgan narsasini esa, yozib tushuntirishi qiyin.
Anchadan beri blog yozib kelaman, oldin ingliz tilida yozardim, hozir faqat O’zbek tilida yozaman. Bunga asosiy sabab O’zbek tilida ham bunday foydali kontentlarni ko’paytirish.
Blog yozish qiyin. Unga yetarlicha bilim, tajriba va sabr kerak. Chunki uni o’qigan insonlar sizni tushunishi uchun maksimal soddaroq tilda boshlab, keyin ilmiyroq tushunchani yetkazib berib yakunlashingiz kerak.
Yaqin kunlarda yaxshi bloglarni sizlar bilan bo’lishib o’taman. Undan oldin esa bloglar haqida fikr va takliflaringizni so’ramoqchiman.
Men yozgan maqolalar sizga yoqsa, avtorni qo’llab turishingiz, bizga ko’proq blog yozishda va uni ostidagi xizmatkor serverlar xarajatiga katta yordam bo’ladi.
O'z xissangizni qo'shing: tirikchilik.uz/otabek
Anchadan beri blog yozib kelaman, oldin ingliz tilida yozardim, hozir faqat O’zbek tilida yozaman. Bunga asosiy sabab O’zbek tilida ham bunday foydali kontentlarni ko’paytirish.
Blog yozish qiyin. Unga yetarlicha bilim, tajriba va sabr kerak. Chunki uni o’qigan insonlar sizni tushunishi uchun maksimal soddaroq tilda boshlab, keyin ilmiyroq tushunchani yetkazib berib yakunlashingiz kerak.
Yaqin kunlarda yaxshi bloglarni sizlar bilan bo’lishib o’taman. Undan oldin esa bloglar haqida fikr va takliflaringizni so’ramoqchiman.
Men yozgan maqolalar sizga yoqsa, avtorni qo’llab turishingiz, bizga ko’proq blog yozishda va uni ostidagi xizmatkor serverlar xarajatiga katta yordam bo’ladi.
O'z xissangizni qo'shing: tirikchilik.uz/otabek
Testing in Action
Yaxshi dasturchi doim dasturini test qiladi. Test qilish uchun test yozishni o'rganing. Qanday test yozishingizni esa ushbu post orqali kashf qiling.
Maqolani o'qish
@otabekswe
Yaxshi dasturchi doim dasturini test qiladi. Test qilish uchun test yozishni o'rganing. Qanday test yozishingizni esa ushbu post orqali kashf qiling.
Maqolani o'qish
@otabekswe
Trustober
Bu oy Dropbox uchun Trustober ya'ni HackMonth hisoblanadi. Barcha jamoalar turli xil yo'nalishlarda tayyorlangan muammolarni yechib chiqishadi va tizimdagi xatoliklarni qidirishadi. Tizimdagi xatolik darajasiga qarab score berishadi. Qancha ko'p tizimni buza olsangiz shuncha yaxshi.
Bu an’ananing yoqqan tomoni, juda ko'p o'rganasiz. Ko'plab zaifliklarni topish, tez fikrlash, qarorlar qabul qilish va ularni yechishni o'rganasiz.
"Tajribang ko'p ekan" deb captain qilib saylashdi, aslida unday emas. Lekin men imkoniyatdan foydalanib qoldim, o'z lavozimimni suv iste'mol qilgan holda jamoa nomini o'zim berdim. Ular baribir tushunishmaydi, bo'laveradi.
JPRQlar, biz yutamiz!
Bu oy Dropbox uchun Trustober ya'ni HackMonth hisoblanadi. Barcha jamoalar turli xil yo'nalishlarda tayyorlangan muammolarni yechib chiqishadi va tizimdagi xatoliklarni qidirishadi. Tizimdagi xatolik darajasiga qarab score berishadi. Qancha ko'p tizimni buza olsangiz shuncha yaxshi.
Bu an’ananing yoqqan tomoni, juda ko'p o'rganasiz. Ko'plab zaifliklarni topish, tez fikrlash, qarorlar qabul qilish va ularni yechishni o'rganasiz.
"Tajribang ko'p ekan" deb captain qilib saylashdi, aslida unday emas. Lekin men imkoniyatdan foydalanib qoldim, o'z lavozimimni suv iste'mol qilgan holda jamoa nomini o'zim berdim. Ular baribir tushunishmaydi, bo'laveradi.
JPRQlar, biz yutamiz!
2024 Recap
Ushbu maqola texnik emas ammo men uchun eng yaxshi bloglardan.
Odatda bunday blog yozmasdim, ammo bu yil olgan yaxshi tajriba va xuloslarni bo'lishishga qaror qildim.
Maqolani o'qish
@otabekswe
Ushbu maqola texnik emas ammo men uchun eng yaxshi bloglardan.
Odatda bunday blog yozmasdim, ammo bu yil olgan yaxshi tajriba va xuloslarni bo'lishishga qaror qildim.
Maqolani o'qish
@otabekswe
Keling tanishamiz!
Anchadan beri auditoryia bilan jonli suxbat qilish uchun vaziyat izlab kelaman. Ushbu onlar keldi deb o'ylayman.
Sizlar uchun sessiya yaratdim, va ushbu sessiya davomida dasturlashga tegishli bo'lgan ba'zi mavzular haqida gaplashamiz. Joyingizni hoziroq band qiling!
Joylar soni: 30 ta
Mavzu: Habits & Algorithms
🔗 Sessiyaga yozilish
Anchadan beri auditoryia bilan jonli suxbat qilish uchun vaziyat izlab kelaman. Ushbu onlar keldi deb o'ylayman.
Sizlar uchun sessiya yaratdim, va ushbu sessiya davomida dasturlashga tegishli bo'lgan ba'zi mavzular haqida gaplashamiz. Joyingizni hoziroq band qiling!
Joylar soni: 30 ta
Mavzu: Habits & Algorithms
🔗 Sessiyaga yozilish
Tayyormisiz?
FAANGda intervyu olish jarayoniga doim qiziqardim. Senior Software Engineer bo’lganim uchun bu yildan intervyu olishim kerakligni aytishdi (Technical va System Design). Yaxshi intervyu uchun nimalar kerak:
• STAR metodi bo’yicha javob berishni mashq qiling
• Muloyim bo’ling
• Texnik bilimlaringizni sayqallang
• Muammoni yechishdan oldin aniqlashtiruvchi savollar so’rang
• Muammoni va yechimni shoshilmay, yaxshi tushuntirib bering
• Eng asosiysi shashilmang!
Intervyudan o’tish sirini sizga fosh qilib qo’ydim. Agar bu ma’lumotlar sizga foydali bo’lib offer olsangiz, menga ham yozib qo’ying.
Haqiqiy askar intervyuga tayyorlanmaydi, doim intervyuga tayyor turadi.
Intervyuda ko’rishguncha.
FAANGda intervyu olish jarayoniga doim qiziqardim. Senior Software Engineer bo’lganim uchun bu yildan intervyu olishim kerakligni aytishdi (Technical va System Design). Yaxshi intervyu uchun nimalar kerak:
• STAR metodi bo’yicha javob berishni mashq qiling
• Muloyim bo’ling
• Texnik bilimlaringizni sayqallang
• Muammoni yechishdan oldin aniqlashtiruvchi savollar so’rang
• Muammoni va yechimni shoshilmay, yaxshi tushuntirib bering
• Eng asosiysi shashilmang!
Intervyudan o’tish sirini sizga fosh qilib qo’ydim. Agar bu ma’lumotlar sizga foydali bo’lib offer olsangiz, menga ham yozib qo’ying.
Haqiqiy askar intervyuga tayyorlanmaydi, doim intervyuga tayyor turadi.
Intervyuda ko’rishguncha.
Strawberry Test
Dropbox'da Core Teamda ishlayman. Bizni jamoa butun kompaniyani infrastrukturasini ko'tarish uchun dastur ishlab chiqadi va maintain qiladi. Undan tashqari jamoa AI ustida ham ishlashadi.
Suniy intelektda tokenization jarayoni mavjud. Siz AI'ga matn yozganingizda, matnni kichik bo'laklarga bo'lib oladi va har bir bo'lakni token deb xisoblaydi. Misol uchun "Salom mening ismim Otabek" -> ["Salom", "mening", "ismim", "Otabek"]. Bu jarayon faqat matn uchun emas balki so'z uchun ham, harflar uchun ham ishlaydi. "AI" -> ["A", "I"]. Machine learning modelingiz bu matnni tezroq tahlil qila olishi uchun shunday qilinadi. (Bu qisqacha ma'lumot)
Ayanan shu tokenization jarayonni qanchalik yaxshi qilinayotganini Strawberry test orqali aniqlashar ekan. Ha, AI tokenization jarayoni uchun ham test yoziladi. Siz AI'ga "How many r's in strawberry" deysiz. U esa sizga to'g'ri javob berishi kerak. Ammo nimaga aynan "strawberry"?
"strawberry" so'zi o'zi juda qiziq so'z ekan. Tahminan shunday ["straw", "berry"] token bo'lar ekan. Bu degani ikki so'z ham nimanidir anglatadi va AI aynan shu yerda aldanadi. Yaxshi tokenizatsiya qiluvchi AI model esa buni bitta so'z sifatida ham qaray olishi kerak. Agar siz yaratgan AI model "r" lar soni 1ta desa demak yaxshi tokenizatsiya qilmayabdi ekan.
Dropbox'da Core Teamda ishlayman. Bizni jamoa butun kompaniyani infrastrukturasini ko'tarish uchun dastur ishlab chiqadi va maintain qiladi. Undan tashqari jamoa AI ustida ham ishlashadi.
Suniy intelektda tokenization jarayoni mavjud. Siz AI'ga matn yozganingizda, matnni kichik bo'laklarga bo'lib oladi va har bir bo'lakni token deb xisoblaydi. Misol uchun "Salom mening ismim Otabek" -> ["Salom", "mening", "ismim", "Otabek"]. Bu jarayon faqat matn uchun emas balki so'z uchun ham, harflar uchun ham ishlaydi. "AI" -> ["A", "I"]. Machine learning modelingiz bu matnni tezroq tahlil qila olishi uchun shunday qilinadi. (Bu qisqacha ma'lumot)
Ayanan shu tokenization jarayonni qanchalik yaxshi qilinayotganini Strawberry test orqali aniqlashar ekan. Ha, AI tokenization jarayoni uchun ham test yoziladi. Siz AI'ga "How many r's in strawberry" deysiz. U esa sizga to'g'ri javob berishi kerak. Ammo nimaga aynan "strawberry"?
"strawberry" so'zi o'zi juda qiziq so'z ekan. Tahminan shunday ["straw", "berry"] token bo'lar ekan. Bu degani ikki so'z ham nimanidir anglatadi va AI aynan shu yerda aldanadi. Yaxshi tokenizatsiya qiluvchi AI model esa buni bitta so'z sifatida ham qaray olishi kerak. Agar siz yaratgan AI model "r" lar soni 1ta desa demak yaxshi tokenizatsiya qilmayabdi ekan.
#experience
Kecha qiziq ishlar bo'ldi. Jamoada ansible bilan file transferda muammo bo'layotgani, bandwith oshib ketgani haqida aytishdi. Ya'ni muammo juda ko'p fayllar tarmoqda transfer bo'lsa bandwith oshib ketayotgan ekan. Bu muammoni o'z zimmamga oldim. Ozgina research qilib, bergan yechimim jamoani qiziqtirdi. Muammoga yechimni juda oddiy tilda yozdim:compress (archive all files) before sending
Yechimni discuss qildik va ba'zi pointlarga to'xtalib o'tdim. Bir nechta fayllarni yuborish o'rniga barchasini (compress) archive qilib yuborish yaxshi idea bo'ldi. Jarayonni to'liq test qilib ko'rdik, natija 1 minutdan -> 20 sekundga tushdi. Boshida HTTPS beradigan TLS xavfsizligi yaxshi deb turgandim. Ammo bu faqat file transfer vaqtidagina xavfsiz, fayl manzilga tushgandan keyin u ochiq bo'lishini aytishdi. Ba'zi fayllarni hech kim ocholmasligi kerakligi uchun uni Private (va Public) keydan tashqari encrypt/decrypt qilish uchun imkoniyat qo'shdim.
Kattaroq va ko'proq fayllar bilan sinab ko'rdik (log, va juda ko'p config fayllar bilan), natija juda zo'r. Eski holatdagi o'tkazish uslubi 3 minut oldi. Yangi xolatdagi o'tkazish esa 43.12 sekund. Compression algoritmlari haqida yana ham ko'proq narsa o'rganib chiqdim, qiziq tajriba bo'ldi.
Qiziq narsa eshitdim: Lucerne shahridan Zurich shahrigacha har kuni poyezd orqali 1TB ma'lumot berib yuborilar ekan. (Esimda qolmadi nomi) Qanaqadir labaratoriya va uni tahlil qiladigan korpuslar boshqa-boshqa joyda joylashgani uchun, tarmoq orqali ma'lumotni yuborgandan, uni poyezda yuborish tezroq bo'lar ekan. Chunki uni hali process ham qilish kerak, unga ham vaqt oladida.
Updated:
Katta Data Center levelda ham test qilib ko'rdik, natija 1000x bo'ldi. Ya'ni bu yerda time complexity O(days) -> O(minutes) o'zgardi.
Kecha qiziq ishlar bo'ldi. Jamoada ansible bilan file transferda muammo bo'layotgani, bandwith oshib ketgani haqida aytishdi. Ya'ni muammo juda ko'p fayllar tarmoqda transfer bo'lsa bandwith oshib ketayotgan ekan. Bu muammoni o'z zimmamga oldim. Ozgina research qilib, bergan yechimim jamoani qiziqtirdi. Muammoga yechimni juda oddiy tilda yozdim:
Yechimni discuss qildik va ba'zi pointlarga to'xtalib o'tdim. Bir nechta fayllarni yuborish o'rniga barchasini (compress) archive qilib yuborish yaxshi idea bo'ldi. Jarayonni to'liq test qilib ko'rdik, natija 1 minutdan -> 20 sekundga tushdi. Boshida HTTPS beradigan TLS xavfsizligi yaxshi deb turgandim. Ammo bu faqat file transfer vaqtidagina xavfsiz, fayl manzilga tushgandan keyin u ochiq bo'lishini aytishdi. Ba'zi fayllarni hech kim ocholmasligi kerakligi uchun uni Private (va Public) keydan tashqari encrypt/decrypt qilish uchun imkoniyat qo'shdim.
Kattaroq va ko'proq fayllar bilan sinab ko'rdik (log, va juda ko'p config fayllar bilan), natija juda zo'r. Eski holatdagi o'tkazish uslubi 3 minut oldi. Yangi xolatdagi o'tkazish esa 43.12 sekund. Compression algoritmlari haqida yana ham ko'proq narsa o'rganib chiqdim, qiziq tajriba bo'ldi.
Qiziq narsa eshitdim: Lucerne shahridan Zurich shahrigacha har kuni poyezd orqali 1TB ma'lumot berib yuborilar ekan. (Esimda qolmadi nomi) Qanaqadir labaratoriya va uni tahlil qiladigan korpuslar boshqa-boshqa joyda joylashgani uchun, tarmoq orqali ma'lumotni yuborgandan, uni poyezda yuborish tezroq bo'lar ekan. Chunki uni hali process ham qilish kerak, unga ham vaqt oladida.
Updated:
Katta Data Center levelda ham test qilib ko'rdik, natija 1000x bo'ldi. Ya'ni bu yerda time complexity O(days) -> O(minutes) o'zgardi.
Xabarchi botga keladigan, eng ko'p so'ralgan savol bu:
Nimaga aynan Dropbox'ni tanladingiz?
Mening javobim:
Ko'p kompaniyalar ichidan aynan Dropbox'ni taklifi qiziqroq bo'ldi. Doim katta bosim (high load)ni ko'taruvchi tizimlar qurishda qatnashishga, high-level dan low-level ga o'tishga qiziqib kelganman. Biz bilgan o'sha mashxur data structure va algorithm bilimlarni amaliyotda qo'llashga qiziqqanman. Dropbox bu imkoniyatni qaysidir ma'noda berayabdi. Keyinchalik olayotgan tajribalarimdan ba'zilarini bo'lishib borishga harakat qilaman.
Bilaman ko'p joylardan ishga taklif oldim. Google'ga ishga taklifim hali ham o'z kuchida, Sentyabrgacha bir qarorga kelishimni kutishayabdi. Meta ishga taklifimni internshipga o'zgartirishga harakat qilib ko'rdim, o'xshamadi, rad javob oldim, taklif kuyib ketdi. Undan tashqari yaqinda Atlassian'dan ham ishga taklif oldim Polshadagi jamoaga (Compass mahsuloti & jamoasi uchun), shunchaki qiziqishga topshirib ko'rgandim, o'xshab ketdi.
Olgan xulosalarimdan biri bu:
zo'r kopaniyada ishlashni emas, zo'r mahsulot ustida ishlashni tanlang, yutqazmaysiz. Yo'q degandan zerikmaysiz.
Nimaga aynan Dropbox'ni tanladingiz?
Mening javobim:
Ko'p kompaniyalar ichidan aynan Dropbox'ni taklifi qiziqroq bo'ldi. Doim katta bosim (high load)ni ko'taruvchi tizimlar qurishda qatnashishga, high-level dan low-level ga o'tishga qiziqib kelganman. Biz bilgan o'sha mashxur data structure va algorithm bilimlarni amaliyotda qo'llashga qiziqqanman. Dropbox bu imkoniyatni qaysidir ma'noda berayabdi. Keyinchalik olayotgan tajribalarimdan ba'zilarini bo'lishib borishga harakat qilaman.
Bilaman ko'p joylardan ishga taklif oldim. Google'ga ishga taklifim hali ham o'z kuchida, Sentyabrgacha bir qarorga kelishimni kutishayabdi. Meta ishga taklifimni internshipga o'zgartirishga harakat qilib ko'rdim, o'xshamadi, rad javob oldim, taklif kuyib ketdi. Undan tashqari yaqinda Atlassian'dan ham ishga taklif oldim Polshadagi jamoaga (Compass mahsuloti & jamoasi uchun), shunchaki qiziqishga topshirib ko'rgandim, o'xshab ketdi.
Olgan xulosalarimdan biri bu:
zo'r kopaniyada ishlashni emas, zo'r mahsulot ustida ishlashni tanlang, yutqazmaysiz. Yo'q degandan zerikmaysiz.
#experience
Bizning jamoa infrastrukturadagi dasturlarni maintain (qo'llab quvatlab turadi) qiladi. Ish boshlaganimdan 3 oy o'tib menga ham networking'da bir qiziq loyiha berildi va loyiha kodi asosan Rust'da yozilgan ekan (undan oldin asosan C++ da bo'lgan ekan yechim). Loyihani tushunib olishga va Rustga ko'nikishga biroz vaqt ketdi.
Loyiha maqsadi asosan kuniga bir necha ming terabaytlab ma'lumot almashadigan serverlar o'rtasida reliable (ishonchli) yechim qilish bo'lgan. Bu juda katta masshtabli loyiha. Loyihada socket connection, encoding/decoding, async support, va juda ko'p boshqa omillar ro'l o'ynashini juda qiziq dokumentatsiya qilib yozib chiqishgan ekan.
Ushbu loyiha uchun, Go GC (Garbage collector) bor tillardan xisoblangani uchun unda latency (kechikish) tez-tez uchragan ekan (GC spikes), ayniqsa uni grafana bilan monitoring qilganda juda bilindi. Xotiradan ishlatilmayotgan ma'lumotlar darhol o'chishini o'rniga GC ni uyg'onib xotirani scan qilishini kutadi va natijada latency baydo bo'ladi.
Rust meni lol qoldirgan tomoni bu CC (Concurrency Control) bo'ldi. Race condition dan Compile-time da qutilish imkoniyatini berar ekan. Yana bir tomoni Go'da Goroutine'lar runtime-managed, Rust esa sizga threading model tanlash va boshqarishni manually imkon beradi (o'z tabingizga qarab ishlatasiz degani). Data sharing bo'yicha ham Send va Sync yechimlari o'ta go'zal ishlagan, sizga resourslar aro ma'lumotni bo'lishishni ham o'zingiz tanlaysiz (o'zingiz boshqarasiz).
Rust'ni maqtash emas shunchaki undagi xotira bilan ishlash (Memory control) tizimi shunchalik yaxshi ishlaganini va nima uchun ayan Rust memory safe ekanligini qisman, aniqroq tushunib oldim deb o'ylayman.
Misol uchun Go dasturlash tilida mana bunday ish qilsangiz nimalar bo'ladi:
Hozir siz:
- gorutine'lar (map, slices, counters, ...) o'rtasida state share qildingiz
- Agar to'g'ri lock qila olmasangiz, data race yuzaga keladi.
- Channel buffer juda kichik bo'lsa, deadlock'ga sabab bo'ladi
- Goroutine leak bo'lsa, silent memory bloat (dastur siz o'ylagandan ko'ra ko'proq resurs yeyishni boshlaydi) sodir bo'ladi
Bunday ishlarni to'liq o'z nazoratingizga olishingiz uchun sizga low-level til kerak bo'ladi, misol uchun Rust yoki C++. O'sha loyihani 25-30% hali ham C++ da turadi, Rust'ni tanlashganini yana bir tomoni aynan o'sha modellarni extend (kengaytirib) qilib ishlatish bo'lgan bo'lsa kerak.
Post ancha uzunroq va sizga tushunarsizroq bo'lgan bo'lishi mumkin. Ammo xavotir olmang, otabek.io da bunday postlarni tushunishingiz uchun ko'proq soddaroq postlar yozishga harakat qilaman. Rust'ni doim ishlatmasakda ammo o'rganayabmiz sekin-asta. Shuning uchun xatolar bo'lsa tushunasiz deb o'ylayman.
Bizning jamoa infrastrukturadagi dasturlarni maintain (qo'llab quvatlab turadi) qiladi. Ish boshlaganimdan 3 oy o'tib menga ham networking'da bir qiziq loyiha berildi va loyiha kodi asosan Rust'da yozilgan ekan (undan oldin asosan C++ da bo'lgan ekan yechim). Loyihani tushunib olishga va Rustga ko'nikishga biroz vaqt ketdi.
Loyiha maqsadi asosan kuniga bir necha ming terabaytlab ma'lumot almashadigan serverlar o'rtasida reliable (ishonchli) yechim qilish bo'lgan. Bu juda katta masshtabli loyiha. Loyihada socket connection, encoding/decoding, async support, va juda ko'p boshqa omillar ro'l o'ynashini juda qiziq dokumentatsiya qilib yozib chiqishgan ekan.
Ushbu loyiha uchun, Go GC (Garbage collector) bor tillardan xisoblangani uchun unda latency (kechikish) tez-tez uchragan ekan (GC spikes), ayniqsa uni grafana bilan monitoring qilganda juda bilindi. Xotiradan ishlatilmayotgan ma'lumotlar darhol o'chishini o'rniga GC ni uyg'onib xotirani scan qilishini kutadi va natijada latency baydo bo'ladi.
Rust meni lol qoldirgan tomoni bu CC (Concurrency Control) bo'ldi. Race condition dan Compile-time da qutilish imkoniyatini berar ekan. Yana bir tomoni Go'da Goroutine'lar runtime-managed, Rust esa sizga threading model tanlash va boshqarishni manually imkon beradi (o'z tabingizga qarab ishlatasiz degani). Data sharing bo'yicha ham Send va Sync yechimlari o'ta go'zal ishlagan, sizga resourslar aro ma'lumotni bo'lishishni ham o'zingiz tanlaysiz (o'zingiz boshqarasiz).
Rust'ni maqtash emas shunchaki undagi xotira bilan ishlash (Memory control) tizimi shunchalik yaxshi ishlaganini va nima uchun ayan Rust memory safe ekanligini qisman, aniqroq tushunib oldim deb o'ylayman.
Misol uchun Go dasturlash tilida mana bunday ish qilsangiz nimalar bo'ladi:
go handleConnection(conn)
Hozir siz:
- gorutine'lar (map, slices, counters, ...) o'rtasida state share qildingiz
- Agar to'g'ri lock qila olmasangiz, data race yuzaga keladi.
- Channel buffer juda kichik bo'lsa, deadlock'ga sabab bo'ladi
- Goroutine leak bo'lsa, silent memory bloat (dastur siz o'ylagandan ko'ra ko'proq resurs yeyishni boshlaydi) sodir bo'ladi
Bunday ishlarni to'liq o'z nazoratingizga olishingiz uchun sizga low-level til kerak bo'ladi, misol uchun Rust yoki C++. O'sha loyihani 25-30% hali ham C++ da turadi, Rust'ni tanlashganini yana bir tomoni aynan o'sha modellarni extend (kengaytirib) qilib ishlatish bo'lgan bo'lsa kerak.
Post ancha uzunroq va sizga tushunarsizroq bo'lgan bo'lishi mumkin. Ammo xavotir olmang, otabek.io da bunday postlarni tushunishingiz uchun ko'proq soddaroq postlar yozishga harakat qilaman. Rust'ni doim ishlatmasakda ammo o'rganayabmiz sekin-asta. Shuning uchun xatolar bo'lsa tushunasiz deb o'ylayman.
Vohid aka yangi podcast chiqaribdilar.
Ularni aytishi bo’yicha, bu yigit eng yosh Seniorlardan emish. Siz ko’rishingiz kerak bo’lgan eng yaxshi podcast shu bo’lishi mumkin emish:
https://www.youtube.com/watch?v=UKUHx5P3ISk
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Podcast: FAANG, Computer Science, Chet elda ta'lim, Tajriba to'plash va Suniy intelekt
Keyingi podcast ishtirokchimiz Otabek Nurmuhammad. Otabek Polshaning Lodz universitetida Computer Science yo'nalishida o'qib Dropbox kompaniyasida Senior Software Engineer lavozimida ishlaydilar. Otabek bilan quyidagi qiziqarli mavzularni yoritdik:
00:00…
00:00…
otabek.io v2.0 🎉
- Podcast va Talklar uchun sahifa [Talks]
- Kodlarni yuritib ko'rish (execute) imkoniyati
- Yanada tezroq va interaktivroq
- Bloglar endi Ingliz va O'zbek tilida
- Dark & Light theme
Shunchaki blog o'qish va undagi kodlarni ko'rib o'tib ketish juda zerikarli. Ammo endi bunday bo'lmaydi.
Sinab ko'ring😉
- Podcast va Talklar uchun sahifa [Talks]
- Kodlarni yuritib ko'rish (execute) imkoniyati
- Yanada tezroq va interaktivroq
- Bloglar endi Ingliz va O'zbek tilida
- Dark & Light theme
Shunchaki blog o'qish va undagi kodlarni ko'rib o'tib ketish juda zerikarli. Ammo endi bunday bo'lmaydi.
Sinab ko'ring
Please open Telegram to view this post
VIEW IN TELEGRAM
Promotion oldim 🎉
Dropbox'da ish boshlaganimga ko'p bo'lmadi. Shu paytgacha Core Team a’zosi sifatida 2 ta katta loyiha ustida 2 jamoa bilan ishladim: Network Engineering Team va Infrastructure Team.
Ha Big Tech'da (hammasida ham emas) siz asosiy va qo'shimcha loyiha sifatida yana bir loyiha bilan ishlasangiz bo'ladi va biz uni ToD (Tour of Duty) deb ataymiz.
Polshada hiring juda ko'paydi va bu interviewer bo'lish uchun zo'r imkoniyat ochdi. Hozirgacha 5 ta interview o'tkazdim. 2 tasida shadow va 3 ta interviewer sifatida. Yaxshi tomoni ko'p narsa o'rgandim. Yomon tomoni men o'tkazgan intervyulardan kandidatlar yaxshi perform qila olishmadi (yaxshi kandidat uchramadi).
Sizni o'sishingiz doim ham siz ishlayotgan loyihaga bog'liq emas, balkim menejeringizga ham juda katta bog'liqligi bor. Meni omadim kelib, yaxshi menejerlar uchrab qoldi. Va bugun ularni menga bergan yordamlari bilan Staff Software Engineer (IC5) lavozimiga ko'tarilayabman (Avgust oyidan).
Yaxshi loyihada ishlash yaxshi, ammo loyihani o'sishini (company impact) va loyiha menejerini jamoaga bo'lgan e'tiborini ham inobatga olish juda muhim ekan. Shuning uchun intervyuda faqat kompaniya/menejer sizni emas, siz ham kompaniya/menejerni intervyu qilishingiz muhim.
To'g'risi, agar kimdir "24 yoshingda Staff Software Engineer bo'lib ishlaysan" deyishsa "qo'ysangizchi-ye" degan bo'lardim.
Yig'ilgan tajribalarni esa tez kunlarda42.uz va otabek.io da bo'lishib o'tamiz.
Dropbox'da ish boshlaganimga ko'p bo'lmadi. Shu paytgacha Core Team a’zosi sifatida 2 ta katta loyiha ustida 2 jamoa bilan ishladim: Network Engineering Team va Infrastructure Team.
Ha Big Tech'da (hammasida ham emas) siz asosiy va qo'shimcha loyiha sifatida yana bir loyiha bilan ishlasangiz bo'ladi va biz uni ToD (Tour of Duty) deb ataymiz.
Polshada hiring juda ko'paydi va bu interviewer bo'lish uchun zo'r imkoniyat ochdi. Hozirgacha 5 ta interview o'tkazdim. 2 tasida shadow va 3 ta interviewer sifatida. Yaxshi tomoni ko'p narsa o'rgandim. Yomon tomoni men o'tkazgan intervyulardan kandidatlar yaxshi perform qila olishmadi (yaxshi kandidat uchramadi).
Sizni o'sishingiz doim ham siz ishlayotgan loyihaga bog'liq emas, balkim menejeringizga ham juda katta bog'liqligi bor. Meni omadim kelib, yaxshi menejerlar uchrab qoldi. Va bugun ularni menga bergan yordamlari bilan Staff Software Engineer (IC5) lavozimiga ko'tarilayabman (Avgust oyidan).
Yaxshi loyihada ishlash yaxshi, ammo loyihani o'sishini (company impact) va loyiha menejerini jamoaga bo'lgan e'tiborini ham inobatga olish juda muhim ekan. Shuning uchun intervyuda faqat kompaniya/menejer sizni emas, siz ham kompaniya/menejerni intervyu qilishingiz muhim.
To'g'risi, agar kimdir "24 yoshingda Staff Software Engineer bo'lib ishlaysan" deyishsa "qo'ysangizchi-ye" degan bo'lardim.
Yig'ilgan tajribalarni esa tez kunlarda
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#experience
Ikki hafta oldin kompaniyada TechTalk’da "Memory leak" mavzusida ma’ruza berdim. 51 ta turli xil jamoalardan muhandislar kirib eshitishdi, to‘g‘risi ancha qo‘rquv bosdi. Memory leak juda nozik mavzu, agar siz ishlatayotgan tilni mohiyatini yaxshi bilmasangiz xotira bilan ishlashda juda chiroyli muammolarga duch kelishingiz mumkin. Biz asosan Python va Go tillaridan misollar ko‘rib ketdik.
Online meeting orqali qatnasha olganlar juda ajoyib feedback yozishdi. Ularni har hafta o‘qib maza qilyapman. Ma’ruzamning videosi chiqqanidan so‘ng tomosha qilganlar ham yaxshi xabarlar yozishdi, ammo bir yigitni xabari e’tiborimni tortdi. U bu ma’ruzadan keyin tizimdagi memory leak’ni topishga muvaffaq bo‘lgan.
Ular ishlaydigan tizim kodi Java’da yozilgan ekan. Bilamizki Java ham Garbage collected til hisoblanadi. GC xotirani tozalash uchun reference counting dan foydalanadi. Agar obyekt ishlatiladigan bo‘lsa uni reference count odatda +1 ga teng bo‘ladi. GC juda aqlli bo‘lgani bilan, benuqson emas.
U yozgan xabarda inner class yozish va uni xotiraga ta’siri haqida gap ketgan. Men uning ma’ruzamda memory leak’ga sabab bo‘lishi mumkinligi haqida misollar bilan yoritib o‘tgan edim.
Muamo outer class obyekti o‘chib ketganiga qaramay inner class obyekti ishlatilishda davom etishida. Qanday qilib inner class obyekti o‘chib ketmadi deyishingiz mumkin. Sabab, unga reference saqlanib qolgan (ref count +1). Dastur to‘laoqnli to‘g‘ri ishlashini ta’minlash uchun uni o‘chib ketishini ham o‘zingiz dasturlashingizga to‘g‘ri keladi.
Yana bir bola o‘zining frontend loyhasidan memory leak topganini yozibdi. Closures - outer scope’dagi o‘zgaruvchilarni eslab qola oladi. Agar obyektni saqlab qolsangiz, u reference qilgan qiymatlar ham o‘chmay saqlanib turaveradi degani. Agar ehtiyot bo‘lmasangiz Javascript kodingiz, browser’da leak’ga sababchi ishlar qilishi juda osonligini ko‘rdim. U yuborgan koddan parcha:
Bunday muammolar ko‘p. Ma’ruza berish orqali faqat o‘rgatmadim, balkim ko‘p o‘rgandim ham. Videoni ommaviy ulashish imkoni bo‘lsa, ulashishni reja qilib turibman. Sizga ham bir parcha tajriba ilindim : )
Ikki hafta oldin kompaniyada TechTalk’da "Memory leak" mavzusida ma’ruza berdim. 51 ta turli xil jamoalardan muhandislar kirib eshitishdi, to‘g‘risi ancha qo‘rquv bosdi. Memory leak juda nozik mavzu, agar siz ishlatayotgan tilni mohiyatini yaxshi bilmasangiz xotira bilan ishlashda juda chiroyli muammolarga duch kelishingiz mumkin. Biz asosan Python va Go tillaridan misollar ko‘rib ketdik.
Online meeting orqali qatnasha olganlar juda ajoyib feedback yozishdi. Ularni har hafta o‘qib maza qilyapman. Ma’ruzamning videosi chiqqanidan so‘ng tomosha qilganlar ham yaxshi xabarlar yozishdi, ammo bir yigitni xabari e’tiborimni tortdi. U bu ma’ruzadan keyin tizimdagi memory leak’ni topishga muvaffaq bo‘lgan.
Ular ishlaydigan tizim kodi Java’da yozilgan ekan. Bilamizki Java ham Garbage collected til hisoblanadi. GC xotirani tozalash uchun reference counting dan foydalanadi. Agar obyekt ishlatiladigan bo‘lsa uni reference count odatda +1 ga teng bo‘ladi. GC juda aqlli bo‘lgani bilan, benuqson emas.
U yozgan xabarda inner class yozish va uni xotiraga ta’siri haqida gap ketgan. Men uning ma’ruzamda memory leak’ga sabab bo‘lishi mumkinligi haqida misollar bilan yoritib o‘tgan edim.
Muamo outer class obyekti o‘chib ketganiga qaramay inner class obyekti ishlatilishda davom etishida. Qanday qilib inner class obyekti o‘chib ketmadi deyishingiz mumkin. Sabab, unga reference saqlanib qolgan (ref count +1). Dastur to‘laoqnli to‘g‘ri ishlashini ta’minlash uchun uni o‘chib ketishini ham o‘zingiz dasturlashingizga to‘g‘ri keladi.
Yana bir bola o‘zining frontend loyhasidan memory leak topganini yozibdi. Closures - outer scope’dagi o‘zgaruvchilarni eslab qola oladi. Agar obyektni saqlab qolsangiz, u reference qilgan qiymatlar ham o‘chmay saqlanib turaveradi degani. Agar ehtiyot bo‘lmasangiz Javascript kodingiz, browser’da leak’ga sababchi ishlar qilishi juda osonligini ko‘rdim. U yuborgan koddan parcha:
function setup() {
const bigData = new Array(1e6).fill(’leak’);
document.getElementById(’btn’).addEventListener(’click’, function () {
console.log(bigData[0]);
});
}
Bunday muammolar ko‘p. Ma’ruza berish orqali faqat o‘rgatmadim, balkim ko‘p o‘rgandim ham. Videoni ommaviy ulashish imkoni bo‘lsa, ulashishni reja qilib turibman. Sizga ham bir parcha tajriba ilindim : )
Claude 4 sinab ko'rdim, u qilgan ishlar miyyamni portlatvoray dedi 🤯
Butun boshli codebase'ni bitta prompt orqali yangilab chiqdi. Kodlarni modular qilib ajratdi, test yozdi va katta chalkash funksiyalarni, kichik va chiroyli funksiyalarga bo'lib chiqdi.
Kodni ishga tushurib ko'rganimda hech nima ishlamadi😬 , lekin malades, shuncha yaxshi ish qilib chiqdi. Ha do'stlar, biz shunday ajoyib AI davrida yashayabmiz.
Butun boshli codebase'ni bitta prompt orqali yangilab chiqdi. Kodlarni modular qilib ajratdi, test yozdi va katta chalkash funksiyalarni, kichik va chiroyli funksiyalarga bo'lib chiqdi.
git add -A
git commit -m "enhance code quality and modularity"
Kodni ishga tushurib ko'rganimda hech nima ishlamadi
git reset --hard HEAD~1
Please open Telegram to view this post
VIEW IN TELEGRAM
VeriFy AI
Ochiq kodli, hech qanday kutubxonalarsiz, va o'rganish maqsadida qurilgan scam detector.
Loyiha har qanday AI va ML o'rganmoqchi bo'lganlar uchun. Loyihani tushunish uchun kodni va uyerdagi izohlarni o'qish kifoya qiladi.
1. Loyihani kompyuteringizga clone qiling
2. Uni ishga tushuring va train bo'lishini kuting
3. Xabar yozing, u sizga scam yoki scam emasligini aytadi
4. Va albatta⭐️ bosishni unutmang.
5. Ko'proq open source loyihalar uchun, [follow me]
Batafsil: https://github.com/otabekswe/verify
Ochiq kodli, hech qanday kutubxonalarsiz, va o'rganish maqsadida qurilgan scam detector.
Loyiha har qanday AI va ML o'rganmoqchi bo'lganlar uchun. Loyihani tushunish uchun kodni va uyerdagi izohlarni o'qish kifoya qiladi.
1. Loyihani kompyuteringizga clone qiling
2. Uni ishga tushuring va train bo'lishini kuting
3. Xabar yozing, u sizga scam yoki scam emasligini aytadi
4. Va albatta
5. Ko'proq open source loyihalar uchun, [follow me]
Batafsil: https://github.com/otabekswe/verify
Please open Telegram to view this post
VIEW IN TELEGRAM