Engineering Blog
11 subscribers
69 photos
76 links
Software Engineer @ EPAM Systems
CS @ Millat Umidi University

Talks about:
📗 OS
📕 Networking
📙 Backend Engineering
📘 RDBMS & NoSQL
📕 DS & ALGO
Download Telegram
Engineering Blog pinned «https://telegra.ph/Epamdan-Internship-Oldim-10-07»
Forwarded from Vohid Karimov (Vohid Karimov)
Summer 2024 uchun Googleda internship o'rinlar uchun applicationlar ochildi:
Software Engineering, Site Reliability Engineering Intern, 2024
— Bachelor's and Master’s degree
— Application dates: Sep 18th, 2023 - Oct 27th, 2023
— Locations: Aarhus, Budapest, Dublin, London, Munich, Paris, Stockholm, Zurich
— Coding experience: C++, Java, Python, or Go
Software Engineering, Site Reliability Engineering Intern, 2024
— Bachelor's and Master’s degree
— Application dates: Sep 18th, 2023 - Oct 27th, 2023
— Locations: Bucharest, Warsaw, Kraków
— Coding experience: C++, Java, Python, or Go
Research Intern, 2024
— PhD degree
— Application dates: Sep 18th, 2023 - Oct 27th, 2023
— Locations: London, Zurich, Berlin, Munich, Grenoble, Paris, Amsterdam
— Coding experience: Java, C++, Python, or Go
Student Training in Engineering Program, STEP 2024
— Bachelor's and Master’s degree
— Application dates: Sep 18th, 2023 - Oct 27th, 2023
— Locations: London, Zurich, Munich, Paris, Dublin
— Coding experience: Java, C++ or Python
Student Training in Engineering Program, STEP 2024
— Bachelor's and Master’s degree
— Application dates: Sep 18th, 2023 - Oct 27th, 2023
— Locations: Bucharest, Warsaw
— Coding experience: Java, C++ or Python
va boshqa intern o’ringlari

Internship o’rinlari aslida 18chi sentyabrda ochildi. Men habar berishga sal kechikdim. Hechdan ko’ra kech, topshiramiz! 🎯

Googlerlar orasida ko’proq o’zbeklarni ko’rishni xoxlayman. Savollar bo’lsa shu post ostida qoldiring, javob berishga harakat qilaman.
Forwarded from Otabek’s I/O
S.O.L.I.D

Agar umringizda OO code yozib ko'rgan bo'lsangiz demak siz albatta ushbu paradigm haqida eshitgansiz. Balkim tushunchalar unchalik ham zo'r bo'lmagandir ammo keling bugun shu haqida gaplashamiz (kamchiliklarini esa kelasi epizodda yozaman).

Single Responsibilaty

Har bir class faqat bitta ma'suliyatli ishni bajarishi kerak!

Open degan class yaratdingiz, unga nimani ochishni qizig'i yo'q DB connection och desangiz uni ham qilaveradi, fileni "w" modeda och desangiz uni ham qilaveradi umumman farqi yo'q. Ammo bu noto'g'ri yechim chunki bitta classni vazifalari qancha ko'paysa shuncha ko'p buggy bo'lish ehtimoli ham ko'payadi. Uning o'rniga esa OpenDBConnection, OpenFile va OpenFolder degan classlar yaratish tavsiya qilinadi.

Open-Closed

Classlar kengayish uchun ochiq, ammo modifikatsiya (o'zgarish) uchun yopiq bo'lishlari kerak

Misol uchun OpenFolder classini olaylik. Shu classga faylni ham open qilish imkoniyatini berish mumkin ammo, classdagi imkoniyatlarni o'chirmagan yoki o'zgartirmagan xolda. Misol uchun. O'sha folder ichidagi fayllarni ochish uchun alohida method (open_file(filename: str, mode: str)) yozib chiqishingiz va simplicity maqsadida OpenFile classidan foydalanishingiz mumkin. Bu orqali esa qo'shimcha logika yozmaysiz shunchaki tepada aytilganidek yagona maqsadli klasslardan birini ishlatgan bo'lasiz :)

Liskov Substitution

Agar B class A classidan inheritance olgan bo'lsa, B class objecti A class objectini o'rnini bosa olishi kerak hech qanday o'zgarishlarsiz.

Ho'p nimalar bo'layabdi deyishga shoshilmang, qisqacha aytganda Kofechini o'g'li ham kofe tayyorlashni bilishi kerak. Agar "hey dadang ishga kelmabdi menga kofe qilib ber" deyishsa "mana suv iching kofe qilishni bilmayman" demasdan kofe qilib berishi kerak o'sha o'g'il degan ma'noni bildiradi. Ya'ni child class objecti, parent class objecti qila olgan ishlarni qila olishi kerak demoqchi. Menimcha bunga qandaydir chuqur misol keltirish shart emas deb o'ylayman, shu yetar )

Interface Segregation

Mijozlarga kerakmas bo'lgan narsalarni, ular ishlatishiga majburlamaslik kerak

Misol uchun OpenFile classiga databasega ulanish kerak emas. Va uni bunga majbur qilishga doir ishlarni uni ichida bajarish shunchaki useless. Ya'ni class faqat o'z vazifasiga tegishli ishlarni bajarishi kerak. Yana ham aniqroq aytsak static methodlar ham eval degani aylanay 😉

Dependency Inversion

High-level modullar yoki classlar low-level modul yoki classlarga bog'liq bo'lmasligi kerak. Buning o'rniga ular abstractionga bog'liq bo'lishi kerak

High-level class: ishni bajaruvchi.
Low-level class: ishni bajaruvchi qurol
Abstraction: Shu ikkisini bog'lovchi o'rtakash (connector)

Misol uchun Televizorni olaylik. Televizorni pulti o'zida yoki ichki mehanizmga bog'lanmasligi kerak. Agar shunday bo'lsa televizordagi o'sha qism buzilsa ham usta chaqirasiz, boshqa qism buzilsa ham usta chaqirasiz. Uning o'rniga esa pultni alohida masaofaviy boshqaruvga o'tkazishingiz mumkin bo'ladi. Pultni batareyasi o'chsa televizorni emas pultni ochasiz. Pult buzilsa televizorni emas pultni tuzatasiz . Xullas abstraction bu yerda ikkisini bog'lovchi tizmda aylanay )

Yuqoridagi tushunchalar to'liq yoritilmagan va ushbu yo'llar bilan yoritilishidan maqsad oson tushunish uchun va umumiy tushunchalar berildi. Keyingi sonlarda har biriga alohida, pros-and-cons qilib to'xtalib o'tishga harakat qilamiz.

@otabekswe
LeetCode 2023 Badgelarni tarqatishni boshhlapti!
1👍1
Forwarded from Engineering Notes
Bugun biroz vaqt ajratib telegramdagi o'zbek tilidagi biror texnologiyaga oid communitylardagi savollarga qarab chiqdim. Aksariyat savollarda umuman ma'no yo'q. Savol yozgan odam nima qilayotganini o'zi ham bilmaydi. Aksariyat savollar matni shu darajada didsizlik bilan yozilgan-ki, o'qiging kelmaydi.

Bu bilan kimningdir ustidan kulmoqchi emasman. Aytmoqchi bo'lganim, ko'pchilik aytayotgan "O'zbekistonda dasturchilar ko'payib ketdi" dagan gapga qo'shilmayman. Dasturchilar haliyam juda kam. Qolgani yaxshi dasturchi bo'lishni hatto xohlamaydigan* yigit-qizlar. Xuddi oliy ta'limdagidek: Talabalar soni bir necha baravar ko'paygan bo'lsa ham sifatli kadrlar soni juda oshib ketgani yo'q. Shunchaki diplomi borlar ko'paydi.
👍2