Engineering Notes
Открыть в Telegram
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
Больше2 575
Подписчики
Нет данных24 часа
+37 дней
+1830 день
Архив постов
2 575
Dasturlashda nega odatda indekslash 1 emas 0-tartibdan boshlanishining kelib chiqish tarixiga qiziqib ko'rganmisiz?
2 575
Quote of the day:
Premature optimization is the root of all evil.
© Donald Knuth
2 575
Mana bu postga ancha qiziq va foydali commentlar yozilibdi.
Tepada aytilgan holatda, ya'ni private fieldlarga public getter/setter yozilganda encapsulation to'liq buziladi degandim.
Yo'q, aynan shu narsaga ehtiyoj tug'iladigan va encapsulationni buzmaydigan holatlar bor ekan (masalan, custom access validation).
Encapsulation mavzusida chuqurroq izlanishga sabab topildi. Fikr bildirgan va to'g'rilaganlarga rahmat.
2 575
Funksiya yozishdan maqsad nima?
Dasturlash sohasiga yaqinda kirib kelgan kamida 4 kishidan (har xil o'quv markazlarda o'qishadi/o'qishgan, self-study qilgani ham bor) funksiya yozishdan asosiy maqsad nima deb so'raganimda deyarli birga xil javob oldim – bir kodni qayta-qayta yozish (duplicate code) ning oldini olish uchun.
Umuman olganda, funksiya duplicate code'dan qutulishning yaxshi usuli. Lekin funksiyalardan foydalanishdan asosiy maqsad (va funksiyalar kelib chiqishiga asl sabab ham) funksional dekompozitsiya va abstraksiya.
Oramizda o'quv markazlarida ishlaydiganlar bo'lsa shunga o'xshash fundamental tushunchalarni berishda biroz ehtiyot bo'lishni tavsiya qilaman. Ertaga chiqadigan mutaxassislarning o'sish potensiali ko'proq sizga bog'liq.
2 575
Encapsulation deb fieldni private qilib belgilab yana public getter/setter yozib qo'yadiganlarga hali beri tushuna olmasam kerak.
2 575
Savol: Maktabda ikkinchi yo uchinchi sinfda 0 ga bo'lish mumkin emasligini o'rganganmiz. Lekin aynan nima sababdan mumkin emas?
Fikrlaringizni commentda qoldiring. Biror kun har bir javobni birga analiz qilishga harakat qilib ko'ramiz.
2 575
Universitetda ancha qiziq o'tgan semestr tugay deb qoldi.
Ayniqsa Nand2Tetris loyihasidan foydalanilgan computer science kursi men uchun qiziq bo'ldi. Basic nand logic gatedan foydalanib qadamma-qadam butun boshli general-purpose (umumiy maqsadli) komputer qurish va o'sha komputer uchun avval assembler, keyin VM, OS va nihoyat yuqori darajali dasturlash tili ishlab chiqish jarayonini ko'rib chiqdik. Albatta juda soddalashtirilgan holatda.
Oxirgi haftada o'sha tildan foydalanib har xil kichkina dasturlar yaratib ko'rdik. Nand2Tetris loyihasida Tetris o'yini yozib ko'rsatilgan. Keyin professor qiziq savol berib qoldi: Bir semestr davomida nand'dan foydalanib Tetris qura oldik. Xo'sh, agar teskarisini, ya'ni Tetrisdan foydalanib nand gate qursakchi?
Umuman olganda, har qanday tabiiy yoki sun'iy olam o'z qonunlari asosida ma'lumot saqlaydi va modifikatsiya qiladi, shu jumladan Tetris o'yini ham. Demak agar bizga kerakli axborot saqlash shakli va modifikatsion operatsiyalarni o'sha olamning qoidalaridan foydalanib yoza olsak, teoritik jihatdan o'sha olamni komputer sifatida ishlata olish imkoniyati tug'iladi.
Bizga Tetris o'yini olamining qoidalari asosida ma'lumotni raqamli ko'rinishda saqlash va shu ma'lumot ustida ba'zi mantiqiy amallarni bajarish imkoniyatini beradigan qoidalar to'plamini berildi. Shu jumladan nand gateni ham tasvirlash imkoni tug'ildi. Qolgani yana o'sha klassik usulda soddaroq komponentlarning kombinatsiyasidan murakkabroq mexanizmlar qurish. Natijada Tetris o'yini olamida ishlaydigan general-purpose computer qura olamiz. Xo'sh, endi unga qanday dastur yozamiz? Albatta Tetris😂
Qisqasi, oddiy komputerda ishlayotgan Tetris o'yinining ichida qurilgan komputerga Tetris o'yinini yozib chiqishibdi. Ko'rib jinni bo'layozdim.
2 575
Matematik va dasturchi sifatida men juda hurmat qiladigan inson – Muhammadxon aka Najimov o'z sohasida blog yuritishni boshlabdilar. Ko'pchilikka foydali bo'ladi deb o'ylayman: @leph0
P.S. Kanal logosi top.
2 575
Dasturlash sohasida bir-biridan qiziq terminlar ko'p.
Bugun shulardan yana bittasi haqida o'rgandim – Just a Bunch Of Disks (JBOD).
P.S. PHP ham aslida "Hypertext Preprocessor" emas, "Personal Home Page" ning qisqartmasi.
2 575
Linux file system haqida batafsilroq ma'lumot berilgan yaxshi resurslar bilsangiz commentda qoldiring, iltimos.
2 575
Repost from Vohid Karimov
O'zim ham shunday maktablarni birida o'qiganim va universitetda ham toza Computer Science o'qimaganim tufayli ko'p Math va Computer Science bilimlarni o'zim online resurslardan o'rganaman. Bugun silar bilan o'zimga yoqqan resurslar bilan ulashaman. Kettik:
1. The essence of calculus: YouTube
2. Linear algebra: MIT Website
3. Discrete math: YouTube
4. Probability and combinatorics: Coursera
5. Introduction to Algorithms: MIT Website
6. Operating systems: Archive
7. Networking: Khan Academy Website
Yana, quyidagi YouTube kanallar va GitHub repolarni tavsiya qilaman:
1. 3Blue1Brown
2. Eddie Woo
3. Khan Academy
4. MIT OpenCourseWare
5. BrilliantOrg
6. Coding Interview University
7. Awesome courses
Siz ham o'zingizga yoqgan resurslarni ulashing!
2 575
Instance method
Instance methodlar (ya'ni aynan obyektga biriktirilgan methodlar) OOPning fundamental g'oyalaridan biri. Aynan ular ma'lumot saqlangan jonsiz strukturani jonli obyektga aylantirishda asosiy omil.
Xo'sh, Java, Python kabi VM instruksiyalarga kompilyatsiya bo'ladigan tillarda method obyektga qanday bog'langan? Axir VM protsedural, u OOP nimaligini bilmaydi-ku?
Ko'plab detallarni tushirib qoldirib, o'ta sodda qaraydigan bo'lsak, instance method xuddi oddiy funksiya kabi ishlaydi. Faqat qo'shimcha yana bitta argument – obyektning o'zini oladi.
Masalan, "mashina" obyektida "signal chal" degan method bo'lsa, compiler methodni obyektga emas, obyektni methodga kiritadi. Ya'ni mashinangizning "signal chal" degan methodini ishlatish uchun "mashina signalini chal" degan funksiyaga mashinangizni argument sifatida berish kerak bo'ladi. Mana bu yerda kod orqali ko'rsatilgan.
Obyektni argument sifatida o'tkazish esa explicit (ochiq) yoki implicit (yopiq) ko'rinishda bo'lishi mumkin. Masalan, Pythonda self argumenti methodga nolinchi argument sifatida ochiq tarzda o'tkazilsa, Java yoki PHPda this argumenti avtomatik tarzda "parda ortida" o'tkaziladi, ya'ni buni siz qilishingiz shart emas.
Oxirgi muammo qoldi – static methodlarni instance methodlardan farqlash. Sababi obyekt faqat instance methodlarga o'tishi kerak. Buning uchun ko'plab tillar static keywordini ishlatsa, Python @staticmethod dekoratorini ishlatadi.
@boboshersnotes
2 575
Instance method
Instance methodlar (ya'ni aynan obyektga biriktirilgan methodlar) OOPning fundamental g'oyalaridan biri. Aynan ular ma'lumot saqlangan jonsiz strukturani jonli obyektga aylantirishda asosiy omil.
Xo'sh, Java, Python kabi VM instruksiyalarga kompilyatsiya bo'ladigan tillarda method obyektga qanday bog'langan? Axir VM protsedural, u OOP nimaligini bilmaydi-ku?
Ko'plab detallarni tushirib qoldirib, o'ta sodda qaraydigan bo'lsak, instance method xuddi oddiy funksiya kabi ishlaydi. Faqat qo'shimcha yana bitta argument – obyektning o'zini oladi.
Masalan, "mashina" obyektida "signal chal" degan method bo'lsa, compiler methodni obyektga emas, obyektni methodga kiritadi. Ya'ni mashinangizning "signal chal" degan methodini ishlatish uchun "mashina signalini chal" degan funksiyaga mashinangizni argument sifatida berish kerak bo'ladi. Mana bu yerda kod orqali ko'rsatilgan.
Obyektni argument sifatida o'tkazish esa explicit (ochiq) yoki implicit (yopiq) ko'rinishda bo'lishi mumkin. Masalan, Pythonda self argumenti methodga nolinchi argument sifatida ochiq tarzda o'tkazilsa, Java yoki PHPda this argumenti avtomatik tarzda "parda ortida" o'tkaziladi, ya'ni buni siz qilishingiz shart emas.
Oxirgi muammo qoldi – static methodlarni instance methodlardan farqlash. Sababi obyekt faqat instance methodlarga o'tishi kerak. Buning uchun ko'plab tillar "static" keywordini ishlatsa, Python @staticmethod decoratorini ishlatadi.
2 575
Va nihoyat Dropbox storage tizimidagi qilgan o'zgarishlari haqidagi maqolani o'qib chiqdim. Shu vaqtgacha ko'p dasturchilar bu haqida gapirgan bo'lsa-da, maqolani to'liq o'qib chiqishga vaqtim bo'lmayotgan edi.
Maqolada meni qiziqtirgan ba'zi detallar kiritilmagan ekan, lekin asosiy g'oyani ko'rib "wow" dedim. Bizga hali bunday muammolar bilan ishlashga ancha bor ekan ))
Hali o'qimagan bo'lsangiz maqolaga link qoldiraman:
https://dropbox.tech/infrastructure/increasing-magic-pocket-write-throughput-by-removing-our-ssd-cache-disks
