Как стать автором
Обновить
80
0
Никита Соболев @sobolevn

CTO at wemake.services

Отправить сообщение

Делаем тесты частью приложения

Время на прочтение9 мин
Количество просмотров4.8K

Сегодня я собираюсь обсудить абсолютно новую для многих пользователей (особенно для питонистов) идею: интеграцию тестов в ваше приложение.

Итак, давайте начнем.

Читать далее
Всего голосов 9: ↑7 и ↓2+5
Комментарии2

Исправь код, продай техническую фигню, покрути рулетку на Russian Python Week 2020

Время на прочтение2 мин
Количество просмотров1.9K
Рефакторинг — сложная вещь. У каждого разработчика свои критерии хорошего, плохого и красивого кода. Из-за двух строк можно развернуть холивар на две страницы комментариев на Хабре. Почему бы тогда не сделать «Битву рефакторинга»? Мы и сделаем — с 14 по 18 сентября на Russian Python Week 2020 запускаем такую битву. На битве каждый может улучшить или «разбомбить» код своего коллеги в прямом эфире. Что это за формат и как пройдет, расскажем дальше.


Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

«Я что-то накодил и все упало»: провалы в Python-разработке на Russian Python Week 2020

Время на прочтение3 мин
Количество просмотров6.7K
На конференциях обычно принято рассказывать об успехах: «Мы обучили нейросеть на пяти миллионах Террабайт данных, чтобы отличать красную машину от белой и продали проект Amazon за 5 млрд долларов» Об ошибках при этом не принято рассказывать. Максимум, что встречается: «Мы немного напортачили, но за полчаса разобрались, ничего особенного».



Когда вокруг только истории «успешного успеха» даже сеньоры и техлиды чувствуют себя неуверенно — ведь они сравнивают успех спикера со своими ошибками. И сравнение не в пользу участников. Мы решили сломать эту тенденцию и на Russian Python Week запускаем целую секцию под кодовым названием «FailPy». Она будет посвящена провалам Python-разработчиков. Расскажем зачем и для кого это нужно.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии5

Какая асинхронность должна была бы быть в Python

Время на прочтение9 мин
Количество просмотров13K
В последние несколько лет ключевое слово async и семантика асинхронного программирования проникла во многие популярные языки программирования: JavaScript, Rust, C#, и многие другие. Конечно, в Python тоже есть async/await, они появились в Python 3.5.

В этой статье хочу обсудить проблемы асинхронного кода, порассуждать об альтернативах и предложить новый подход поддерживать и синхронные, и асинхронные приложения одновременно.
Читать дальше →
Всего голосов 23: ↑17 и ↓6+11
Комментарии14

Священный холивар «Python vs Go»

Время на прочтение3 мин
Количество просмотров11K
Выбери, на какой стороне ты, и встань на защиту своего любимого языка в решающей битве на Russian Python Week.



Что будет?


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

Холивар «Python vs Go» на Russian Python Week не будет:

  • мнением одного «эксперта»;
  • выступлением одного спикера, в котором, пускай и аргументированно, победитель заранее известен;
  • сравнением на синтетических тестах;
  • набором бенчамрков, которые заведомо выгодны для одного участника.

Битву начнут два представителя Python- и Go-сообщества, но каждый участник сможет повлиять на её ход. Конечное решение останется за вами.
Всего голосов 35: ↑19 и ↓16+3
Комментарии24

9 лучших опенсорс находок за март 2020

Время на прочтение2 мин
Количество просмотров23K

Доброго карантинного апреля, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за март 2020.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Rust, TypeScript, JavaScript, Go, Python.
Тематика: веб разработка, тестирование, инструменты разработчика, администрирование и документирование.


Прошлый выпуск (аж ноябрь 2019!).

Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии8

Conditional coverage

Время на прочтение4 мин
Количество просмотров1.7K

Cover image


Recently I had to add python3.8 for our Python linter (the strictest one in existence): wemake-python-styleguide. And during this straight-forward (at first look) task, I have found several problems with test coverage that were not solved in Python community at all.


Let's dig into it.

Read more →
Рейтинг0
Комментарии0

Как заставить машину написать тесты из кода за тебя

Время на прочтение17 мин
Количество просмотров9.4K
Мы живем в неидеальном мире. Здесь код пишут люди, а люди по своей природе склонны совершать ошибки. Все бы ничего, ошибки можно отловить на этапе тестирования и не дать им никому навредить. Можно, если писать тесты. Чего люди делать почему-то не любят. Но возможно, есть надежда — автогенерация тестов из написанного кода.

Юлия Волкова хочет проверить идею в реальности и пробует переложить на машину создание тестов на основе кода, причем без использования дополнительных инструкций или контрактов. О том, какие открытия приносит путешествие в мир метапрограммирования, AST, синтаксического анализа и токенизации, и чего это все позволило добиться в автогенерации тестов, Юлия расскажет на Moscow Python Conf++. А пока я расспросил, откуда появилась сама идея — автоматизировать тестирование, что лежит в основе прототипа и с чем еще предстоит справиться.
Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии8

Чистое зло Python

Время на прочтение7 мин
Количество просмотров28K

Темные силы не дремлют. Они пробираются в дивное королевство Python и используют черную магию, чтобы осквернить главную реликвию — чистый код. Однако опасны не только злые чары.


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



Читать дальше →
Всего голосов 45: ↑33 и ↓12+21
Комментарии26

Когда код становится legacy и как с ним жить

Время на прочтение17 мин
Количество просмотров18K
Много лет назад, я пришел в один legacy-проект, который разрабатывал Владимир Филонов (pyhoster). Так я и познакомился с одним из организаторов MoscowPython, любителем копаться во внутренностях библиотек, а потом рассказывать об этом. Иронично, что теперь он собирается рассказывать, как выжить, если вам достался legacy. Это еще раз доказывает, что legacy порождают даже те, кто потом учит, как с этим жить. Мне очень хочется расспросить Владимира о том, что такое legacy, как им поменьше зарастать, как бороться, когда уже по уши в legacy, а когда всё бросать и писать заново (спойлер: никогда).

Но сперва посмотрите ролик, чтобы прочувствовать всю боль погружения в legacy…

Всего голосов 28: ↑27 и ↓1+26
Комментарии7

Хаос зависимостей в Python

Время на прочтение11 мин
Количество просмотров19K
Знакомы ли вы с историей Python packaging? Ориентируетесь ли в форматах пакетов? Знаете ли, что распутывать клубок зависимостей придется даже когда кажется, что вот оно чудо — zero dependency? Уверен, что знакомы со всем этим не так хорошо, как автор библиотеки DepHell.



Мне удалось поговорить с Никитой Вороновым, больше известным как Gram или orsinium, и расспросить его о теме будущего доклада, болях плохих решений резолвинга зависимостей, о DepHell, pip, принципе first match wins, о Гвидо, Pipfile, инкрементальном развитии Python и будущем экосистемы.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии8

9 лучших опенсорс находок за ноябрь 2019

Время на прочтение2 мин
Количество просмотров20K

Доброй зимы, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за ноябрь 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Rust, TypeScript, JavaScript, Go, Python.
Тематика: веб разработка, инструменты для QA, работа с данными, инструменты разработчика и администратора.


Прошлый выпуск.

Читать дальше →
Всего голосов 34: ↑33 и ↓1+32
Комментарии19

9 лучших опенсорс находок за октябрь 2019

Время на прочтение2 мин
Количество просмотров31K

Доброго ноября, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за октябрь 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Rust, Swift, TypeScript, JavaScript, Go, Scala, Python.
Тематика: веб и мобильная разработка, визуализация данных, инструменты разработчика, документация.


Прошлый выпуск.

Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии13

Complexity Waterfall and Architecture on Demand

Время на прочтение10 мин
Количество просмотров1.6K

Logo


When talking about "bad code" people almost certainly mean "complex code" among other popular problems. The thing about complexity is that it comes out of nowhere. One day you start your fairly simple project, the other day you find it in ruins. And no one knows how and when did it happen.


But, this ultimately happens for a reason! Code complexity enters your codebase in two possible ways: with big chunks and incremental additions. And people are bad at reviewing and finding both of them.

Read more →
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

9 лучших опенсорс находок за сентябрь 2019

Время на прочтение2 мин
Количество просмотров52K

Доброго Хактоберфеста, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за сентябрь 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Python, C, Rust, Ruby, JavaScript, Go.
Тематика: веб разработка, администрирование, инструменты разработчика.


Прошлый выпуск.

Читать дальше →
Всего голосов 115: ↑112 и ↓3+109
Комментарии19

9 лучших опенсорс находок за август 2019

Время на прочтение2 мин
Количество просмотров51K

Доброй осени, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за август 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Python, Rust, JavaScript, Go.
Тематика: веб разработка, администрирование, инструменты разработчика.

Читать дальше →
Всего голосов 76: ↑74 и ↓2+72
Комментарии44

Typechecking Django and DRF

Время на прочтение5 мин
Количество просмотров8.7K

As you have already know I love optional static typing. The thing is that sometimes it is not optional, but impossible. Because we have plenty of big untyped projects in Python's ecosystem.


Django and Django-Rest-Framework were two of them. Were. Because now they can be typed! Let me introduce TypedDjango organisation and stubs for django and drf.


This is going to be a concise tutorial and getting started guide.

Read more →
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Really typing Vue

Время на прочтение6 мин
Количество просмотров7.5K

Logo


inb4: This is not another "setting up" a new project with Vue and TypeScript tutorial. Let's do some deep dive into more complex topics!


typescript is awesome. Vue is awesome. No doubt, that a lot of people try to bundle them together. But, due to different reasons, it is hard to really type your Vue app. Let's find out what are the problems and what can be done to solve them (or at least minimize the impact).

Read more →
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Исключения в Python теперь считаются анти-паттерном

Время на прочтение9 мин
Количество просмотров57K
Что такое исключения? Из названия понятно — они возникают, когда в программе происходит исключительная ситуация. Вы спросите, почему исключения — анти-паттерн, и как они вообще относятся к типизации? Я попробовал разобраться, и теперь хочу обсудить это с вами, хабражители.

Проблемы исключений


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

Исключения трудно заметить


Существует два типа исключений: «явные» создаются при помощи вызова raise прямо в коде, который вы читаете; «скрытые» запрятаны в используемых функциях, классах, методах.

Проблема в том, что «скрытые» исключения и правда трудно заметить. Покажу на примере чистой функции:

def divide(first: float, second: float) -> float:
    return first / second

Функция просто делит одно число на другое, возвращая float. Типы проверены и можно запустить что-то такое:  

result = divide(1, 0)
print('x / y = ', result)

Заметили? На самом деле до print исполнение программы никогда не дойдет, потому что деление 1 на 0 – невозможная операция, она вызовет ZeroDivisionError. Да, такой код безопасен с точки зрения типов, но его все равно нельзя использовать.
Читать дальше →
Всего голосов 116: ↑71 и ↓45+26
Комментарии149

Собеседование для собеседующих

Время на прочтение5 мин
Количество просмотров25K


Вам знакома ситуация, что вы вышли после интервью в серьезную компанию, но чувствуете себя как школьник проваливший контрольную с суровым преподом? Или вам знакома ситуация, что кандидат так и не задал вам ни одного вопроса за все время собеседования, но почему: или ему не интересно, или он все для себя уже решил, или просто засмущался?


Собеседование – обоюдный процесс. Компания ищет себе инженера, инженер ищет себе компанию. Однако, баланс явно смещен в сторону "компания ищет", несмотря на острый кадровый голод на рынке.


В данной статье я рассмотрю, какие проблемы сейчас существуют, и предложу свой вариант улучшения: cross-interview.

Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии87
1

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность