⚡️Мы завели канал в Макс!
Подписывайтесь на нас по ссылке, чтобы не потеряться!
Канал в Телеграм мы продолжим вести. Также напоминаем, что у нас есть группа в VK.
Расскажите, пользуетесь ли Макс? Выбирайте ответ в опросе!
Пока нейросети захватывают мир, холивар на тему Django vs FastAPI так и не решен
Часто видим одну и ту же боль: у вас здоровенный монолит на Django, куча легаси или сложная админка. Но задачи по API становятся всё более капризными: нужна строгая типизация, авто-доки и нормальная валидация. DRF не предлагать — с ним еще хуже, чем без него, уже тошнит от сериализаторов-мутантов.
Переписывать всё на FastAPI (и плодить зоопарк микросервисов на ровном месте) — неоправданный суицид.
❓Что делать?
✅Затаскивайте в проект Django Ninja.
💥Главная киллер-фича — нативная дружба с Pydantic (а в последних версиях — и с Pydantic v2).
✍️Типовые проблемы → Решения Ninja:
Проблема: Данные приходят грязные, строки вместо чисел, даты в диком формате.
Ninja: Просто описываете модель Pydantic’ом. Всё. Автоматическая валидация, coercion типов и JSON Schema.
Проблема: Вложенные объекты валидировать больно.
Ninja: Схемы вкладываются как матрёшки, глубоко и без боли.
Проблема: OpenAPI/Swagger документация вечно устаревшая.
Ninja: Доки генерируются автоматически из ваших type hints. Код = Документация. Никакой магии и декораторов-уродцев.
⚔️Django Ninja vs FastAPI: война, которой нет
Зачем Ninja, если есть FastAPI и SQLAlchemy?. Ответ прост: экосистема и реальный мир.
✅ Когда вы выбираете Ninja вместо FastAPI:
Монолит Django: У вас уже есть модели Django ORM, админка, система аутентификации. Ninja просто садится сверху как современный API-слой, не требуя переписывать бизнес-логику.
Сложная аутентификация: Бесшовная интеграция с сессиями Django, куками и встроенной User моделью. Не нужно городить велосипеды на JWT, если используются сессии.
Синхронность: Django ORM в основе своей синхронна. FastAPI с async SQLAlchemy требует дисциплины и легко ловит «зеленые потоки» на продакшене. Ninja работает в родной среде без сюрпризов.
Батарейки в комплекте: Кэширование, очереди (Celery), ORM с Signals — всё это стабильно работает в Django и ломается, если начать переезжать фрагментами.
🚀
✅Как внедрить ИИ и получить прибыль, а не убытки?
В апреле мы выступали для бизнес-клуба «Гермес»! Собрали главные тезисы и кейсы из выступления в статью!
➡️ Читайте и делитесь своими кейсами использования ИИ в комментариях!
⚡️Обновили урок из мини-курса «API веб-сервисов»
Урок 5 из модуля «API веб-сервисов» долгое время был одним из самых любимых и популярных. Ученик парсил данные по API и прикидывал какую зарплату станет получать после курса на HH.ru и паре других сервисов.
И сейчас это более чем актуально, ведь около 67–75% компаний и рекрутеров используют технологии искусственного интеллекта и автоматизированные ATS-системы (Applicant Tracking Systems) для первичного отбора и скрининга резюме.
Уже видели мемы про разговор ИИ-рекрутера и ИИ-кандидата? ИИ пишет резюме, ИИ фильтрует резюме. А API позволяет легко подключить бота, парсить вакансии и откликаться на них. В итоге количество откликов зашкаливает, просмотреть всех в принципе невозможно, найм превращается в безумие!
❗️HH в конце прошлого года принял важное решение — закрыть публичное API, чтобы снизить накал страстей. По факту API работал до апреля текущего года. И наш урок тоже.
Нам пришлось все-таки искать другую площадку, на которой можно парсить зарплаты. Обновили урок «Прикиньте будущую зарплату» — hh.ru заменен на habr.career. Навыки по работе с API те же, но размах не тот, конечно.
➡️ А вы проходили мини-курс API веб-сервисов? Какой ваш любимый урок? Делитесь в комментариях!
🤔 Давайте вместе разберемся, что не так с этим кодом?
owners = flat.owner.all()
👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.
➡️Пишите в комментариях, что можно исправить!
Мы в Макс
Неправильная форма числа ведёт к обманутым ожиданиям и ошибкам. Если related_name в ManyToManyField указан в единственном числе, то запросы с его участием будут выглядеть странно и неожиданно.
Код из нашего примера может выглядеть так:
owners = flat.owners.all()
💙Спасибо вам, что делились своими вариантами в комментариях!
Мы в Макс
Что не так с регулярками (regex)❓
Все хвастаются, что знают регулярки (regex). Даже на собесах про них спрашивают. Но никто не говорит, что с ними не так. Исправляем ситуацию.
На первый взгляд регулярки — это простая и мощная утилита: скопировал, вставил, шустро работает, мало кода.
❗️Но дьявол кроется в деталях:
1️⃣Ты вставляешь выражение в код 15 минут, а через месяц не можешь прочитать.
❓Что делать:
👉 разбить выражение на простые строки с комментариями, используя re.verbose()
import re
pattern = re.compile(r"""
\b # Граница слова
(?P<year>\d{4}) # Год (4 цифры)
- # Разделитель
(?P<month>0[1-9]|1[0-2])# Месяц (01-12)
- # Разделитель
(?P<day>0[1-9]|[12]\d|3[01]) # День (01-31)
\b # Граница слова
""", re.VERBOSE)
2️⃣ Тестирование и доработка регулярных выражений превращается в ад — максимум времени и минимум стабильности.
❓Что делать:
👉 использовать для тестирования сервисы вроде https://regex101.com/,
👉 написать автотесты.
3️⃣ После того, как готовы автотесты, все проверено и доработано возникает вопрос — а зачем? Это было уже совсем не быстро, дешево, сердито!
✅Выход:
👉 Сразу ищите готовую библиотеку, которая закроет вашу проблему: phonenumber для валидации номеров или urlparse для работы с URL адресами.
❌ Не заменяйте регулярку на 100500 if-else. Это убьет читаемость и стабильность кода!
🤔А регулярки то нужны вообще?
Да. Для очень простых случаев вроде [a-zA-Z0-9]+. А еще они часто под капотом тех самых библиотек, при написании которой были вбуханы ресурсы на отладку и тестирование, а вы используете готовый результат.
Очень редко, но все-таки приходится писать свои сложные регулярки, но тогда готовьтесь — по трудозатратам придется написать библиотеку.
Чистого всем кода!
Мы в Макс
Получили интересный вопрос по ИИ от Ольги. Давайте вместе разбираться!
Какие навыки нужны разработчику, чтобы не тормозить при внедрении ИИ в разработку
Сразу оговоримся — речь не про обучение нейросети на своем сервере, а использование универсальной LLM модели вроде DeepSeek или ChatGPT.
Часть 1. Писать промпты?
Да, промпты точно нужно уметь писать. Но не в том смысле, что надо владеть неким тайным кунг-фу, магической структурой или писать «пиши код как сеньор». Достаточно ясно и сухо изложить суть проблемы и желаемый профит, а формулировать задачу и ее результат должна нейросеть.
✍️ Не пишите инструкцию
Надо излагать ценность и проблемы, мешающие ее получить, а не писать ИИ инструкцию что делать. Это базовый прием, повышающий качество работы.
Пример
❌Плохо:
Напиши скрипт, который конвертирует svg картинку в png.
✅Хорошо:
Напиши скрипт, который поможем мне встроить иллюстрации в статью. У меня есть объемные svg файлы. Нужны png. Какие вопросы хочешь обсудить?
✍️ Не пытайтесь решить сложную задачу в один промпт
Нейросеть, как и человек, так не умеет. Точнее то, что она сделает, вас не порадует. Разбейте задачу на этапы, результат каждого из которых можно проверить и оценить.
✍️ Следите за контекстом, избегайте автоматической саммаризации
При заполнении контекста включается саммаризация — данные обобщаются и схлопывается, часто «выплескивая младенца из корыта». Именно в этот момент ИИ начинает чудить. Поможет сохранение промежуточных результатов, чтобы при достижения критического значения просто начать новую сессию. А важное от неважного отделите вы.
Управление контекстом — это ключевой вид активности. Разработчик перестаёт тратить время на написание кода (этим занимается нейросеть), но сосредотачивается на управлении контекстом: накопление, актуализация, регламенты, инструменты навигации. Без этого далеко не уплыть.
📌Да, есть приёмы, которые делают промпты эффективнее, а работу ИИ стабильнее. Приведем пару лайфхаков:
✅ Мотивация ИИ "спереди"
ИИ н
Продолжаем отвечать на вопрос «Какие навыки нужны разработчику, чтобы писать код нейросетями?»
❓Часть 2. Надо ли создавать ИИ агентов?
Обязательно. Просить ИИ написать код просто в режиме чата неэффективно совсем.
Что такое ИИ агент
Агент = обычный ИИ + инструменты. Инструменты позволяют работать с файловой системой, git, открывать сайты, лазить в БД и т.д. Часть инструментов можно найти готовыми, а часть — придется написать самим.
Старожилы нашего канала точно смогут написать недостающие скрипты на Python для агента! Вообще и нейросеть сама может написать разово, а потом пользоваться скриптом на постоянке. Отревьюить не забудьте😁
Ничего страшного в «создании агентов» нет — сейчас множество платформ создаст их за вас, вы и не заметите. Мы работаем с OpenCode. Можно вести разработку с помощью агентов в VSCode. Вариантов все больше, холиварить не будем — на вкус и цвет все фломастеры разные. В итоге платформа предложит вам готовые скиллы, MCP сервера и много всяких плюшек для работы с агентами.
❌ Не плодите субагентов
В какой-то момент контекст кончится и агент или вы сами подумаете, а чего бы субагентов не добавить. Без крайней нужды не стоит!
Использование субагентов радикально снижает качество работы нейросети. Использование субагентов требует очень зрелой продвинутой инфраструктуры. Управление контекстом субагента — задача со звездочкой. А ИИ без корректного контекста — это обезьяна с гранатой. Для новичков это точно антипаттерн.
Если проблема именно в переполнении контекста — сохраните важные результаты в файлы и начните новый сеанс с агентом. Разбейте задачу на этапы. Подсушите исходные данные или выберите другой их формат, чтобы ужать объем. Если бюджет позволяет, подключите ИИ с большим лимитом контекста.
👇 Ставьте огоньки и ждите продолжение! Расскажите в комментариях о своем опыте работы с ИИ-агентами!
Мы в Макс
Продолжаем отвечать на вопрос «Какие навыки нужны разработчику, чтобы писать код нейросетями?»
Мы уже рассказали про:
— Нужно ли писать промпты
— Нужно ли создавать ИИ-агентов
Сегодня поговорим про вайбкодинг!
❓Часть 3. Про вайбкодинг и «что-то еще»
Надо ли уметь вайбкодить?
Если речь про «иди, сделай за меня» в один промпт (даже со скиллами и MCP-серверами) — это плохой вариант. В 9/10 случаях руками быстрее. Даже если на старте будет что-то путное, доработать продукт, не сломав еще что-то нейросеть не сможет.
✔️ Подойдет для прототипов. Например, как в уроке по FastAPI с генерацией фронта сайта.
✔️ С натяжкой работает для автотестов.
✔️ Ограниченно работает для обновления версий библиотек.
✖️Нейросеть не умеет чинить сложные баги — процесс не сходится: чинит одно и ломает то, что работало. Сложные баги не решаются в один шаг. Сначала надо сформулировать гипотезы, потом проверить их и локализовать проблему, найти варианты решения, в итоге выбрать оптимальный. В итоге, если делать в один шаг, проект застревает на фазе «почти готово» и вы либо дорабатываете вручную, либо переписываете с нуля.
Использование ИИ как ассистента не дает кратного прироста эффективности. То время, которое тратилось на разработку кода, теперь тратиться на ревью, рефакторинг и доработку кода ИИ. Причина — отсутствие в контексте какую проблему и для кого решаем + отсутствие четких критериев результата на каждом этапе разработки веб-приложения от принятия архитектурных решений, до покрытия кода автотестами.
Другой подход — выстраивание системы, где ИИ берет на себя не только разработку кода, но и проверку его качества, тестирование. Недавно для него даже появился термин «Агентная разработка».
Человек все еще нужен, но как архитектор и «руководитель». Не надо отдавать ИИ все задачи целиком. Самые сложные решения и задачи остаются под ответственность архитектора, а ИИ выступает как ассистент.
👉 Знаете как проверить качество результата — можно делегировать ИИ
👉 Объясните ИИ в чем цен
Продолжаем отвечать на вопрос «Какие навыки нужны разработчику, чтобы писать код нейросетями?»
Мы уже рассказали про:
— Нужно ли писать промпты
— Нужно ли создавать ИИ-агентов
— Про вайбкодинг
❓Часть 4. Мышление
Классический подход к разработке кода — продумать все корнер-кейсы, разработать алгоритм, проанализировать входные и выходные параметры. Интерпретатору Python не надо сообщать что и зачем вы делаете — просто пишите команды, которые надо исполнить. Достигнет ли ваше ПО результата зависит от того, как правильно разработали и реализовали алгоритм.
🌟Но ИИ может круче, если описать что нужно получить и зачем. Нейросеть спросит обо всех важных моментах и предложит решения. При наличии инструментов для тестирования и проверки, ИИ сможет самостоятельно проверить результат. Критерии качества кода должны включать как функциональные требования, так и общие требования к чистоте кода и архитектуре (да-да, то самое ревью Девмана).
👉 Укажите какую задачу нужно решить и зачем, а не давайте простые команды.
Процессы с ИИ сложно тестировать и отлаживать. Причем как элемент в составе ПО, так и как инструмент для написания кода. Отладка принтами уже не поможет, к сожалению😢
👉 Заранее продумайте как вы будете дебажить работу ИИ
С ног на голову меняется процесс разработки — старые подходы начинают рушиться. Скорость написания кода возрастает настолько, что если не подготовиться, то тимлид погибнет в код-ревью. Ну или ваша собственная работа превратиться в постоянное ревью и уточнение задачи. От написания кода избавит, но вряд ли даст ускорение больше, чем на 10-30% (если повезет).
👉 Перестраивайте процессы, внедряйте новые инструменты
❓Наверно, сразу ответим еще на такой вопрос — а когда Devman будет учить кодить с помощью ИИ?
— Уже есть курс для тимлидов, сеньоров и архитекторов, кто готов выстраивать у себя в отделе/компании AI-first процессы разработки и инфраструктуру под них
— А вот как учить начинающих разработчиков и с нуля мы пока не придумали.
Дело в то
🤔 Давайте вместе разберемся, что не так с этим кодом?
constant_number = 15
class some_class():
...
def DO_FUNCTION():
...
Some_VARIABLE = 'value'
👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.
➡️Пишите в комментариях, что можно исправить!
Мы в Макс
Используйте в названиях правильный регистр букв.
UPPER_CASE — для глобальных констант
CamelCase — для названий классов
snake_case — для всех переменных, функций, методов, аргументов, полей
Код из нашего примера может выглядеть так:
CONSTANT_NUMBER = 15
_some_variable = 'value'
class SomeClass():
...
def do_function():
...
Да, кажется, что придираться к выбору регистра — перебор. Но эта та деталь, которая на порядок снижает сложность понимания при чтении кода, а значит и вероятность ошибок при доработках!
Если модуль предназначен для импорта с помощью from M import *, PEP 8 советует явно указать, какие глобальные переменные модуль экспортирует. Для этого добавляют префикс из одного подчёркивания (_internal_var) к именам «внутренних» глобальных переменных. Так вы контролируете, что именно будет доступно при импорте.
И спасибо всем за активность в комментариях - вы нашли больше, чем было запланировано!😁
Мы в Макс
🤔 Давайте вместе разберемся, что не так с этим кодом?
from environs import Env
def main():
env = Env()
env.read_env()
token = env.str('TOKEN')
👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.
➡️Пишите в комментариях, что можно исправить!
Мы в Макс
Без точного названия сложно понять для чего нужен токен. Речь идёт одновременно и про переменные в коде, и про переменные окружения.
А если, например, API поддерживает несколько видов токенов, то тем более в названии каждого из них необходимо указать специфический тип.
Если внутри программы используется только один вид токена, то давать переменной специфичное название не обязательно, а вот переменная окружения всегда должна называться специфично.
Код из нашего примера может выглядеть так:
from environs import Env
def main():
env = Env()
env.read_env()
geocoder_token = env.str('YANDEX_GEOCODER_TOKEN')
Также хотели бы ответить на комментарии к посту:
1️⃣ Нужно ли задавать значение по умолчанию?
Если такое значение существует или является необязательным, то да, нужно задать. В других случаях, как правильно отметили в комментариях, должно быть исключение, говорящее о невозможности работы программного обеспечения. Лучше узнать об ошибке при деплое, чем через неделю удивиться, что пользователи не могут пользоваться сервисом и уже ушли к конкуренту!
2️⃣ Нужно ли вынести чтение переменных окружения из `main`?
Если речь про вынос из main без обертки, то однозначно нет. Т.к. чтение переменных окружения будет запускаться при импорте модуля. Чтение настроек приведет к ошибки на этапе инициализации модуля. Такие исключения тяжело перехватывать и обрабатывать, поэтому так делать не рекомендуется. Сначала инициализация: какие функции объявлены, какие модули импортированы, потом исполнение, включая чтение переменных окружения и непосредственный вызов функций.
3️⃣ Нужно ли убрать строку `env = Env()`?
По официальной документации, текущий двустрочный вариант рекомендуется для Django. Способ чтения зависит от того, с каким фреймворком используете библиотеку environs.
💙Спасибо вам, что делились своими вариантами в комментариях!
Мы в Макс
Нужно ли учиться код-ревью❓
Сначала разберёмся, что такое хорошее код-ревью. Это не попытка «кодить руками» разработчика — «замени на», «добавь синглтон», «перемести код в эту функцию». Хороший ревьюер формулирует проблему, которая мешает код читать или пользоваться. Он задаёт наводящие вопросы: «Функция так названа, а по коду делает другое — это так?». Автор сам должен понять замечание, провалидировать его и применить. Критерий качества один: ты не диктуешь решение, а показываешь проблему.
✅Кому и когда это реально нужно:
— Тимлиду, который даёт обратную связь авторам кода;
— Программисту в команде с перекрёстным ревью;
— Каждому, кто работает с нейросетями и по сути становится их тимлидом.
❓Как этому научиться?
1️⃣ Делать ревью. Чем чаще, тем лучше. Ревьюить код нейросети – отличный вариант для начала.
2️⃣ Делать ревью — необходимо, но недостаточно. Чтобы замечать больше проблем, нужно качать насмотренность. Нужен либо огромный собственный опыт, либо чужой.
Где набраться чужого опыта:
— Книги про чистый код, паттерны проектирования и около того. Обращать внимание на кейсы: что доставило проблемы, как исправили;
— каталог улучшений Devman;
— код-ревью, полученные от старших товарищей – свои и чужие, если есть возможность посмотреть.
🎯 Главная трудность — не формулировки, а умение проблему увидеть и осознать. Начинающие обычно говорят: «Я так не делаю, я делаю по-другому», но не понимают, что будет плохого, если оставить текущую реализацию. А это и есть суть ревью.
👉 Статья «Грейд разработчика приходит с годами, но иногда годы приходят одни: зачем вам код-ревью»
👉 Пост «Секретный ингредиент уроков Девман – код-ревью»
✅Итого: навык сам не появится, если его не качать. Нужна практика + насмотренность. Ну а все курсы Devman заканчиваются код-ревью действующего разработчика — так накопленный опыт команды достаётся вам. Сдавайте уроки — мы уже заждались!
Мы в Макс
Может ли нейросеть делать код-ревью❓
Короткий ответ: может. Но из коробки — вряд ли вам понравится качество и ревью вряд ли будет полезно проекту.
❌ Проблема не в нейросети, а в подходе и выборке кейсов. В подавляющей массе разработчики делают ревью плохо. Тех, кто ревьюит по-настоящему качественно, сильно меньше половины. Часто это вкусовщина, придирки, игра в «угадай, чего хочет ревьюер» и куча лишней работы автору кода.
Нейросеть обучается на том, что есть в интернете, а там нет валидации качества ревью, вот и получается «как-то». Поэтому из коробки она даёт средненькое ревью — то самое, которое в лучшем случае просто не помогает, а иногда и вредит.
⚠️ И вот важный нюанс. Как бывает: код написал, отладил, а потом проходишь тернии, угадывая пожелания ревьюера и внося бесконечные правки. Нейросеть этот вред воспроизводит быстрее и в масштабе x 100. Больше добавленных проблем, которых не было, больше времени на их «исправление». Вот уж точно хуже, чем без ревью.
✅ Как сделать, чтобы нейросеть реально помогала? Поднять её скилл. Это делается через регламентацию:
— Пошаговая процедура: шаг 1 — проверили то-то, шаг 2 — то-то;
— Результат упаковывается в шаблон, который не даёт ИИ писать объемную ерунду;
— Провалидированные каталоги типичных проблем с симптомами и сценариями;
— Жёсткие правила под конкретный проект. Например, все входные и выходные данные должны быть зафиксированы в схемах данных;
— Фильтр ложных срабатываний: симптом есть, а проблемы нет.
База типичных проблем универсальна. А вот правила придется адаптировать под проект, исходя из принятых архитектурных решений, стека технологий и даже состава команды.
В процедуре важно сделать обязательным указание на корневую проблему, которую надо решить, внося правки в код.
🎯 Важно — замечания ситуативные и контекстозависимые. Взять DRY: «не дублируй» — это лишь эвристика. Иногда погоня за DRY делает код невыносимым, и его приходится переписывать. Хорошее ревью — это куча приёмов + понимание, когда приём
⚡️Изменения в программе обучения «От джуна»
С сентября уроки по Kubernetes перестанут быть обязательными в программе курса. Первый урок станет опциональным. Второй будет закрыт в связи с перестройкой ИТ-инфраструктуры в Яндекс.Облако. Зато теперь у вас будет возможность познакомиться с FastAPI и добавить в портфолио проект с подключением ИИ для генерации сайтов!
✅Для постановки в очередь на стажировку с 1 сентября обязательны:
— Docker, 2 урока
— Django, 3 урока
— FastAPI Начало + FastAPI: Создаем AI генератор сайтов с нуля
Первый урок по Kubernetes можно будет делать после основных уроков, пока ждете начало стажировки.
👉Если у вас возникнут вопросы или сложности при переходе со старой версии программы на новую, напишите нам в Телеграм! Всё решим.
Мы в Макс
🚀Тренды Kubernetes
📎Kubernetes — один из самых популярных инструментов для оркестрации контейнеров. Еще пять лет назад он считался сложной технологией для бигтехов и гиков, но сегодня является фундаментом для построения инфраструктуры в крупном и среднем бизнесе. Исследование TAdviser показало, что Kubernetes используют более 60% российских компаний с выручкой от 10 млрд рублей и доля только растет. А вот небольшие компании наоборот от технологии отказываются. Прежде всего потому, что поддержка облачной инфраструктуры значительно увеличивает расходы и на сервера, и на высококвалифицированных DevOps инженеров.
📎В основе Kubernetes лежит работа с контейнерами — изолированными средами, в которых запускается приложение со всеми его зависимостями. А главное — технология навязывает язык для эффективного взаимодействия разработчиков и DevOps-инженеров, что снижает риски при релизах веб-приложений и их масштабировании.
🚀Основные тренды на сегодняшний день:
1️⃣ Kubernetes для ИИ и машинного обучения
Обучение и запуск нейросетей требуют мощных вычислительных ресурсов, особенно GPU. Kubernetes позволяет эффективно управлять этими ресурсами: распределять GPU-серверы между задачами, масштабировать инфраструктуру под обучение моделей, автоматически развертывать обученные модели в продакшен.
Растет популярность GPUaaS (GPU as a Service) — сервисов, предоставляющих доступ к профессиональным ускорителям через облако на базе K8s. Это особенно актуально для компаний, которым нужны мощности для обучения моделей эпизодически, без покупки дорогого оборудования.
2️⃣ ИИ-агенты для управления кластерами
Идет активная разработка ИИ-агентов, которые помогают администраторам Kubernetes: анализируют логи, предсказывают проблемы до их возникновения, предлагают оптимизацию конфигураций. Например, агент может заметить, что один из сервисов систематически потребляет больше памяти, и предложит увеличить лимиты или найти утечку памяти.
На текущем этапе это именно помощники, способные решать ли
🤔 Давайте вместе разберемся, что не так с этим кодом?
class Postcard(BaseModel):
holidayId: str
name_ru: str
body: Union[str, List[str]]
👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.
➡️Пишите в комментариях, что можно исправить!
Мы в Макс
Иногда данные приходят в альтернативном стиле написания из-за того, что они создавались на другом языке, например, JavaScript, в котором правила отличаются от Python.
Код из нашего примера может выглядеть так:
class Postcard(BaseModel):
holiday_id: str = Field(alias='holidayId')
name_ru: str
body: Union[str, List[str]]
💙Спасибо вам, что делились своими вариантами в комментариях!
Мы в Макс
📌Война сертификатов
Многие наверняка заметили, что в последнее время с сертификатами российских сайтов что-то происходит неладное. А в шапке часто маячат напоминалки, что нужно что-то установить в браузер. Платежные формы не грузятся. А вот в Яндекс Браузере почему-то всё работает. Давайте разберемся что произошло.
✍️HTTPS (от англ. HyperText Transfer Protocol Secure) – это безопасный протокол передачи данных, который поддерживает шифрование посредством криптографических протоколов SSL и TLS, и является расширенной версией протокола HTTP.
Еще десять лет назад никого было не удивить сайтом без шифрования. Сейчас же во все современные браузеры встроена обязательная проверка TLS/SSL сертификата сайта. Так что если вход на сайт через HTTP без сертификата, то пользователь увидит кучу предупреждений о небезопасности сайта, прежде чем на него все-таки попадет.
✍️SSL/TLS-сертификат ― это цифровая подпись сайта. С её помощью подтверждается его подлинность. Перед тем как установить защищённое соединение, браузер проверяет ключи, полученные от центра сертификации, чтобы подтвердить легальность документа. Если он действителен, то браузер считает этот сайт безопасным и начинает обмен данными.
✍️И вот тут корень проблемы. SSL/TLS сертификаты выдают специальные международные и национальные организации — удостоверяющие центры (УЦ), чьи корневые сертификаты изначально встроены в операционные системы и браузеры.
✍️Международные центры — глобальные компании, например, GlobalSign, Let’s Encrypt, DigiCert, Sectigo, которые подчиняются правилам международного консорциума CA/Browser Forum. О них знают все браузеры и их сертификатами годами пользовались сайты по всему миру, включая российские.
❗️По новым правилам CA/Browser Forum международные удостоверяющие центры обязаны проверять владельцев сайтов на соответствие санкционным спискам США и ЕС. Подсанкционные российские компании и госструктуры начали массово сталкиваться с принудительным отзывом и отказом в продлении зарубежных
❓Где искать работу сегодня
Еще год назад HH был основной площадкой для ИТ-специалистов. Сегодня там … ничего. Отклики силами ИИ-агентов пачками отправляются в отказ, фиктивные вакансии без ответа, отказы на собесах без указания причины.
🤔Уровень безработицы официально составил 2,2% за 2 квартал 2026 года — это острый дефицит кадров. Но одновременно в последнем обзоре HH портала за август число вакансий снизилось на 13% в годовом сопоставлении, а число активных резюме, напротив, выросло — аж на 25%. Так что на самом деле ИТ-специалистам приходится трудно как никогда. Но это не повод опускать руки!
✍️Ваше оружие, помимо навыка и опыта — реферальные программы и выход на HR. Толковые разработчики все еще нужны.
✍️Реферальные программы — это когда сотрудник кидает на открытую в своей компании вакансию от себя. Обычно за успешный найм он также получает бонус, ну а вы попадаете на собес.
Не стесняйтесь подергать знакомых — во всех крупных компаниях такие программы есть: Авито, 2ГИС, Т-Банк, Сбер и т.д. Если подходящих знакомых не нашлось – посетите митапы для разработчиков и знакомьтесь с участниками, узнавайте полезные контакты. Конференции тоже подойдут, но там сложнее установить контакт, т.к. собирается толпа и знакомств порой слишком много, чтобы кого-то запомнить. Тематические сообщества и каналы тоже в помощь.
✍️Другой вариант – выходить напрямую на HR. На HH контакт обычно не указан, но его не так уж и сложно добыть на самом деле.
✅Что можно предпринять:
— Для понравившейся вакансии поищите контакты на официальном сайте работодателя (на hh указан): там почта для связи и иногда контакт hr или его почта;
— Напишите компании в мессенджеры, спросите актуальна ли вакансия и отправить резюме;
— Если есть форма подачи заявки на вакансию на сайте компании, отправьте через нее резюме;
— Если пришел ответ, иногда там есть имя и фамилия HR специалиста, можно найти прямой контакт через ТГ или через Сетку;
— Через Сетку можно искать по названию компании сотрудников;
—
🤔 Давайте вместе разберемся, что не так с этим кодом?
class Service:
def __init__(self, payment_payload):
self.payment_payload = payment_payload
def process_payment(self):
...
👉 Чтобы понять, что можно исправить, загляните в типичные улучшения Девмана.
➡️Пишите в комментариях, что можно исправить!
Мы в Макс