ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

Programming ∀

Programming ∀

Открыть в Telegram

Ushbu kanalda dasturlashga aloqador turli expriementlarim, g'oyalarim, hulosalarimni ulashaman.

Больше
1 364
Подписчики
+224 часа
+137 дней
+1130 дней
Архив постов

COVID => Chorvachilikni Ommalashtirish Vazirligining Ish Dasturi Mobodode 😶

Assalomu alaykum akalar! Bugun 22:00 da Linuxiston Telegram kanalida ovozli chat uyushtirmoqchimiz Linuxdagi muammolar va savol-javoblar tarzida. Qoʻshiladiganlarni kutib qolamiz: https://t.me/joinchat/TUmqF2RVVQJvQORl

Nodejs va typescriptda example projectlar qidirayotganlar bo'lsa. Oddiy project namunasini share qilaman. Bazi kamchiliklari bor ammo ko'rib nimadur olsa bo'ladi degan fikrdaman. Ushbu loyihani jamoamiz bilan praktika maqsadida qilgan edik https://github.com/AhmadulinJs/simple-todo-backend

Agar sizni qiziqtirgan mavzular bo'lsa izohlarda qoldiring. Keyingi safargi suxbatimizda muayyan mavzularda muhokama qilishni reja qildik InshaAllah.

Qatnashganlarga Raxmat. Ayibga buyurmaysizlar. Suxbatni yozib olmabman 🙈. Keyingi suxbatlarimizda InshaAllah bu masalani ham hal etamiz

Telegram kanalimizda jonli muloqot qilmoqchimiz umumiy IT ga oid mavzuda. Savollarga javob beramiz Agar dasturlash yoki boshqa IT sohalariga qanday kompyuter olish kerak degan savollar qiziqtirsa ushbu savollarga ham javob berish uchun aloxida mutaxassis insoni taklif qildik. https://t.me/programming_everyone?voicechat=7ef718e73c2945e477

Demak boshladik

Suxbatimiz 20:00 ga kochirildi. Buni g uchun uzr soraymiz

Dasturiy taminot arxitekturasini haqida... Odatda tajribasi kamroq engineerlar ortasida qiyin masalalardan biri bu boshlayotgan loyihasini filelar joylashuvi, arxitekturasi, Ishlatiladigan kutbxona, framework yoki qoshimcha tool yoki databaselarni (stack) tanlashda ko'p chalkashliklar va muamolar bo'ladi. Bir narsani tushunib olish kerak. Birdaniga hechqachon mukammalini qila olmaysiz. Shu sababdan oddiyroq qilishdan boshlayvering. Avvalo masalani ko'rib chiqing. Aytaylik siz oddiy blog post loyiha qilyabsiz. User system ham bor. Birinchi navbatda funksionalarni chamalab oling. Masalan User sytem Aftorizatsiya va Autentifikatsiya User profile User posts, Blog post funksionali Posts, Tagging system, Categories, Boshqa funksionalar Filtering, Searching, Sorting etc... Shu ko'rinishda sizga mavhum bo'lgan masalani yaxshilab o'rganib chiqing. Minimum eng kerakli barcha funksionalarni xisobga oling. Keyingi bosqichda esa stack. Aytaylik siz backend qurish uchun birnechta texnalogiyani (framework or programming language) bilasiz. Avvalo o'zingiz eng yaxshi bilganingizda boshlang. Shu joyida zo'r qilaman microserviceda qilaman degan yana qoshimcha yukamalar, Orzular qilib tashlamasdan minimal darajada dasturni quring. Texnalogiya tanlashda eng yaxshi bilganlaringizni tanlayvering qo'rqmay. File stukturasini ham shunday qilishni tavsiya etaman. Eng yaxshi uslublardan biri githubni titkliash va birovlar yozgan tayyor narsalarni taxlil qilib chiqish. Shunda siz o'zingizdagi xato va kamchiliklarni yoki yutuqlarni sezasiz. Birovniki bilan o'zingiznikini solishtirib ko'ring. Bitta yaxshiroq variyanti chiqsa ana o'shanga qarab loyihangizni davom ettiring. Arxitekturaga oyid bilimlar odatda loyihalarda oritirlgan tajribalar asosida yuzaga keladi. Shuning uchun ko'proq praktika qiling. Githubda siz qilmoqchi bo'lgan loyihalarga oxshagan loyihalarni titkilab ko'ring. Biror yangi stack tanalashdan oldin ham aniq faktorlarga va vaziyatga qarang. Masalan: Loyiha maqsadi ? Loyiha sizga berilgan vazifami yoki o'zingiz test uchun qilyapsizmi ? Loyihaga berilgan muddat bormi ? Shu kabi aniq kryiteralarni qo'yib olish juda muhum. Ana keyin siz qo'llab ko'rmoqchi bo'lgan yangilikni ham shunday taxlil qiling. Maqsadga erishish darajasi. Yani siz ishlatmoqchi bo'lgan texnalogiyani qo'llasa vaqt belgilangan bo'lsa kech qolmaysizmi. Muamo chiqsa hal etishga qiynalmaysizmi ?. Nega aynan shu texnalogiya ? Shu kabi aniq bir kryeteralarni qo'yib olgan maqul. Odiy misol Masalan malumotlar bazasini tanlash masalasi. Man birnecha turdagi databaselarni bilaman (SQL or NoSQL) Qaysi birini tanlashim kerak ? Eng birinchi loyihani ko'raman. Agar hammasi aniq bo'lsa. Loyiha rejasi aniq bo'lgan va o'zgarishlar kam bo'ladigan bo'lsa. Unda qo'rqmay. SQL (PostgreSQL or Oracle) tanlayman. Agar loyihada hali kop narsa mavhum bo'lsa startup bo'lsa MVP prinspda ishlanvotgan bo'lsa. NoSQL (Mongodb) tanlayman. Undan tashqari yana juda ko'plab omillar bor shundan eng muhum deb bilganlaringizni olib shular asosida aniq keyslarni qo'yib olish kerak. Shunda manfatli qaror qabul qilish onsonlashadi. Har safar loyihalaringizni boshqacharoq infrostrukturada ca style da qilib ko'rihga xarakat qiling. Bu sizga kotta tajriba beradi. Xarxil holatdagi keyslarni o'zingiz ko'rib o'rganasiz. Agar bir qolipga tushib olib shu tempda davom qilsangiz natija bo'lmaydi o'sa olmaysiz.

Agar sizni qiziqtirgan savollar bo'lsa Ushbu post izohida ham hozirdan yozib qoldirishingiz mumkun.

Assalomu Alaikum Yakshanba 28.03.2021 kuni soat 18:00 da Telegram kanalimizda jonli muloqot qilmoqchimiz umumiy IT ga oid mavzuda. Savollarga javob beramiz Agar dasturlash yoki boshqa IT sohalariga qanday kompyuter olish kerak degan savollar qiziqtirsa ushbu savollarga ham javob berish uchun aloxida mutaxassis insoni taklif qildik. https://t.me/programming_everyone

#devops #container_deploymant #vm_deployment #traditional_deployment Deployment evolutsiyasi Dasturlarni serverda ishlatishda oddiy traditional deployment dan foydalanilardi. Bu esa umumiy resurslarni boshqarishda (CPU, RAM) juda ko'plab noqulayliklarni keltirib chiqarar edi masalan serverda birnechta dasturlar ishlab turgan bo'lsa. Bir dastur ko'p resurslarni sarflashi va buni hisobiga qolganlarida resurs yetishmovchiligini keltrib chiqarib dastur ishlashida muamolar kelib chiqar edi (tezlik pasayardi vaxakazo). Buning yechimi sifatda bitta serverga faqat bitta dastur qo'yilar edi. Ammo bu resurslardan maksimal foydalanishni qiyinlashtiradi. Har bir dastur uchun aloxida real serverlar sotib olish esa qimmatga tushar edi. Keyinchalik Virtualizatsiya (Virtualization) platformalari ishlab chiqildi. Virtualized Deployment ommalashdi. Bu uslub bilan bitta real serverda birnechta Virtual mashinalar (Virtual machine or VM) ishlatish imkoniyati paydo bo'ldi. VM texnalogiyasining qulayligi bitta real server ichida birnechta virtual serverlar yaratib ishlatish va ularni ozini aloxida belgilangan resurslari bo'lishi va shu VM da aloxida dasturni ishlatish imkoni paydo bo'ldi. Xavsizlik darajasi ham yaxshilandi chunki bir VM dagi dasturdan boshqasidagi ma'lumotlarga erkin ruxsat yo'q edi. Virtualizatsiya texnalogiyasi server resurslaridan unumli foydalanishga katta imkon berdi. Dasturni deploy qilish unga kerakli resurslar bilan ta'minlash ancha onsonlashdi Har bir VM - bu virtualizatsiya qilingan uskuna ustidagi barcha operatsion tizimni o'z ichiga olgan barcha komponentlarni ishlaydigan to'liq mashinadir. Mashhur texnalogiyalar: VMware, Oracle, Citrix, E2C Konteynerizatsiya (Container deployment) Bu texnalogiya ham huddi VM ga o'xshaydi ammo asosiy Operatsion (OS) tizimni izalyatsalangan holatda containerlar aro ulashish hususiyatiga ega. Shuning uchun ham containerlar juda ihcham va yengil bo'ladi. Shu sababdan. VM ga o'xshab containerlarni ham o'z fayl tizimi, protesessor, memory (hotira), storage (doyimiy hotira) lardan ulushlari. Konteyner texnalogiyalari mashhur bo'lib ketdi. Chunki ular ko'plab qulaylik va imkoniyatlarni berdi. Ishga tushushurish va serverga joylash tarqatish tezlashtidi. Container texnalogiyalari bilan dasturni build qilib image ancha tezroq. Ushbu texnalogiya asosida qurilgan imagelar VM imagelardan hajmi ancha kichik qulay. Bu esa samaradorlikni yanada oshiradi. Doimiy ishlab chiqish, integratsiya va tarqatish (Continuous development, integration, and deployment) jarayonlarida ishonchli va tez tez image yarata olish imkoniyatini undan tashqari imagelarni ortga qaytarish (rollbacking) imkoniyatlarini ham taqdim qildi Muhitni birxiligini ta'minlash. Sizni kompyuteringiz va serverdagi muhit (envoirment) birxilday bo'ladi. Siz shaxsiy kompyuteringizda build qilgan imagelar serverda ham hechqanday muamosiz ishlaydi. OSga aloqador kamchiliklar. Masalan siz qilgand astur faqat Linux distributivlarida ishlaydigan bo'lsa ammo serverda boshqacha OS bo'lsa ham muamo yo'q )) Dasturlar birnechta qismlarga bo'lingan bo'gliq yoki aftonom xizmatlar ko'rinishda ishga tushurilishi va boshqarilishi mumkun. Resurslarni aftomatik yoki qo'bola taqsimlash imkoniyatlar. Bu esa dasturning kengayishini yanada oshiradi. Va resurslardan yuqori samaradorlikda foydalanish imkoniyatini taqdim qiladi Mashxur texnalogiyalar: Docker, Rkt, LXC(Linux Containers), OpenVZ https://t.me/programming_everyone

Linux debian/ubuntu uchun brew package managerni install qilish Mobodo kere bopqosa https://www.osradar.com/install-homebrew-ubuntu-20-04-debian-10/

ITda kelajak Ayni xozir IT dasturlash soxasini o'rganayotganlarning ko'pchiligida kelajakga aloqador savollar paydo bo'lmoqda shulardan biri - Hamma IT ni o'rganvoti dasturlashni o'rganvoti. Kelajakda ushbu yo'nalishlarda ishchilar ko'payib ish beruvchilar kamayib ketmaydimi ? Hozirgi statistikalar bo'yicha qarasak ham ayni freelance bozorlarda yana bazi bozorlarda IT mutaxasisslariga to'lanadigan haqlar biroz kamaygan. Bunga sabab karantin davrida ko'pchilik daromat biznesni IT ga bog'lagani va IT ni o'rgangani Ammo bu degani bu yo'nalishda bozor toladi degan emas. Ayni xozirgi raqamli davr yangi davr va u endi boshlandi. Kelajak esa oldinda IT o'zi ham yaqin 5 yil ichida juda rivojlanib ko'plab yangi kasblar paydo bo'lishni yoki ommalashishni boshladi. Masalan web soxasini o'zida web juda keng qamrovli soxaga ajraldi va ko'plab yo'nalishlar paydo bo'ldi yoki borlari ommlashdi. Masalan: Eng kotta yaqqol misol bu frontend va backendni yaqqol ikkiga bo'linishi. Ayni xozirgi paytda frontednchilarga backendni aloqador joyi deyarli yo'q. APIlar bilan ishlashni bilsa kifoyda. Asosan HTTP protoli va REST clientni yaxshi tushunsa va bazi ommabob API larni bilsa bo'lgani (GraphQL, JSON-RPC, Websockets). Backendda ham ayni shunday holat ularga ham HTML/CSS frontend bilimlar yuzaki bo'lsa yetarli (Agar asosan api yozsa, Template enginelar bilan ishlaydigan web applar haliham ishlab chiqarilmoqda). Oldinlari backendchilar dasturini productionga chiqarish (Deployment)ni ham o'zlari qilardilar. Xozirda Devops Engineerlarga talab ko'payib ketdi. Web dasturni relase qilish security serverlar ko'tarish loglash monitoring va admistratsiyaqilish kabi ishlarni Endilikda backendchilar emas aloxida soxa vakillari mutaxasislar qilishmoqda. Albatta backendchilarga ham bu bilimlar haligacha kerak. Ammo etmoqchi bo'lganim IT sababli ham yangi kasb turlari yo'nalishlari ish o'rinlari paydo bo'lmoqda bundan keyin ham albatta shunday bo'ladi. PS: IT hali egallanmagan bozor bu yo'nalish orqali juda ko'p muamolarni hal etsa bo'ladi. Agar ayni shu soxada Engineer bo'lib ishlabqolishni istaganlarga maslaxatim. IT dagi har bir Engineerlar bilishi kerak bo'lgan umumiy narsalarni chuqur o'rganish kerak. Algorithms data structures. Umumiy dasturlash prinsplari har bir yo'nalishning umumiy prinsplari (Albatta o'zingiz tanlaganingiznikini) Xozirda AI va ML kabi soxalar ham rivojlanayotganini xisobga olsak matematik bilimlar ham juda muhum hisoblanadi. Chunki bu yo'nalishlarining asosida matematika. Xulosa o'rnida shuni eta olamanki Har bir narsani boshlanish va tugash nuqtasi mavjud. IT yaqinda boshlanganini hisobga olsak xozircha havotir olmasak bo'ladi faqat bizdan talab qilinadigani o'z mutaxassisligimizni kuchli bilimdoni bo'lish va shu bilimlarni hayotga tadbiq qilib jamiyatga ayniqsa musulmonlarga ko'proq foydali va ularni og'irini yengillashtiruvchi mahsulotlar ishlab chiqarishdir. Agar siz ishsiz qolishdan havotir olayotgan bo'lsangiz bu soxaga kira olmaysizham degan fikrdaman. Chunki qozonda bori cho'michga chiqadi....

#mukammalik So‘ngi paytlarda ayni shu mavzuga juda ko‘p uchratgan mavzuyim ayni shu mukammallikga aloqador. Yani ayni ilmni o‘lchashda. Shaxsiy fikrimni etadigan bo‘lsam Mukammallik bu cheksizlik bilan birxik tushuncha va u bizga hos emas deb o‘ylayman. Ayni mani yo‘nalishimda IT da ham shunday savollar bo‘ladi. - Qaysi tilni mukammal bilasiz ? - Eng yaxshi texnologiya (dasturlash tili) - Eng yaxshi .... - Eng mukammal.... Qisqasi shu o‘rinda eslatib o‘tmoqchimanki har kimni o‘ziga yarasha darjasi bor va buni harkim harxil o‘lchovlarda o‘lchaydi. Masalan hammaga maʼlum dasturchilarni darajalari ham turli kompaniyalarda turli ko‘rsatkichlar va talablarga binoan o‘lchanadi. Biror narsani mukammal bilish darajasi qanday bo‘lishini bilmayman. Bu xuddi eng katta raqam nechi degan savolga o‘xshaydi. Shu sababdan ayni shu o‘lchovlar bilan biror kishini bilimini o‘lchashni ham maslaxat bermas edim. PS: Cheksizlikni cheklashdan oldin cheklangan vaqtimizni foydali narsalarga sarflashimiz kerak deb o‘ylayman negaki bizga eng kotta raqam nechi ekanini bilish manfat keltirmaydi. Bizga manfatlisi o‘sha raqamlarga oyid bilimlarni o‘rganib hayotga tadbiq qilish. Agar falon texnologiya zor falon texnologiya yomon degan mantiqda yuraversak bu bizni bilim darjamizga chegara qo‘yishimizga va shu chegaradan o‘zimiz o‘ta olmasligimizga sabab bo‘ladi. Bu boradagi baxslardan ham foyda yo‘q. Undan ko‘ra ayni shu bilmlarni o‘zaro ayirboshlasak ko‘proq narsaga va natijaga erisha olamiz. Biz uchun fosus qaratishimiz kerak bo‘lgan narsa mansab martaba bo‘lsa shunga ega bolsakda hech narsa erishmasligimiz mumkun. Masalan man Linux distrubutivelarni muhlisi bo‘lib qolganman. Mani o‘lchovim bo‘yicha Linux kerenel ustiga qurilgan OS lar eng yaxshilari. Ammo bu mani o‘lchovim. Manga Ubuntudagi yoki boshqa OSdagi kamchilliklarini etishsa. "Biz uni kamchilliklari bilan sevamiz" deyman ))). Sababi rostdan ham buni inkor qilishdan mantiq yoq chunki haq gap rostdan ham kamchligi bor. Ammo bu kamchliklar mani fikrlarimni o‘zgartirolmaydi. Shunday biror texnalogiya shaydolariga ham mukammalikga davo qilmaslikni tavsiya etaman zero bu bizga emas. Burovlardan ham o‘zingiz kutgan javobni olmasangiz u insonga nisbatan past baho bermaslik kerak. Siz nimadur so‘raganda birov bilmasligini etsa u inson hesnarsa bilmaydigan inson bo‘lib qolmaydi ))). Shu o‘rinda eslatib o‘tamanki Eng mukammal ilm (IT bo‘yicha, Dasturlash bo‘yicha) Eng yaxshi darslik Eng mukammal texnologiya yoki dasturlash tili Bular hom hayol deb o‘ylayman agar eng mukammali eng zo‘ri bo‘lsa demak chegara ana o‘sha bo‘ladi. Bu esa eng oxiri degani. Hozircha IT va texnologiyalarni eng oxiri ko‘rinmayapti ))) https://t.me/programming_everyone

Bizda frontend position ochiq. Agar hohshi balandlar bo'lsa marxamat. Frontendchilar uchun ham qiziq projectlar o'ylab bor porfoliosini chiroyli va sifatli qilish uchun 😊

#imagirnation #tassavur Fikrimga ko'ra insonga ayniqsa bizni soxa vakillariga tassavur juda muhum nemat. Negaki bo'layotgan j
#imagirnation #tassavur Fikrimga ko'ra insonga ayniqsa bizni soxa vakillariga tassavur juda muhum nemat. Negaki bo'layotgan jarayoni real voqealikda tassavur qila olish ish samaradorlikni (efficiency) ancha tezlashtiradi. Dasturchilar qanday tassavur qila olish qobilyatini kuchaytirishlari mumkun ? Avalo har narsaga doimo birnecha nuqtadan qarash kerak. Harkimni haqiqati o'zi uchun haqiqat asil haqiqat esa boshqa bo'lishi mumkun. Shuning uchun doimo shaxsiy fikrga ega bo'lish va birnecha tomonlama qarashlar ayniqsa mantiqiy qarashlar bizni sohamizda juda kerakli soft skill desa ham bo'ladi. (Chegaradan chiqmagan xolatda Inson maymundan tarqalgani, Yer quyoshni yoki quyosh yerni atrofida aylanganini bizga umuman axamiyati yoq ))) ). O'xshata bilish qobilyati. Yani masalan siz oddiy o'zgaruvchini bitta qutiga o'xshatishingiz tushunishingiz va tassavur qila olishingizni ossonlashtiradi. Oddiylik har narsa aslida murakkab ammo oddiy qaraybilik juda muhum. Masalada doimo oddiy qarash va murakkablashtirmaslik.

#clean_code #toza_kod Dasturiy taminot kodining (souce code) Sifatlovchi 4ta muhum omil mavjud 1.O'qishga ossonlik (Readabili
#clean_code #toza_kod Dasturiy taminot kodining (souce code) Sifatlovchi 4ta muhum omil mavjud 1.O'qishga ossonlik (Readability) 2.O'zgaruvchanlik (Changeability) 3.Kengayuvchanlik (Extensibility) 4.Ta'minlanuvchiligi (Ta'minlanuvchi kod) (Maintainability) PS: 4chi ominlni aniq tarjima qilolmadim (((. Ammo shuni esda tutingki siz nafaqat o'zingiz uchun, balki o'zingizdan keyngilar uchun ham kod yozyapsiz.