Programming Mentor
3.5K subscribers
165 photos
1 video
13 files
356 links
Ти живеш, поки вчишся
Download Telegram
Заморозка

Бувають ситуації, коли в коді варто обмежити модифікацію об’єкта, для цього в JS є три методи з різною “суворістю” обмежень.

a: Object.freeze() - це найсуворіший метод з трьох. Він заморожує об'єкт, забороняючи додавання, видалення та зміну властивостей. В нашому прикладі спроба змінити, додати чи видалити властивість не пройде.

b: Object.seal() - цей метод дозволяє змінювати існуючі властивості, але забороняє додавання та видалення властивостей. В нашому прикладі спроба змінити властивість пройде, але спроба додати нову властивість, чи видалити існуючу - ні.

c: Object.preventExtensions() - цей метод найменш суворий, дозволяє змінювати та видаляти існуючі властивості, але забороняє додавання нових властивостей. У нашому прикладі спроба змінити властивість чи видалити існуючу пройде, а лише додавання нової - ні.

Зверніть увагу, що всі три методи працюють на верхньому рівні об’єкта, і якщо нам треба заморозити, враховуючи всі вкладені, треба робити “глибоку заморозку” (deepFreeze) - це не є стандартною фічею JS, для цього треба взяти існуючу бібліотечку, чи написати код самостійно.
👍232🔥2
Зустрічаємося на події в телеграм-каналі DOU | Front-end за півгодини
3
Forwarded from DOU | Front-end
Зустрічайте новий формат на DOU — лайвкодинг! Ви просите — ми робимо 💥

📅 22 липня об 11:00 у цьому телеграм-каналі готуватимемось до інтерв’ю з кодування для джуна в JavaScript🔥

В’ячеслав Колдовський, Competence Manager, Programming Mentor в SoftServe покаже, як має виглядати інтерв’ю з кодування, які потрібно ставити запитання, як вирішувати завдання, на що звертати увагу, щоб пройти його успішно. Зробимо кілька типових задачок, розберемо типові помилки.

Діліться з колегами, запрошуйте друзів, беріть кота — буде цікаво 😎

#DOU_LiveCoding
9🔥5🥰1
Сьогодні провели воркшопчик про Coding Interview для Junior з JavaScript.

Хоча ми фокусувалися на достатньо базових питаннях для інтерв’ю з розрахунку, що дивитися будуть люди, які взагалі ще ніколи його не проходили, інформація валідна для різних рівнів розробників - і мідлів, і сеньйорів в тому числі.
Також хоча приклади у нас на JavaScript, вони типові для будь-якої мови програмування.
Запис події розмістив у себе на Youtube-каналі, якщо пропустили дуже раджу продивитися https://youtu.be/0BMc9GFeYFg?t=00
В описі відео є посилання на слайди, звідти можна взяти код і самому поекспериментувати.

PS. Окремо зазначу, що сьогодні останній день, коли можна доєднатися до поточної групи мого “джедайського” курсу JavaScript+TypeSctript, наступна група буде вже восени. Реєстрація через сайт курсу: https://sj42.programmingmentor.com/
👍327
Single Responsibility

На інтерв’ю часто питають про SOLID.
Розберемо по буковках, сьогодні літера “S” - Single Responsibility Principle.

Допустимо, маємо такий код, як у функції createUserAndSendWelcomeEmail, що з ним не так?
Проблема в тому, що тут функція робить одночасно кілька речей - перевіряє коректність адреси, створює користувача, надсилає email.
І це не є добре, бо цей код має багато недоліків - окремі його частини не можна перевикористати, тести написати складніше, зрозуміти його та підтримувати складніше - і це не весь перелік.

То насправді його доречно “розрізати” на окремі функції, кожна з яких робить мінімальну можливу частину роботи. В цьому і полягає SRP. Хай загальна кількість рядків зросте, але якість коду буде суттєво вищою.
👍459🔥4
Коли я вперше побачив роботу ChatGPT, то спрогнозував, що за рік практично всі розробники почнуть користуватися ним чи іншими AI-тулами, ось ми напівдорозі :)
👍21🔥51
Продовжуємо про принципи SOLID, сьогодні у нас літера “O” - Open-Closed Principle

Open-Closed Principle (Принцип Відкритості/Закритості)
є одним з п'яти принципів SOLID, які відносять до фундаментальних в об'єктно-орієнтованому програмуванні, проте я вважаю його важливим для програмування загалом, не лише ООП.

Формулюється він так:

- Відкритий для розширення: Модуль (клас, функція тощо) повинен бути відкритий для розширення. Це означає, що його поведінку можна змінювати додаванням нового коду.
- Закритий для змін: Існуючий код модулю не повинен модифікуватися, коли додається нова функціональність.

З точки зору практичного застосування Open Closed Principle заохочує розробників писати код, який можна розширювати без необхідності зміни вже існуючого коду. Це сприяє стабільності, зрозумілості коду, та полегшує супровід.

Якщо цього принципу не дотримуватися, то з проєктом будуть проблеми - додавати функціональність складно, повільно, баги будуть з’являтися навіть там, де все раніше працювало.

Тепер приклади:

a: Погано - цей приклад показує функцію calculateArea, яка обчислює площу фігур в масиві, не дотримуючись принципу відкритості/закритості. Функція працює лише з конкретними типами фігур і буде потрібна зміна коду для підтримки нових типів фігур.

b: Добре - цей приклад демонструє дотримання принципу відкритості/закритості. Кожна фігура (як наприклад Circle або Square) має свою власну метод area(), і головна функція calculateAreaOpenClosed може працювати з будь-якими фігурами, що мають цей метод. Коли треба додати нову фігуру, головну функцію не потрібно змінювати, що забезпечує відповідність до принципу відкритості/закритості.
👍297👏1
Сьогодні кілька слів про NodeJS

Вперше з NodeJS почав працювати, коли ми робили стартап у 2014-2015.

Тоді то була досить диковинна річ, з бібліотеками/фреймворками все було не дуже просто і взагалі, на той час було багато упереджень проти використання JS на сервері, а про тайпскрипт тоді практично ніхто нічого не чув.

Але саме тоді я відчув небачений раніше рівень задоволення від роботи з проєктом, у якого на фронтенді і бекенді одна мова, бо до того часу я переважно писав на C#, і якщо доводилося працювати паралельно з фронтенд-кодом на JS, то необхідність постійно переключатися між двома мовами дуже дратувала.

Ще десь в той час грався з MeteorJS, який дозволяв писати код не розбиваючи його на фронтенд/бекенд, шкода що той фреймворк не вистрілив.
Але зараз з серверними компонентами реакту та метафреймворками по типу NextJS схоже відбувається спроба зайти на бекенд з іншої сторони і це насправді дуже добре, давно назріло я би сказав.

Проте для цього варто підівчити NodeJS, бо незважаючи на те, що це всього-навсього платформа для виконання JavaScript, у неї є своя специфіка під час розробки рішень, з якою варто розібратися.

Тому зараз, якщо ви вже вивчили JavaScript для фронтенд-задач, я би радив підівчити NodeJS навіть якщо безпосередньо бекендом не займаєтеся - бо все виглядає так, що це тренд, який не варто пропускати, і без знань ноди навіть у фронтенд брати не будуть, не говорячи про full stack.

Повчити ноду пропоную на нашому практичному курсі, який ми щойно відкрили в SoftServe Academy https://career.softserveinc.com/en-us/technology/course/practical-nodejs
Тут буде швидке практичне занурення в специфіку платформи плюс популярні фреймворки.

Також є сьогодні на ДОУ опублікували свіженький список питань по NodeJS, дуже гарно щоб себе перевірити https://dou.ua/lenta/articles/interview-node-js/

Ну і якщо ще питання по JavaScript/TypeScript у вас не закрите - приходьте на мій джедайський курс, вже відкрита реєстрація на осінню групу https://sj42.programmingmentor.com/. Як завжди, є сенс реєструватися заздалегідь - можете відразу почати працювати з матеріалами/завданнями у власному темпі, плюс привабливіша ціна.
👍34🔥75
Порівнювати мови можна по-різному :)
😁47🔥8👍62
ДОУ організовує мітапчик в Києві в офлайні, має бути цікаво. Попрошу ще застрімити, бо зараз якщо події не має в записі - значить не було події :)

PS. Підтвердили, що запис буде, над стрімом подумають :)
10
Forwarded from DOU | Front-end
Спільното, новина — пушка 💣
Запрошуємо всіх на офлайн-мітап DOU для Front-end розробників 🎉

Зустрінемось, поспілкуємось, познайомимось! В програмі лекції досвідчених спікерів, нетворкінг, розіграш подарунків від партнерів та фуршет, куди ж без нього 😎

Подія відбудеться 29 серпня о 18:00 в iHub (локація є одночасно й укриттям).

Реєстрація за лінком 👉 https://dou.ua/goto/G0cE
Деталі івенту 👉 https://dou.ua/goto/3DpO

До зустрічі!
👍103
Реальний скрін реальної апки. Хто щось зробив не так? :)
😁242👏2
Я зазвичай не організовую збори, лише регулярно сам доначу, і зараз спостерігаю що рухаються вони все складніше.
Але цього разу прошу допомоги у зборі, він не військовий, а на лікування дитині, і тому закрити його зараз особливо тяжко.
Людину, що збирає кошти знаю особисто, також просив його надати підтвердження, він надавав документи.
Це мій колишній студент Андрій, він збирає кошти на операцію на серці своєму крихітному племіннику, який народився у 20-го червня цього року і ще не прожив навіть двох місяців.
Ось банка на збір, прохання допомогти https://send.monobank.ua/jar/3NWDTy2mb2
👍3111
Коли онуки спитають, чим дідо займався під час війни, то буде що розказати. А поки можу сказати лише одне - гарні справи люблять тишу (сьогоднішньої трагедії в Чернігові це особливо стосується).
🔥69👍31🥰5👏3
Тут на AIN зробили статтю про довгожителів в SoftServe, я туди теж потрапив, бо вже 10+ рочків набігло, і це найдовший час, коли я працював в одній компанії. 🙂

Час біжить швидко і свій перший робочий день добре пам’ятаю, наче це зовсім недавно було.

Коли йшов працювати в компанію, то був вибір піти розробником, мені пропонували кілька сеньйорних і лідовських вакансій, але свідомо хотів саме в навчальний підрозділ, бо відчув, що навчати драйвить більше ніж просто робити проєкти.

Роботу над проєктами вдається поєднувати з тим щоб навчати і проводити тренінги, і це, на мій погляд ідеальний баланс для кар’єри, в результаті якого я зрозумів, що став значно кращим розробником, ніж коли просто писав код. Особливо гарячий період був, коли з друзями робили стартап - тоді по вечорах до пізньої ночі кодив для нього, а вдень працював з трейнішками в академії, вивчаючи разом з ними речі, які потім відразу використовувалися в стартапі. Зі стартапом, до речі, ми непогано вистрілили, але то історія для іншого разу.

Зараз я з командою академії займаюся проведенням і розробкою великої кількості навчальних рішень і це дуже драйвить, ти відчуваєш себе постійно в тренді технологій, постійно вчишся сам, що взагалі є особливістю галузі. І тих хто не вчиться - чи не бажає, чи не вміє цього робити, вона просто не тримає, та й загалом я б не радив таким людям до неї йти, бо нічого гарного їх там не чекає, а для всіх - welcome, профілактика Альцгеймера гарантована 🙂
👍59🔥157
Вітаю зі Святом Державного прапора України, плюс маємо сьогодні ще професійне свято - День Інтернавта https://home.cern/news/news/computing/internaut-day-and-world-wide-web
В цей день у 1991 запустили перший веб-сайт, практично співпадає зі святом нашої незалежності :)
42👍10🔥1
Зустрілося в твіттері, вірніше в Х, як він зараз називається. Не міг не перепостити :)
👍51🔥6😁41👏1
На практиці часто виникає потреба під час розробки дати потестити запущений в себе локально проєкт, зазвичай для того треба встановлювати якісь тули, десь реєструватися.

Але чи знаєте, що є такий інструмент, який дозволяє це зробити без інсталяції навіть під Windows, треба лише щоб SSH-ключі були (згенерити можна наприклад так ssh-keygen -t ed25519).

Далі вбиваєте команду ssh srv.us -R 1:localhost:3000 і все - отримуєте веб-адресу з вашим сервісом в інтернеті без реєстрацій і СМС :)
👍672