Pull to refresh
80
0
Никита Соболев @sobolevn

CTO at wemake.services

Send message

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

Reading time9 min
Views4.8K

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

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

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments2

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

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


Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments0

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

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



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

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

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

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

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

Reading time3 min
Views11K
Выбери, на какой стороне ты, и встань на защиту своего любимого языка в решающей битве на Russian Python Week.



Что будет?


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

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

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

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

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

Reading time2 min
Views23K

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


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


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


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

Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments8

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

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

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

Чистое зло Python

Reading time7 min
Views28K

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


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



Читать дальше →
Total votes 45: ↑33 and ↓12+21
Comments26

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

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

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

Total votes 28: ↑27 and ↓1+26
Comments7

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

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



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

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

Reading time2 min
Views20K

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


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


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


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

Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments19

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

Reading time2 min
Views31K

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


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


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


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

Читать дальше →
Total votes 40: ↑37 and ↓3+34
Comments13

Complexity Waterfall and Architecture on Demand

Reading time10 min
Views1.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 →
Total votes 5: ↑5 and ↓0+5
Comments0

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

Reading time2 min
Views52K

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


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


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


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

Читать дальше →
Total votes 115: ↑112 and ↓3+109
Comments19

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

Reading time2 min
Views51K

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


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


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

Читать дальше →
Total votes 76: ↑74 and ↓2+72
Comments44

Typechecking Django and DRF

Reading time5 min
Views8.6K

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 →
Total votes 2: ↑2 and ↓0+2
Comments0

Really typing Vue

Reading time6 min
Views7.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 →
Total votes 11: ↑11 and ↓0+11
Comments1

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

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

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


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

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


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

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

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

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

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

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

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

Reading time5 min
Views25K


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


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


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

Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments87
1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity