Web Overflow 🇺🇦
4.42K subscribers
380 photos
40 videos
3 files
518 links
Затишний блог про веб-розробку і не тільки 💛

Чат: @web_overflow_chat
Співпраця: @web_overflow_support
Автори: @lluchkaa & @anastasiia_tarasenko
加入频道
Всем привет! Мы никуда не пропали - у нас просто были выходные!)

Сегодня вторник, поэтому ловите новый, часто задаваемый вопрос на собеседованиях - что такое SOLID?

Впервые я узнала о SOLID в универе перед экзаменом. Это был третий курс, я уже начала работать по специальности, поэтому учеба меня мало волновала. Но диплом нужно было привезти родителям, поэтому я старалась все закрывать хоть как. Так вот: прямо перед сдачей устной компоненты, я открыла лекции с конца и увидела эти пять правил. Я была уверена, что это мне точно не попадется, поэтому не особо их запомнила, тем более они были на английском (тогда я еще не очень с ним дружила). Ну и что же произошло: преподаватель сразу же сказал, я уверен, что до конца лекций мало кто дошел, поэтому расскажи - что такое SOLID. Я начала очень уверенно, но прям с очень плохим английским рассказывать. Позор длился не долго, он меня остановил, проорал, поставил 4 за старание и отпустил. Я ушла и думала, что больше никогда это мне не пригодится. Но через пару месяцев я пыталась поменять работу и на собеседование опять этот вопрос. А потом опять и опять... Тогда я все таки решила, что нужно изучить SOLID и после этого поняла, что их важно знать каждому программисту.

Так вот, SOLID - это аббревиатура пяти основных принципов проектирование в ООП.

Расшифровка:

Single responsibility — принцип единственной ответственности - означает, что каждый объект должен иметь одну обязанность и эта обязанность должна быть полностью инкапсулирована в класс.

Open-closed — принцип открытости / закрытости - декларирует, что программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения.

Liskov substitution — принцип подстановки Барбары Лисков - «функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа не зная об этом».

Interface segregation — принцип разделения интерфейса - говорит о том, что слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические.

Dependency inversion — принцип инверсии зависимостей - модули верхних уровней не должны зависеть от модулей нижних уровней, а оба типа модулей должны зависеть от абстракций; сами абстракции не должны зависеть от деталей, а вот детали должны зависеть от абстракций.

Вот как-то так. Всем продуктивной последней рабочей недели в этому году!

#interview #собеседование
Какой файл есть обязательным для компиляции всего TypeScript проекта?
Anonymous Quiz
25%
tsconfig.js
11%
web.config
15%
аpp.json
48%
tsconfig.json
😐1
Ребят, кто еще не видел, вышло новое обновление create-react-app 5.0.

Если вы еще не делали eject, будет довольно просто обновиться на 5 версию. Всё, что нужно поправить - версия react-scripts в package.json. Тут у вас уже будет webpack 5 версии, который скорее всего вам будет нужен, если ваш проект еще собирается жить какое-то время.

Подробнее обо всех изменениях можно узнать тут: читать статью.

#tips #советы
👍3
Ребят, поздравляем вас с наступающим Новым Годом! Желаем побольше интересных проектов, добрых заказчиков и поменьше багов!

Спасибо, что вы с нами! Дальше только лучше 💛
2👍2🎉2🔥1🤩1
Я надеюсь все живы, здоровы и хорошо отметили Новый Год. Если да, тогда ловите ещё один часто задаваемый вопрос на собеседованиях: что такое паттерны проектирования? Какие Вы знаете и какие использовали?

Практически на каждом собеседовании у меня спрашивали этот вопрос. Почему? Потому что это действительно важно знать, когда проектируешь или пишешь сложный функционал. Паттерны я выучила еще в университете. Тогда преподаватель нам порекомендовал очень простую книгу, которую я изучила, пока ехала в поезде домой. Это книга Андрея Будая “Дизайн-паттерны - просто, как двери” (прикрепила в посту, одно но, она походу есть только на украинском). Лучшего объяснения я нигде не встречала.

Так вот, паттерны проектирование - это типичные способы решения часто встречающихся проблем при проектирование програм. Их есть три группы: порождающие, структурные и поведенческие (но это редко спрашивают, часто просто спрашивают какие знаете и какие юзали).

Да, когда ты на бекенде, у тебя тут очень много примеров, где можно их использовать. Из моего опыта, на фронте я юзала, например, singleton для логгера, сервисов (на ангуляре), observer на том самом ангуляре (библиотека RxJs), медиатор для сложного функционала и другие.

После книги, мой фаворит по изучении паттернов - сайт https://refactoring.guru/ru/design-patterns .

Изучайте на здоровье и принимайте важные решение в проектировании своего проекта более обдумано!

#interview #собеседование
2👍2🔥2
Генераторы - это то, что редко используется (чистая правда, возможно они вам никогда и не понадобятся), но все же, я думаю, можно уделить им немного внимания. Плюс, это не займет у вас много времени.

Ниже прикреплю статью, где можете ознакомится с их работой.

В личном опыте хорошее применение генераторов я встречал в Redux Saga.

Читать статью

#article #статья
🤩3👍21
React-toastify

Я уже наверное надоела вам своим новым проектом, но все же - недавно я копалась в библиотеках для создание уведомлений и нашла ну прям очень крутую - react-toastify. У меня уже был опыт подключении подобных библиотек, он был плохой, то стили не подключались, то сложная документация, то работали через раз. С этой такого не было, кучу настроек, делай что хочешь, как хочешь - все очень просто. Поэтому не могла не поделиться находкой.

Читать документацию

#library
🔥32🤩2
Будущее уже наступило и скоро программы будут сами писать новые программы…

Сегодня будет чуть-чуть про ИИ и то, как он поможет в разработке. Нашумевший Github Copilot еще в стадии разработки, но он уже доступен для технического preview, которого я жду уже больше полгода.

Для тех, кто не знает, что это такое, Github Copilot - ваш ИИ, который поможет в написании кода при помощи уже существующего публичного кода (например, из StackOverflow или публичных репозиториев Github). Все, что вам нужно сделать - написать объявление функции или комментарий, в котором опишете что функция должна сделать, и бинго - Copilot предложит вам реализацию. Звучит очень просто и круто.

Мне уже не терпится попробовать, но даже сейчас уже есть разные мысли. Безусловным плюсом является скорость, так как сильно сокращается время на не сильно специфические задачи. Также почти всегда код будет работать (но только не в твоем проекте), так как система будет подбирать лучшие решения. Кстати, если подобранное решение вам не нравится, всегда можно посмотреть следующее, система подгрузит множество разных. Непонятно только, что будет с вашим кодом, не начнет ли Copilot учится и на нем (все мы знаем какая приватность сегодня).

Может у кого-нибудь уже есть доступ, поделитесь мнением в комментариях, у кого еще нету, предлагаю подписаться в очередь на доступ и также рассказать, что ожидаете от такой разработки. Обязательно загляньте на сайт, там сможете более наглядно увидеть как все работает.

Открыть сайт

#article #статья
👍3🤩3
У меня плохая новость - праздники, отпуска закончились, нужно приступать к работе.

Так, как с нового года все планируют худеть, путешествовать и, конечно же, менять работу, мы решили поделиться своими инсайтами прохождения собеседований.

1. Вы не можете всё знать.
Это нормально, что вы не знаете все методы массивов, строк, не можете наизусть написать регулярное выражение. Намного важнее, как вы мыслите, какой у вас опыт, с чем вы работали, как вы общаетесь. Поэтому не нужно сразу теряться, если вы что-то забыли или не знаете.

2. Не набирайте техничных собеседований на каждый день.
Даже если вы активно ищете работу, не нужно ставить собеседования на каждый день. Это действительно выматывает. Плюс, у вас будет время подучить вопросы, которые вы не знаете или не глубоко копали.

3. Перед собеседованием обязательно ознакомьтесь с компанией.
Это даст вам возможность понять, подходит ли вам это место. Помните, что выбирают не только вас, но и вы. Зная больше о компании, во время интервью вы сможете задавать более конкретные вопросы, что будет дополнительным бонусом и покажет вас как кандидата, заинтересованного получить здесь работу.

4. Самое главное - это честность!
Всегда отвечайте честно. Если чего-то не знаете, стоит прямо об этом сказать. Не набивайте себе цену — это видно (даже если вы уверенны в обратном).

5. Отказ - это не конец жизни.
Это значит, что вам нужно лучше подготовиться или вы просто не подходите данной компании. НО, это не значит, что нужно сразу же бежать по всем другим компаниям (знаем таких), лучше проанализируйте, почему вас не взяли, пофиксайте и двигайтесь дальше.

Надеюсь, наши пройденные грабли вам помогут лучше пройти собеседования и заполучить работу мечты 💛

#experience #опыт
3👍3🔥2
Как работает прототипное наследование?

В практике очень редко нужно работать с прототипным наследованием, но это важно знать для глубокого понимания, как работает JS + этот вопрос очень часто задают на собеседованиях.

Все объекты в JavaScript имеют свойство prototype, которое является ссылкой на другой объект. Когда происходит обращение к свойству объекта, и если свойство не найдено в этом объекте, то механизм JavaScript просматривает прототип объекта, затем прототип прототипа и т.д. До тех пор, пока не найдет определенное свойство на одном из прототипов или до тех пор, пока он не достигнет конца цепочки прототипов. Такое поведение имитирует классическое наследование, но на самом деле это скорее делегирование, чем наследование.

Почитать поподробнее можно здесь - читать статью

#interview #собеседование
2🤩2
Какой output у этого кода?
Anonymous Quiz
46%
10 4
26%
10 3
10%
9 4
17%
10 0
6😱4👍2🤩1
Некоторое время назад я немножко подучил Docker. С его помощь я запускал свои или уже готовые контейнеры.

Что это значит и что такое контейнеры?

Контейнеры - это способ упаковать приложение и все зависимости в один образ. Все будет запускаться полностью изолировано и приложение никак не сможет тронуть вашу систему, пока вы сами не захотите, вам не надо ломать голову над тем, как поставить все зависимости.

Звучит немного сложновато, но если немножко посидеть, все станет понятно. А вот что действительно может пригодится - запуск контейнеров с сервисами, которые нужны вам на время. Реальная ситуация - Насте надо было поставить на время Postgres. Для меня хорошим решением был именно Docker. Мы поставили базу нажав пару кнопок, а после использования просто удалили его.

Не знаю, много ли тут девопсов, они то точно хорошо умеют использовать Docker, но я бы посоветовал каждому глянуть, что это такое, хотя бы одним глазком.

Открыть документацию

#article #статья
👍3