Обновить
14
0

Разработчик

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

Крах на финишной прямой, или как написать нетестируемый код

Время на прочтение4 мин
Охват и читатели3.2K

Это история о том, как потерпеть фиаско, имея хорошо написанный и протестированный в боевых условиях работающий код и даже написанную документацию. Изначально я собирался делать анонс своей библиотеки, но что-то пошло не так. Поэтому начнём за здравие -- постановка и формализация задачи, описание возможностей и батареек. А закончим за упокой -- вопросами, как всё это теперь тестировать?

Читать далее

SQLAlchemy: а ведь раньше я презирал ORM

Время на прочтение10 мин
Охват и читатели44K

Так вышло, что на заре моей карьеры в IT меня покусал Oracle -- тогда я ещё не знал ни одной ORM, но уже шпарил SQL и знал, насколько огромны возможности БД.

Знакомство с DjangoORM ввело меня в глубокую фрустрацию. Вместо возможностей -- хрена с два, а не составной первичный ключ или оконные функции. Специфические фичи БД проще забыть. Добивало то, что по цене нулевой гибкости мне продавали падение же производительности -- сборка ORM-запроса не бесплатная. Ну и вишенка на торте -- в дополнение к синтаксису SQL надо знать ещё и синтаксис ORM, который этот SQL сгенерирует. Недостатки, которые я купил за дополнительную когнитивную нагрузку -- вот уж где достижение индустрии. Поэтому я всерьёз считал, что без ORM проще, гибче и в разы производительнее -- ведь у вас в руках все возможности БД.

Так вот, эта история с SQLAlchemy -- счастливая история о том, как я заново открыл для себя ORM. В этой статье я расскажу, как я вообще докатился до такой жизни, о некоторых подводных камнях SQLAlchemy, и под конец перейду к тому, что вызвало у меня бурный восторг, которым попытаюсь с вами поделиться.

SELECT article FROM habr

Цензура в интернете. Когда базовых мер недостаточно — I2P

Время на прочтение8 мин
Охват и читатели37K

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

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

Объём статьи не означает, что всё так сложно. Я подробно рассказал про несколько вариантов настройки. А какой выбрать -- решать вам

Поехали

Цензура в интернете. Надо что-то делать

Время на прочтение6 мин
Охват и читатели36K

Интернет сегодня как воздух. Его никто не замечает и принимает как должное до тех пор, пока его кто-то не испортит или не отключат вовсе (привет горячему августу 2020 в РБ). В данной статье я расскажу, какие меры можно предпринять, имея в руках только браузер. Каждый инструмент вне браузера -- это тема для отдельной публикации

PS: а ещё вангую реакцию: "О, прикольно. Добавлю в закладки. Почитаю как-нибудь потом". Ага, когда интернет пропадёт?

Читать далее

Celery + asyncio

Время на прочтение2 мин
Охват и читатели27K
Привет, Хабр! Я хочу рассказать, как я решал проблему эффективного конкурентного исполнения asyncio задач в Celery.

КДПВ

Celery taskcls: новый декоратор, новые возможности

Время на прочтение3 мин
Охват и читатели8.1K

Привет, Хабр! Я расскажу тебе историю своего профессионального подгорания.


Так вышло, что я терпеть не могу рутинных однообразных действий. У меня за плечами несколько проектов, использующих Celery. Каждый раз, когда задача становится сложнее вывода 2 + 2 = 5, шаблон решения сводится к созданию класса, выполняющего задачу, и функции-стартера, с которой умеет работать Celery — бойлерплейта. В этой статье я расскажу, как я боролся с бойлерплейтом, и что из этого вышло.


Logo

Читать дальше →

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Фулстек разработчик
Старший
Git
Linux
SQL
Python
ООП
MySQL
PostgreSQL
Docker
Nginx
Высоконагруженные системы