Pull to refresh
24
0
Антон Зубарев @aszubarev

User

Send message

Асинхронный python без головной боли (часть 1)

Reading time14 min
Views283K

Почему так сложно понять asyncio?

Асинхронное программирование традиционно относят к темам для "продвинутых". Действительно, у новичков часто возникают сложности с практическим освоением асинхронности.

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку
Total votes 135: ↑135 and ↓0+135
Comments56

Не только ORM (NoORM)

Level of difficultyEasy
Reading time8 min
Views7.4K

Привет, Хабр! Хочу поделиться самодельной питонской библиотекой, существенно упрощающей взаимодествие с базами данных.

«Написать свой собственный ORM» – неплохая задачка для тех, кто решил поглубже изучить некоторые языковые особенности Питона, но в данном случае задача была другая – написать не ORM, а не-ORM. Механизм, упорядочивающий и облегчающий доступ к базам данных, но который сам по себе ни в коей мере не является ORM-ом.

Читать далее
Total votes 8: ↑7 and ↓1+7
Comments22

Все секреты многопоточности

Level of difficultyMedium
Reading time16 min
Views14K

Disclaimer. Данная работа не повлияла на мои взгляды на программирование, но повлекла достаточно радикальные изменения в подходах к проектированию автоматных объектов.  Теперь, если процесс  автономен и/или не предъявляет требований  к синхронизации, он может использовать другие механизмы параллелизма, не переставая при этом быть автоматным по сути. А почему так случилось, что этому предшествовало  и что это за изменения, вы прочтете далее.

Это не самая большая моя статья (так я думал, начиная ее), над которой я работал, пожалуй, дольше и больше, чем над другими. Но это точно первая моя статья, в которой автоматы и ВКПа не будут главной темой. Тема потоков для меня достаточно необычна, т.к. я совсем не фанат многопоточного программирования. Но,  тем не менее, занимаясь параллельным программированием, время от времени возвращаюсь к теме многопоточности. И вот, чтобы добыть какие-то аргументы для критики и одновременно попробовать найти практическое применение потокам, я решил в этот очередной раз более плотно заняться потоками. А что из этого получилось,  читайте далее.

Читать далее
Total votes 10: ↑5 and ↓5+1
Comments29

Почему я отказался от GraphQL

Reading time10 min
Views16K

GraphQL — невероятная технология, привлёкшая много внимания с тех пор, когда я начал в 2018 году использовать её в продакшене. Вам не придётся долго листать мой блог, чтобы увидеть, как я раньше продвигал её. После создания множества React SPA поверх путаницы нетипизированных JSON REST API технология GraphQL показалась мне глотком свежего воздуха. Я искренне поддерживал хайп вокруг GraphQL.

Однако с течением времени у меня появилась возможность выполнять развёртывания в окружениях, где больше важны не функциональные требования, а безопасность, производительность и удобство поддержки. Тогда и поменялась моя точка зрения. В этой статье я подробно расскажу о том, почему сегодня не рекомендовал бы GraphQL большинству, и поделюсь более совершенными альтернативами.

В статье для примеров я буду использовать код на Ruby с превосходной библиотекой graphql-ruby, но я уверен, что многие из перечисленных проблем не зависят от выбора языка/библиотеки GraphQL.

Если вы знаете более качественные решения или способы, напишите мне комментарий.

Читать далее
Total votes 34: ↑31 and ↓3+35
Comments47

Как хостерам попасть в реестр РКН, зачем его придумали и что будет, если этого не сделать

Level of difficultyMedium
Reading time14 min
Views2.4K

Всем привет, на связи юрист ispmanager Олег Макаров. Расскажу, как попасть в обязательный с 1 февраля 2024 года реестр хостеров, какие правила придется соблюдать и как накажут, если этого не сделать. Этот текст — расширенная авторская версия моей колонки на RB.ru

Моя статья пригодится хостерам — тем, кто ими является с точки зрения Роскомнадзора (РКН).

Читать
Total votes 7: ↑7 and ↓0+9
Comments10

Как сервер с моим проектом был удалён вместе с бэкапами

Level of difficultyEasy
Reading time8 min
Views51K

Не так давно на Хабре была небольшая волна постов и комментариев о том, как можно быстро и эффективно потерять данные своего проекта - неработающие или отсутствующие бэкапы, ошибки "железа" и прочие радости инженеров DevOps. Тогда я это всё прочитал с интересом - всегда же любопытно почитать про чужие факапы (про свои неинтересно). Через несколько дней я вдруг оказался среди таких же несчастных "уже делающих бэкапы".

Немного контекста - у меня есть свой домашний проект, которым я занимаюсь в свободное от работы время. Проект этот - UGC-сайт. Лента постов пользователей, если по-нашему. Вот он - https://vombat.su, вдруг кому-то интересно. Проект существует с сентября, есть своя аудитория, пара модераторов и довольно лояльные правила. На проекте нет рекламы, т.е. он некоммерческий (не считая донатов, которые иногда прилетают от благодарных пользователей). Даже антикоммерческий слегка, т.к. на него я только трачу - даже периодически мерч пользователям отправляю.

Читать далее
Total votes 122: ↑115 and ↓7+130
Comments219

Все числа равны, но некоторые равнее. Как в Python сравниваются Int и Float

Reading time17 min
Views14K

Ещё одна причуда Python, исследование её подноготной и попытка понять, почему так случается.

Недавно в сети X был популярен этот твит (см. скриншот), и я обратил внимание. Это очередной сюрприз в Python, связанный с характерными для него уникальными деталями реализации.

Читать далее
Total votes 41: ↑39 and ↓2+46
Comments33

Макроопределения для PostgreSQL

Level of difficultyEasy
Reading time4 min
Views3.3K

При написании SQL кода для разворачивания БД и написании хранимых процедур порой очень нехватает простейшего макроязыка. Простыми макросами можно заменять сложные похожие выражения, последовательности операторов SQL или даже из множества файлов собирать один скрипт для разворачивания БД.

Несмотря на то, что наиболее развитым макроязыком является m4, многие разрабочики его не знают. Поэтому был выбран более простой, но многим знакомый препроцессор C - cpp из состава GCC.

Все дальнейшие примеры верны для Linux с установленными GCC и Perl. К сожалению, Windows под рукой у меня нет, но проблем с установкой там GCC и Perl возникнуть не должно.

Читать далее
Total votes 5: ↑3 and ↓2+1
Comments4

Книга «Микросервисы и API»

Reading time16 min
Views11K
image Привет, Хаброжители!

Простые и понятные API — необходимое условие успеха микросервисных приложений. Хорошо продуманные API гарантируют надежную интеграцию сервисов и помогают упростить сопровождение, масштабирование и дальнейшее совершенствование. Познакомьтесь с паттернами, протоколами и стратегиями, которые помогут вам проектировать, реализовывать и развертывать эффективные микросервисы с REST и GraphQL API.

Книга наполнена проверенными советами и примерами кода на языке Python. Авторы фокусируются на реализации, а не на философии. Изучите проверенные методы проектирования простых в использовании API для микросервисных приложений. Создавайте надежные API микросервисов, тестируйте, защищайте и развертывайте их в облаке, следуя принципам и шаблонам, применимым в любом языке программирования.
Читать дальше →
Total votes 5: ↑4 and ↓1+5
Comments1

Как нестандартное использование алгоритмов Я.Директа в 4 раза увеличило заказы на строительство загородных домов

Level of difficultyEasy
Reading time8 min
Views5.2K

Почему одни компании гребут заказы лопатами, а другие сокращают отделы продаж? Как нужно изменить сайт, чтобы повысить конверсию в заявку? Как вернуть покупателя, который долго выбирал? А что если фрод напал или кризис ударил по продажам? В кейсе застройщика загородных домов раскрываем секреты нестандартной работы с автостратегиями Я. Директа. 

Клиент обратился к нам в марте 2022 г, когда был ажиотаж на инвестиции в недвижимость, но у него было мало продаж. За 3 месяца мы увеличили количество заявок в 3 раза за счет доработки сайта и автостратегий Яндекса. Успешно отразили фродовую атаку летом 2023 г.  А в ноябре 2023 г спрос упал и нужно было выжимать максимум из рекламы.  Мы сделали: микс из микро и макро конверсий, обучили  Товарную кампанию продавать дома, словно это микроволновки, и немного обманули Пакетную стратегию Яндекса. В итоге за 1,5 года увеличили продажи в 4 раза.

Читать далее
Total votes 18: ↑16 and ↓2+15
Comments14

Подготовка к техническому собеседованию Senior/Team Lead backend

Level of difficultyMedium
Reading time3 min
Views19K

Недавно появились мысли походить на собеседования чем я успешно занялся. Если конкретно - смотрел лидовскую/сеньерскую позиции на Python и Golang(но статья может пригодиться backend разработчикам в целом). Не ставлю целью статьи объять все не объятное и дать какие-то гарантии. Я лишь зафиксирую данные для себя на будущее.

Вообще ходить на собеседования неплохой навык - в моем случае удается неплохо прокачать технические скилы и узнать запросы рынка на текущий момент(ведь может случиться так, что твои навыки перестанут быть актуальными).

Сразу сделаю пометку, что некоторые навыки/ресурсы специфичны(по типу нарешивания Leetcode), но отталкиваемся от текущих реалий рынка.

Читать далее
Total votes 22: ↑21 and ↓1+22
Comments13

Protobuf и buf: блеск, нищета и импортозамещение

Reading time11 min
Views5.4K

Если для компиляции proto-файлов вы всё ещё используете protoc, самое время перестать и перейти на buf. Разберём, как это сделать и почему это необходимо. Также рассмотрим проблемы доступа к buf.build.

Меня зовут Эдгар Сипки, я Go-разработчик в Ozon Fintech. buf — мощная утилита для линтинга протофайлов, проверки обратной совместимости API, генерации кода и валидации запросов. Однако, из-за санкций она недоступна в России. Поэтому я расскажу, как мы разрабатывали собственное решение в рамках импортозамещения.

Читать далее
Total votes 19: ↑17 and ↓2+17
Comments11

Делаем приватный монитор из старого LCD монитора

Reading time2 min
Views973K


Вы наконец-то можете сделать кое-что со своим старым LCD монитором, который завалялся у Вас в гараже. Превратите его в шпионский монитор! Для всех вокруг он будет выглядеть просто белым экраном, но не для Вас, потому что у Вас будут специальные «волшебные» очки.

Всё что Вам нужно – это пара старых очков, нож для бумаги и растворитель для краски.

Читать дальше →
Total votes 1486: ↑1468 and ↓18+1450
Comments327

История игрушки. Поле Чудес

Reading time11 min
Views299K
Случилось это в городе, закрытом от шпионов, цыган и бед социалистической экономики. В Советском Союзе было ровно 10 таких городов, повязанных атомным секретом.

Жизнь мальчиков с математическими способностями в атомных городах была предопределена — школа с пятерками по алгебре и геометрии, мех-мат столичного университета, возвращение в систему, квартира через год, кандидатская степень в 40 лет, ВАЗ 2103 к пятидесяти годам, звание доктора, гараж, шесть соток, четыре квадратных метра.

Бесконечные размышления о математическом моделировании ядерных взрывов разрывали мальчикам мозг. Мозг можно было отвлечь тремя способами — алкоголем, азартными играми и спортом. Секс и музыка помогали не всегда.

Pole Chudes для iPhone

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

Читать дальше →
Total votes 934: ↑924 and ↓10+914
Comments312

Стив Джобс умер

Reading time2 min
Views53K
Stevejobs Macworld2005Средства массовой информации сообщают о смерти Стива Джобса, бывшего CEO Apple. Можно по-разному относиться к Apple и Стиву, но отрицать то, что это знаковая фигура в IT-индустрии, создавшая множество трендов, нельзя. Requiescat in pace, Стив.
Приведу перевод сообщения на официальном сайте Apple:
Apple потеряла своего фантастического и изобретательного гения, а мир лишился замечательного человека. Те из нас, кто имел счастье близко знать и работать со Стивом, лишились дорогого друга и вдохновлённого наставника. Стив оставил после себя компанию, которую мог создать только он, поэтому его дух навсегда останется в сердце компании.
Источник — Apple.
В магазинах Apple по всему миру были лишены подсветки все логотипы Apple.

Те, кто хочет поделиться своими сопереживаниями, могут отправить свои мысли и соболезнования по почтовому адресу rememberingsteve@apple.com. Возможно, некоторые будут переданы родным Стива.
Хорошее видео от CNET, которое вкратце визуально пересказывает карьеру Стива.
Воспоминания его коллег по IT-цеху ниже:
Читать дальше →
Total votes 858: ↑783 and ↓75+708
Comments622

Самый беззащитный — уже не Сапсан. Всё оказалось куда хуже…

Reading time8 min
Views544K
{UPD 10.02.2021} Евгений Чаркин дал интервью на эту тему gudok.ru/newspaper/?ID=1552569
Под катом мои комментарии на некоторые тезисы.
{/UPD}

Больше года назад хабравчанин keklick1337 опубликовал свой единственный пост «Самый беззащитный — это Сапсан» в котором рассказывает как он без серьёзных ухищрений получил доступ ко внутренней сети РЖД через WiFi Сапсана.

В ОАО «РЖД» прокомментировали результаты этого расследования. «Есть результаты проверки. Почему удалось взломать? Наверное, потому, что злоумышленник. Наверное, из-за этого… Ну, он из „фана“. Юный натуралист. Там уязвимостей, которые бы влияли на утечку каких-то критических данных, нет. Мультимедийный портал „Сапсанов“ функционирует как положено и не нуждается в доработке», — заявил Евгений Чаркин.

То есть вместо того, чтобы выразить благодарность за обнаруженную уязвимость, автора обозвали «злоумышленником» и «Юным натуралистом».

К сожалению, но специалисты РЖД, начиная с директора по информационным технологиям, отнеслись к статье очень пренебрежительно, проигнорировав важное указание автора:
Также оттуда в сеть РЖД есть впн. Если захотите — найдёте её там сами.

И вот, год спустя я попал в сеть РЖД даже не садясь в Сапсан.



Видимо, только этот котэ добросовестно охраняет вокзал.

Как именно я попал в сеть РЖД с пруфами, чего не сделал директор по информационным технологиям ОАО «РЖД» Чаркин Евгений Игоревич и возможные последствия — под катом.
Читать дальше →
Total votes 1135: ↑1132 and ↓3+1447
Comments990

Записки супортера

Reading time11 min
Views9.9K
Здравствуйте, меня зовут супортер, или просто сапорт, именно так меня величало начальство первые пол года моей работы, пока наконец не запомнило моего имени. Я часто вижу топики про открытие новых дц, вопросы где лучше размещать сервера, коменты в стиле «Русский бизнес — такой Русский бизнес» и т.п. Это(или весеннее обострение) побудило написать меня данный текст.
Читать дальше →
Total votes 204: ↑186 and ↓18+168
Comments271

Hello world! Или англоязычный Хабр, v1.0

Reading time4 min
Views67K
Это первая публикация в нашем блоге в 2019 году, но она очень важная для всех нас. Мы наконец-то запускаем англоязычную версию Хабра! У нас было почти всё готово ещё к середине декабря, но релизиться перед Новым Годом — это как выкатывать релиз в пятницу вечером. Поэтому отправку в большое плавание мы решили перенести на начало 2019 года.


Read more →
Total votes 275: ↑268 and ↓7+261
Comments594

Cloudflare положил наш сайт после того, как мы отказались выплатить 120 000 $ в течение 24 часов

Reading time9 min
Views127K
Я работаю системным оператором в довольно крупном онлайн-казино (мне представляется, что материал статьи может быть полезен читателям вне зависимости от их позиции касательно этичности казино в целом – упоминаю об этом просто для контекста). У нас около четырех миллионов активных пользователей в месяц. С Cloudflare мы охотно сотрудничаем с 2018 года по тарифу «Бизнес», который стоит 250 $ в месяц и предоставляет неплохие возможности, включая безлимитный трафик.

Нужно признать, 250 $ — невеликие деньги за те объемы трафика, которые мы прогоняли через Cloudflare. В основном мы используем Cloudflare для CDN (кэшируем весь свой статический контент) и для защиты от DDOS-атак – с этими задачами сервис хорошо справляется. Работать с ним просто, и обычно ни о чем не приходится особенно задумываться.

Я читал несколько статей на Hacker News, где рассказывалось, как в какой-то момент Cloudflare связывается с компаниями и начинает агрессивно навязывать корпоративный тариф на персональных условиях. Но я не ожидал, что всё будет настолько плохо.
Читать дальше →
Total votes 222: ↑214 and ↓8+248
Comments400

Information

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

Specialization

Backend Developer, Software Architect
Lead
Git
SQL
Docker
Python
Django
RabbitMQ
Kubernetes
Database
Designing application architecture
Creating project architecture