Чашка Кода
467 subscribers
254 photos
5 videos
1 file
161 links
👋 Я - Никита, Senior разработчик, автор курсов по Python-разработке. Пишу на Python и Rust

✏️ В этом канале посты, которые сделают твой путь к веб-разработке проще

Задать вопрос, позвать на конференцию, записать со мной курс/статью/подкаст
👉 @PySage
Download Telegram
👻 Страшные тайны ООП 2

Сегодня продолжаем изучать тайны ООП. А если вы пропустили предыдущий пост - обязательно читайте.

Мы определили проблему. Задача: "не повторять один и тот же код и сделать код простым". Для решения этой задачи мы воспользуемся Наследованием.

1️⃣ Код 1.
Мы разработали персонажа для игры. Пока всё просто и понятно. У нас есть класс, который выполняет определённые действия.

2️⃣ Код 2.
Мы хотим добавить классы Warrior и Archer с общей реализацией всего, кроме метода атаки. Стоит вынести общие методы в общий класс. Для этого мы воспользуемся механизмом наследования:

Наследование позволяет нам объединить схожие части в один класс.


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

3️⃣ Код 3.
Расширим классы, добавив новый метод специальной атаки. Так как этот метод имеет уникальную реализацию у каждого класса, то реализация должна быть внутри класса наследника. В абстрактном классе мы добавляем абстрактный метод.

4️⃣ Код 4.
Если мы хотим добавить класс Paladin расширяющий Warrior, то проблем не будет. Мы добавляем уникальный дополнительный метод в новый класс. Paladin сможет использовать как новый метод, так и все методы Warrior.

В случае с TrainingDummy всё сложнее. Те методы, которые этот класс не может использовать мы обязаны переопределить, добавив вызов ошибки, что будет сложно поддерживать!

🌻🌻🌻

Наследование не просто позволяет нам удобно объединять общее поведение. Любые исключения приведут к большим изменениям. В итоге, каждое изменение приводит к дорогому рефакторингу. Изменения "верхних" классов приводят к изменениям всех "нижних" классов.

Наследование требует объединить общие детали в один класс!

Какие есть альтернативы - знают те, кто был на выступлении. А ты знаешь? Пиши об этом в комментарии!🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
222🤔11
🩸 Недавно я публиковал пост, в котором предлагал вам подумать, что не так с кодом на картинке. Сегодня я сделаю разбор этой задачи.

У нас есть рабочий код, это важно! Он запускается и всё с ним хорошо. Но в чём же проблемы?

💬 В коде нарушены стилистические нормы. Причём все ошибки связаны с импортом модулей. Представьте, что вам нужно добавить ещё один импорт. Куда вы его напишите?

Решить все эти проблемы можно простой командой
isort .
Не забудьте установить её 😅

🔄 Что делает isort? Это самый простой линтер. Линтер "причёсывает" наш код, делая его единообразным и комфортным для работы. Линтер isort работает только с импортом, сортируя и группируя их по секциям и типам.

Использование isort - это самый простой способ повысить качество кода, не прикладывая усилий. Помните, что:

Ваш уровень больше всего определяет простой и понятный код!
Please open Telegram to view this post
VIEW IN TELEGRAM
42🤔111
⚡️ 24 февраля в Школе 21 я провел лекцию "Как получить оффер Х2"

Сегодня я хочу поделиться выжимкой из своего прошедшего выступления. На нём мы обсудили, как поднять свой грейд и получить оффер с зарплатой в два раза больше текущей.

На выступлении я рассказал:
✔️ Какие есть секреты на любом техническом собеседовании
✔️ Разобрал реальные вопросы из этого поста
✔️ Какие навыки нужны, чтобы поднять свой уровень разработки

Читайте полезное по
ссылке 🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
8221
ვადასტურებ
🤔333311
🌷 Короткий пост для пятничного обсуждения

Тезис: «Если компания предлагает сделать тестовое задание, то работать в такой компании не стоит».

АРГУМЕНТЫ «ЗА»
✔️Если компания не готова оплачивать ваше время, то и ценить вас там вряд-ли будут.
✔️Скорее всего у такой компании нет времени на собесы, поэтому отсеивает кандидатов, используя тестовое.

АРГУМЕНТЫ «ПРОТИВ»
Если у вас нет реального опыта, то решение тестовых поможет вам его получить.
Сделать тестовое обычно не сложно. Делают его редко, так что у вас будет преимущество.

Пишите свои аргументы «за» и «против» этого тезиса в комментарии!
Please open Telegram to view this post
VIEW IN TELEGRAM
4221
ФРОНТ 🫥 БЕК

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

У нас есть «фронт»:
🟣Социальная сеть - лента картинок с подписями от других людей.
🟣Лента со списком людей, на кого ты подписан.
🟣Лента того, что ты публиковал.

Как это всё должно работать?
Мы используем REST-подход. Вообще есть альтернативы, но о них расскажу потом. REST проще и популярнее.

У нас есть клиент, который делает запросы к серверу. На сервере мы определяем роуты (маршруты, эндпоинты):

🟣mysite.ru/posts
🟣mysite.ru/subs
🟣mysite.ru/my_posts

На фронте (клиенте), при нажатии на "посты", пользователь переходит по первой ссылке mysite.ru/posts. Бек (наш сервер) должен вернуть все данные, чтобы фронт их отрисовал.

В данном примере фронт нас вообще не интересует, поэтому разберём, что мы делаем на беке.

Бизнес приходит к нам с типичными задачами, все они описываются примерно так:

➡️ Запустить сервер, который будет отлавливать обращения с фронта
➡️ Научиться распознавать, какой роут был использован (posts, subs. my_posts)
➡️ На каждое действие возвращать клиенту данные в удобном виде
➡️ При обращении к subs, надо проверить кто текущий пользователь (значит, что нужна система авторизации). Для текущего пользователя сходить в БД и получить всех, на кого он подписан. Вернуть JSON со списком этих пользователей.

Этот пример можно бесконечно расширять, добавляя новую функциональность. Если вы можете справиться с таким (язык и фреймворк не важны, ведь это лишь инструмент), то вы готовы к собесам! 👨‍💻

Пишите в комментарии, если хотите подробный пост про REST, JSON или клиент-серверное взаимодействие. Я как раз закончил записывать урок про это для курса. 🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
5331
Друзья, как проходит ваша рабочая неделя после затяжных выходных?

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

Что выведет этот простой код на картинке?
🔽
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤔111
Если вы настоящий разработчик, то у вас постоянно будет желание что-то автоматизировать (кроме кода)!
9🤔222
⭐️ Примеры паттернов проектирования

Даже если вы уже читали книгу «Паттерны проектирования», вы можете не справится с одним популярным вопросом собеса. Если вас попросят привести примеры паттернов, вы можете подумать, что никогда не работали с ними.

Это не так!
Если вы пишите код на Python, то вы используете паттерны каждый день. Привёл для вас 5 примеров, которые пришли мне на ум первыми.

* Замыкание — функция, которая создаётся каждый раз во время её выполнения.

➡️ Хотите примеры для остальных 18 паттернов?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5431
🥸 Парадокс Даннига-Крюгера

Лучший показатель вашего уровня — это синдром самозванца. Согласно исследованиям Даннига и Крюгера:
Менее компетентные люди имеют более высокое мнение о своих способностях, чем более компетентные.


Схожее рассуждение встречается и у Лао-цзы, Сократа, Конфуция и других философов и учённых:
Зная мало мы считаем, что знаем много, а зная много мы скрываем это.


Исследование 1999 года сформировало эту гипотезу и подтвердило её исследованиями. Скорее всего вы замечаете это и на себе:

▶️ ПИК ГЛУПОСТИ
В момент получения первого оффера вы будете уверены в своих знаниях больше всего. Не поддавайтесь этому конгитивному искажению! Оно поможет вам пройти собеседования за счёт уверенности, но из-за него вам сложно будет признать свою неправоту. На диаграмме это "Пик глупости".

▶️ ДОЛИНА ОТЧАЯНИЯ
Устроившись в компанию вы подумаете, что ничего не знаете - сработает синдром самозванца. Именно в этот момент вы в среднем хорошо знаете сферу. Вы понимаете в чём слабы, но не забывайте, что есть то, в чём вы сильны. Зафиксируйте то, что вам кажется непонятным и изучайте. На диаграмме это "Долина отчания".

▶️ СКЛОН ПРОСВЕТЛЕНИЯ
Почувствовав, что вы понимаете достаточно много, не останавливайтесь в изучении! Попробуйте расширить свои знания в других темах, возможно даже не в программировании. На диаграмме это "Склон просветления".

▶️ ПЛАСТО СТАБИЛЬНОСТИ
Согласно исследованию, дальше начинается "Плато стабильности", старайтесь не забывать, что зачастую специалисты развиты только в той сфере которой они заняты. Изучайте новые технологии и инструменты если хотите продолжать развиваться.
Please open Telegram to view this post
VIEW IN TELEGRAM
332