Lazizbek Ergashev | IT Blog
619 subscribers
251 photos
104 videos
11 files
146 links
🇸🇪 Software Engineer @ danads.com
🤖 Co-founder at @robocontest
🎮 Loves Gaming and Anime
🧑 24 y.o
🇺🇿 Bukhara
✍️ @lazizbek_ergashev

solo.to/lazerg
Download Telegram
Lazizbek Ergashev | IT Blog
Real proyektlar masalalardan biroz farq qiladi. Masalalarda siz kodni kompyuter uchun yozasiz, manga eng tez ishlaydigan yechim kerak deb. O’qib biladigan kod yozish muximmas uncha, ko’p algo expertlarni bilaman, algoritm zo’r tuzadi, lekin o’zi yozgan kodni…
Yana shunday holatga duch kelganman algo expertlarda, katta bir kodni bir qatorda yozib bildim deb maqtanishadi. Bundan tashqari junior developerlar ham shunaqa qilib maqtanishadi, ammo aslida joy cheklanmaganku, bir liniyali kod zo’r ko’rinishi mumkin, ammo o’qishga juda ham qiyin, real proyektlarda bunaqa qilish keyinchalik o’zizni bosh og’riqqa qoldiradi 😁!

👉 @lazerg
Keyingi postda junior va senior dasturchilar farqini ko’rib chiqamiz

👉 @lazerg
Junior, middle va senior dasturchilar farqi nimada

Shuni aniq aytishim mumkinki bularning hechqaysisi nechi yil ishlaganizga ham, yoshingizga ham bog’liqmas. Kimdir 5 yil ishlab hali ham middle bo’lishi mumkin, kimdir 3 yil ishlab, uje senior dasturchi sifatida ishlayotgan bo’lishi mumkin. Oldizga qo’yilgan muammoga yechim topishni o’zi sizni senior darajasiga ko’tarmaydi. Senior dasturchilar dastur arxitekturasini yaxshi tuzib biladigan, design patternlarni yaxshi tushunadigan, dasturc testlashni avtomatlashtirishni, optimal yechim topish va dastur xavfsizligini yaxshi tushunadigan bo’lishi kerak.

Senior dasturchilar kodni kelajakda yangi jamoa kelsa, muammosiz tushunib ketib, davom etadigan darajada readable (o’qib biladigan) yozishi zarur. Senior dasturchilarni fikrlashi junior va middle dasturchilardan biroz farq qiladi, har bir kod yozayotganda boshida: Bu kodni keyinchalik support qilib bo’ladimi, keyinchalik yangi o’zgartish kiritib bo’ladimi, deb o’ylaydi.

Senior dasturchilar bu hamma narsani biladi degani emas, shunchaki ular bundan oldingi tajribalaridan kelib chiqib yechim topib bilishadi va to’g'ri savol berib bilishadilar.

Asosan junior dasturchilar, dastur arxitekturasiga aralashmaydilar, ular asosan oddiy vazifalarni bajarishadi, chunki junior dasturchilar bular asosan endigina dasturlashni o’rganib kelib hali tajribasi bo’lmagan dasturchi bo’lishlari ham mumkin. Middle developerlar ham adashmasam deyarli shunday oddiy vazifalarni bajarishadi, ammo junior developerlarga nisbatan, ular biroz mustaqilroq yechim topishadi, chunki tajribalari ularni uje bor. Senior dasturchilar esa dasturni arxitekturasini o’zlari o’ylab chiqishadi. Bundan tashqari proyektni qaysi tilda yozish, qaysi freymvorkni ishlatish eng yaxshi variant bo’lishini hal qilishadi.

Senior dasturchi aynan shu ishlayotgan kompaniyasini muammosini yaxshi tushungani uchun ham senior bo’lgan bo’lishi mumkin, chunki hamma kompaniyani muammosi va vazifasi harxil. Hozir ishlayotgan joyida senior bo’lsa, boshqa joyga middle bo’lib ishga kirishi ham mumkin. Chunki hamma yo’nalishda zo’r bo’lib bo’lmaydi

👉 @lazerg
Keyingi post qanday qilib mutsaqil o’rganish haqida bo’ladi.

👉 @lazerg
Dasturlashni mustaqil o’rganib bo’ladimi yohud o’quv markaziga borish shartmi.

Bu savolni mandan ko’p kishi so’raydi, va men javob berardim, bilmasam mening o’zim hech qanaqa o’quv kursiga bormaganman.

Agar siz o’z vaqtizni o’ziz boshqarib bilsangiz va ingliz, rus tillarini yaxshi bilsangiz o’quv markaziga borish shart emas deb o’ylayman.

Lekin shuni sezdimki, birxil dasturchi bo’lmoqchi do’stlarim, ular jamoaviy o’rganishni yaxshi ko’rishadi, qolgan o’quvchilar bilan raqobatlashib, shunaqa. Balki shunday odamlarga rostan ham o’quv markazi kerakdir.

Biroq, o’ziz (self-taught) dasturchi bo’lishingiz uchun, oldizda kuchli mentor bo’lishi kerak, allaqachon kuchli kompaniyada ishlayotgan. Shunda ham u sizga ertalabdan kechgacha o’rgatishi shart emas, shunchaki to’gri yo’l (roadmap) ko’rsatib bilsa bo’ldi. Masalan bu texnologiyani o’rgan, bunisini o’rganma uje eskirdi, deydigan. Shunda bu texnologiyalarni o’ziz qiziqib, internetdan kurslarni topib, o’rganib yoki rasmiy dokumentatsiyasiga kirib o’rganishiz kerak bo’ladi.

Va eng muximi faqat videokurslarga yopishib qolmang, o’ziz ham kod yozing, mayli biron katta dastur bo’lmasin, mayli eng optimal yo’l bilan bormang, ammo o’ziz yarating, shunda sekin asta rivojlanasiz

👉 @lazerg
Lazizbek Ergashev | IT Blog
Dasturlashni mustaqil o’rganib bo’ladimi yohud o’quv markaziga borish shartmi. Bu savolni mandan ko’p kishi so’raydi, va men javob berardim, bilmasam mening o’zim hech qanaqa o’quv kursiga bormaganman. Agar siz o’z vaqtizni o’ziz boshqarib bilsangiz…
Mustaqil o’rganmoqchi bo’lsangiz, boshqa dasturchilarni kodini ko’rib ham o’rganishingiz mumkin.

Github platformasida juda ham ko’p qiziqarli proyektlar to’la. Aynan proyekt bo’lishi ham shartmas, masalan biron kichiqroq kutubxona bo’lsa ham mayli. Shunda ham shunchaki fayllar ichiga kirib o’rganishga harakat qilmang. Birinchi u open-source repositoryni yuklab oling, git log (o’zgartirishlar tarixi) ga kiring, va birinchi commit (o’zgarish) dan ko’rib chiqsangiz bo’ladi, u odam qanday boshlagan kod yozishni, qanday muammolar oldiga kelgan, va qanday hal qilgan. Bu ham o’rganishning bir usuli hisoblanadi!

👉 @lazerg
Kuzatuvchilar tomonidan repository qanday yuklanadi degan savol berildi

Hozir men buni qanday o’zim qilishimni ko’rsataman. Birinchi bo’lib git dasturini o’rnatish kerak (git-scm.com)

Mening o’zim WebStorm bilan ko’rsataman, buni istalgan editorga moslashtirsa bo’ladi.

Keyin istalgan bir kutubxonaga kiring. Masalan eng mashxur kutubxonalardan biri lodash ni olaylik.

Kutubxona linki olib git clone https://github.com/lodash/lodash.git terminalga yozib yuklab olinadi.

Shunda WebStorm da Git -> Show git log ga kirib git tarixini chiqarsa bo’ladi.

Shunda eng birinchi commitdan boshlab ko’rib chiqiladi.

👉 @lazerg
Lazizbek Ergashev | IT Blog
Photo
Sizga qaysi kutubxona yoki framework qiziq o’shani ichini ko’rib chiqing albatta, ko’p narsa o’rganasiz, shaxsan o’zim PHP dagi eng mashxur framework laravel ni ichidan qanday taxlanganini ko’rish, o’rganish uchun ko’p vaqt sarflayman, va hozir ham nimadir o’zgartirish kiritilsa darrov ko’rib chiqaman, qani qanday shu narsa erishildi deb

👉 @lazerg
Dasturchilar uchun Linkedin profil muximmi

Albatta, nafaqat dasturchilar uchun, balki barcha mutaxasislar uchun linkedin juda ham zarur hisoblanadi. Asosan, ish beruvchilar, ishchilarni o’sha yerdan qidirishadi. Linkedinni faqat ishga kirish sifatidamas, portfolio taxlash, rezyume taxlash sifatida ham ishlatsa bo’ladi. Linkedin profilini chiroyli qilib to’ldirish juda ham muxim, chunki keyinchalik googledan biron kishi sizni ismingizni qidirsa, birinchilardan bo’lib linkedin ijtimoiy tarmog’idan topadi!

👉 @lazerg
👉 @lazerg
Nimaga IT olamida xatolar bag (bug - hasharot) deb ataladi

Afsonaga qaraganda 1947-yilning, 9-sentyabrida, Harward universitetida, Greys Myurrey Xopper Mark II Aiken Relay Calculator qurilmasini tekshirotgan paytida xatolikka duch kelgan. Keyinchalik aniqlanishi bo’yicha qurilma sxemasida kapalak yopishib qolgan ekan, va shuning uchun ham ishlamayotgan ekan. Greys sxemadan hasharotni olayotgan payti xonaga zobit kirib kelgan, shunda undan nima qilayotganini so’ragan. U kompyuterni xasharotlardan tozalayotganini aytgan (ingliz tilida: debugging) . O’sha paytdan beri dasturlashda xatolar - bug, xatolarni tuzatish esa debugging deb ataladi

👉 @lazerg
Qanday qilib xatolarsiz kod yozib bo’ladi

Xatosiz kod yozishni imkoni yo’q, ammo tushunarli va debuggable (xatoni aniqlash oson) kod yozishning imkoni bor. Dasturiy ta’minot yaratish davomida baglardan to’liq qutilib bo’lmaydi, albatta agar gap kattoroq global proyektlar haqida ketayotgan bo’lsa, chunki kichkina proyektlarda xato chiqmasligi mumkin. Shunda debuggable kodga nimalar kiradi?

🔘 Tushunarli nomlar bering. Klasslarga, funktsiyalarga, metodlarga tushunarli nom berish juda ham muxim. Ularning nomi orqali vazifasini ko’rsatib berish kerak.

🔘 Kodni strukturalashtiring. Probellar, tab, qatorlarni qizg’anmang, strukturalashtirilgan kod, o’qilishga, tushunishga va test qilishga juda ham qulay.

🔘 Kodning algoritm qismi bilan, biznes logika qismini aralashtirmang.

🔘 Unutmang kod bir marta yoziladi, ammo ming marta o’qildi. Shuning uchun ham yozishgamas, o’qishga qulay kod yozing.

Umuman olganda xatolar barcha dasturiy ta’minotda uchrab turadi. Buglarni oldinroq aniqlash uchun testlar yoziladi.

👉 @lazerg
Lazizbek Ergashev | IT Blog
Qanday qilib xatolarsiz kod yozib bo’ladi Xatosiz kod yozishni imkoni yo’q, ammo tushunarli va debuggable (xatoni aniqlash oson) kod yozishning imkoni bor. Dasturiy ta’minot yaratish davomida baglardan to’liq qutilib bo’lmaydi, albatta agar gap kattoroq…
Biznes logika qismi qanaqa u?

Izohlarda shunday savol qoldirilibdilar. Javoblar hammaga tushunarli bo’lishi uchun qiyin terminlarni ishlatmaslikka harakat qilaman. Bu savolga javob berishdan oldin avval biznes logika (business logic) bilan dasturiy logikani (application logic) ni farqini misollar orqali tushuntirsam:

Telegram misoliga qarasak, username har doim unique (takrorlanmas) bo’lishi kerak, masalan shu blogim username’i @lazerg, tamom toki man buni o’zgartirmasam, boshqa kanalga bunday username qo’yib bo’lmaydi, manashu bizness logikaga kiradi. Agar kanalim sozlamalariga kirsam, va username berilgan qismini bossam uni o’zgartiradigan oyna chiqadi, manabu uje dastur logikasi

👉 @lazerg
Qanday qilib dastur xavfsizligini oshirsa bo'ladi 😂

👉 @lazerg
Dasturlash tillari, texnologiyalar jadallik bilan rivojlanib borayotgan zamonda yashab turib, qanday qilib zamon bilan ham-nafas bo’lgan dasturchi bo’lish mumkin

Tog’ri, IT olami juda ham jadallik bilan rivojlanib bormoqda, hozirda talabgor dasturchi bo’lsangiz, 2 yildan keyin hechkimga kerakmas dasturchi bo’lishingiz ham hechgapmas. Chunki trendlar o’zgarib bormoqda, freymvorklar, kutubxonalar yangilanib bormoqda. Xo’sh trendda yurish uchun nima qilish zarur? Avvalo hamma yerga va har narsaga ulgirishning eng oddiy yo’li bu - hech qayerga shoshilmaslik ! Sizga haqiqattan ham nima muximligini aniqlab oling: aynan qaysi soha sizga qiziq. Hechqachon hamma narsaga zo’r bo’lib bo’lmaydi, e’tiboringizni o’z sohayizga qarating, va kuzatib boring.

Mening o’zim asosan backendda laravel ni ishlatganim sababli, Taylor Otwell (laravel yaratuvchisi)ning twitter sahifasiga obuna bo'lib kuzatib boraman. Dokumentatsiyadagi o’zgarishlarni, va githubdagi source code da o'zgarish bo'lsa kuzatib boraman. Kuchli dasturchilar podkastlarini, maqolalarini o'qib boraman.

Dasturchilar butun karyerasi davomida yangi narsalarni o’rganib borishi kerak, qolgan sohalarni bilmayman-u, lekin IT sohasida katta pul to’lanuvchi mutaxasis bo’lish uchun bu juda ham muhim

👉 @lazerg
#savol

🧩 Quyida matematika tomonidan to'gri qavs ochilishi bo'lgan, ammo nega javascriptda bu ikki ifoda harxil natijalarni ko'rsatmoqda?

Javoblarizni izohda kutib qolamiz

👉 @lazerg
- Darsga nima uchun kech qolding?
- Captcha yechayotgandim


👉 @lazerg
MVC nima

MVC bu shunaqa web loyiha arxitekturalash turiki, unda web-loyiha kichikroq shablonlarga bo'linib taxlanadi. MVC da loyiha uch alohida komponentga ajratiladi va bu o'z ichiga: malumotlar modeli, foydalanuvchi interfeysi hamda foydalanuvchini tizim bilan aloqasi logikasini oladi

Bunday kichikroq komponentlarga ajratishning avzalligi shundan iboratki, bitta qismini o'zgartirish boshqa qismini, yoki minimal o'zgartirishga, yoki umuman o'zgartirmaslikka olib keladi.

Shunday qilib MVC da dasturni qaysidir qismini o'zgartirish, qo'shimcha qo'shish osonroq, chunki agar siz foydalanuvchi interfeysini o'zgartirsangiz u biznes logikaga ta'sir qilmaydi, agar biznes logikani o'zgartirmoqchi bo'lsangiz, foydalanuvchi interfeysiga ta'sir qilmaydi.

- Model / Model - Bu ma'lumotlar bazasidagi qaysidir narsani obyekt modelini tasvirlab, o'z ichiga asosan ma'lumotlar va ushbu ma'lumotlar bilan ishlash metodlari yoziladi. Bundan tashqari u kontrollerdagi so'rovlarga ma'lumot qaytarib berishi yoki o'zining holatini o'zgartirishi mumkin. Shunday bo'lishiga qaramasdan, model ma'lumotlarni qanday foydalanuvchiga ko'rsatish va qanday formatlash bilan ishi yo'q va u to'gridan to'gri foydalanuvchi bilan aloqa qilmaydi.

- Ko'rinish / View - Bu ma'lumotlar foydalanuvchiga ko'rinishini ta'minlaydi (vizualizatsiya). Boshqacha qilib aytganda foydalanuvchi saytga kirganda nimani ko'radi shular. Bunda kontroller foydalanuvchi so'roviga qarab ma'lumotlarni modeldan olib bu qismga beradi, va bu asosan uni foydalanuvchiga ko'rsatish bilan shug'ullanadi.

- Kontroller / Controller - Bu foydalanuvchi bilan tizimni bog'lab beradi. Kontroller vazifasi foydalanuvchi so'roviga qarab, model va viewni ishlatib unga javob qaytaradi. Kontrollerda asosan ma'lumotlar filtrlanadi va avtorizatsiya bajariladi — ya'ni: foydalanuvchi bu amalni bajarishga huquqi bormi va kerakli ma'lumotlarni olib bilishi ta'minlandimi.

Ko'plab web ilovalar yaratishga mo'ljallangan freymvorklar MVC prinsipiga asoslanib tuzilgan bo'ladi. Shuning uchun ham MVC sizga tanish bo'lsa, unda bu freymvorklarni tushunishingiz oson bo'ladi 👍

👉 @lazerg
Authentication va Authorization farqi nima

👉 @lazerg
👍2