Pull to refresh
-28
0
Андрей @Andrey_Dolg

Full stack

Send message

Фоновые асинхронные задачи в FastAPI и их мониторинг

Reading time19 min
Views17K

Привет! Меня зовут Иван, я бэкенд-разработчик в KTS.

Сегодня расскажу, как в FastAPI эффективно работать с фоновыми задачами и настроить их мониторинг в Prometheus.

В туториалах для фоновых задач в FastAPI обычно предлагают celery и при этом используют синхронный код. Но сегодня в реальной практике такое встречается редко, поэтому в этой статье я покажу, как в фоновых задачах использовать асинхронный код.

В статье опишу 5 вариантов: встроенный в FastAPI Background Tasks и 4 библиотеки — ARQ, SAQ, FastStream, адаптированный к асинхронному коду Celery.

В конце расскажу, как мониторить фоновые задачи.

Читать далее
Total votes 49: ↑49 and ↓0+51
Comments30

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

Level of difficultyMedium
Reading time14 min
Views25K

Пару недель назад я прочитал о запавшем мне в душу челлендже по обработке миллиарда строк, поэтому захотел решить его на Go.

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

Читать далее
Total votes 50: ↑48 and ↓2+62
Comments20

Мой опыт в Airflow: как повысить стабильность загрузки данных в 5 раз

Level of difficultyEasy
Reading time4 min
Views7.2K

Когда я пришла на проект, в нём уже было много всего: много данных, много источников, много задач в Airflow. Чтобы ощутить масштаб, достаточно, пожалуй, взглянуть на одну картинку.

Читать далее
Total votes 13: ↑12 and ↓1+15
Comments4

Тебе нужна своя стратегия

Level of difficultyEasy
Reading time10 min
Views32K

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

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

Сейчас мы пройдем путь от вашего прошлого, до вашего будущего; от ваших целей, до задачи на ближайшие 2 часа.

Создать свою стратегию
Total votes 39: ↑27 and ↓12+26
Comments50

Как работает компьютер: глубокое погружение (на примере Linux)

Level of difficultyHard
Reading time48 min
Views159K



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


Наконец, я сломалась и начала это выяснять. Мне пришлось перелопатить тонны ресурсов разного качества и иногда противоречащих друг другу. Несколько недель исследований и почти 40 страниц заметок спустя я решила, что гораздо лучше понимаю, как работают компьютеры от запуска до выполнения программы. Я бы убила за статью, в которой объясняется все, что я узнала, поэтому я решила написать эту статью.


И, как говорится, ты по-настоящему знаешь что-то, только если можешь объяснить это другому.


Более удобный формат статьи.

Читать дальше →
Total votes 151: ↑151 and ↓0+151
Comments36

Оптимизация SQL-запросов в Oracle

Level of difficultyMedium
Reading time13 min
Views51K

Всем привет. Меня зовут Михаил Потапов, я - главный системный аналитик компании "Ростелеком Информационные Технологии". В компании занимаюсь разработкой отчетности для сегмента B2B и проектированием хранилища данных, на базе которого эта отчетность функционирует. Работоспособность каждого отчета напрямую зависит от корректно выстроенных SQL-запросов к базе данных Oracle, поскольку при работе с большими объемами данных скорость выполнения запросов может существенно снижаться. Снижение скорости сильно затрудняет работу с отчетами для конечного пользователя, а в некоторых случаях и вовсе делает ее невозможной.

В этой статье мы рассмотрим основные принципы оптимизации запросов в Oracle SQL, которые помогут ускорить работу с базой данных и повысить эффективность работы. Сразу отмечу, что статья рассчитана на junior и middle-специалистов, которые пишут сложные запросы к базе данных, работают с большими объемами данных и при этом ранее с вопросом оптимизации не сталкивались. Статья не содержит подробное руководство к действию, но описывает базовые основы "культуры кода", соблюдение которых позволит снизить нагрузку на БД и даст возможность более эффективно извлекать из нее данные.

Читать далее
Total votes 18: ↑14 and ↓4+10
Comments23

Описательная статистика перформанс-распределений

Reading time40 min
Views17K

Нужна ли разработчику математика? Если анализировать замеры производительности, то матстатистика понадобится. Но оказывается, о ней полезно знать не совсем то, что в учебниках. А что тогда?

Андрей Акиньшин @DreamWalker поговорил об этом в докладе на нашей конференции Heisenbug. И теперь, пока мы готовим следующий Heisenbug (где тоже будут доклады о производительности), решили опубликовать текстовую версию его выступления (а для тех, кому удобнее другие форматы, прикрепляем видеозапись и слайды). Предупреждаем: много букв, цифр, графиков и формул!

Читать далее
Total votes 51: ↑51 and ↓0+51
Comments4

Я нашёл 213 уязвимостей безопасности в кодовой базе при помощи GPT-3

Reading time9 min
Views10K

«Меня удручает ваш уровень кибербезопасности»

Краткая сводка: GPT-3 обнаружила 213 уязвимостей безопасности в git-репозитории. Для сравнения: один из лучших коммерческих инструментов на рынке (разработанный респектабельной компанией, которая занимается кибербезопасностью) нашёл лишь 99 проблем; впрочем, этот инструмент предоставляет контекст в более структурированном формате. После ручной проверки случайной выборки 50 из 213 уязвимостей, выявленных GPT-3, только одна оказалась ложноположительной. У обоих инструментов было много ложноотрицательных результатов.
Читать дальше →
Total votes 20: ↑17 and ↓3+22
Comments21

Chrome Headless против cloudflare JS challenge

Level of difficultyMedium
Reading time41 min
Views24K

Автоматизация сбора информации с различных ресурсов - обычная задача для людей разных сфер деятельности. Жаль, что не всегда бывает достаточно сделать простой GET запрос и разобрать полученный html. Веб-сайты, с которых собираются данные, принимают защитные меры для предотвращения автоматизированных запросов. Одной из таких мер является использование cloudflare. Сегодня мы посмотрим, как cloudflare выявляет ботов через javascript и коснёмся темы деобфускации скриптов.

Читать далее
Total votes 82: ↑82 and ↓0+82
Comments6

Блокчейн аналитика в Dune Analytics на примере Uniswap

Level of difficultyMedium
Reading time8 min
Views3.3K

Есть такая платформа Dune Analytics, с помощью которой можно делать аналитику по данным из блокчейна, строить графики и дэшборды. В декабре 2022го в коллаборации с Uniswap они запустили курс 12DaysOfDune, в котором я поучаствовал. Хочу поделиться с вами заданиями первой недели курса и вариантами решений.

В результате вы узнаете, что представляет собой Dune, научитесь делать аналитику самостоятельно на примере Uniswap. Uniswap — это протокол децентрализованного обмена и крупнейший сервис для обмена криптовалюты (децентрализованная биржа).

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Бесит, что err != nil: главные инсайты из опроса Go-разработчиков

Reading time9 min
Views22K

Месяц назад мы вместе с Хабром спросили у Go‑разработчиков, чем они живут, над какими задачами работают и где черпают полезную информацию о Go. В этом посте расскажем об основных инсайтах, а также узнаем, почему многие Go‑разработчики знают Python и мечтают выучить Rust.

Читать далее
Total votes 15: ↑14 and ↓1+17
Comments13

Декораторы, о которых вам не расскажут

Reading time11 min
Views31K

От переводчика: мне понравился подход к объяснению декораторов, описанный в этой статье, а так как других вариантов перевода я не нашёл, я решил поделиться этим с аудиторией Хабра. Надеюсь что этот текст будет полезен как новичкам, так и опытным программистам.

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

Цель этого краткого руководства — развеять мифы, которые вы слышали о декораторах, и показать вам другие их стороны, о которых вы и не подозревали.

Читать далее
Total votes 42: ↑41 and ↓1+49
Comments12

Английский, которому меня не учили

Reading time14 min
Views76K

Или максимы Английского языка, которые бы я хотел знать 20 лет назад.

Чем отличается хороший геймер от плохого? Хороший геймер сидит и изучает игру. Он знает каждый закуток. Он может без запинки назвать все характеристики всех юнитов в Star Craft. А самый крутой игрок знает все пропускные способности желтых, красных и синих конвейеров. А плохой игрок использует чит-коды или assistant apps. 

Можно сколько угодно сидеть и жаловаться о том, что правила сложны. А можно просто взять, изучить эти правила и уделать наисложнейшую игру.

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

В этой статье я хочу вам показать основные моменты, которые помогли мне хорошо овладеть языком. И надеюсь, что понимание этих моментов поможет и вам. 

Okay, let's go...
Total votes 103: ↑101 and ↓2+130
Comments174

Единственный способ полноценного контроля скорости на горных лыжах и сноуборде. Физика

Reading time5 min
Views39K

В арсенале горнолыжника и сноубордиста есть всего два способа контроля скорости - удлинение траектории и проскальзывание.

Удлинение траектории происходит за счёт направления снаряда под углом к линии падения склона. Чем ближе этот угол к перпендикуляру, тем длиннее траектория. Можно смотреть на это как на уменьшение угла падения реальной траектории спуска - выбирая длинную траекторию мы уменьшаем угол наклона по линии движения.

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

Единственный способ полноценного контроля
Total votes 40: ↑28 and ↓12+27
Comments79

Жарим TOAST в PostgreSQL

Reading time12 min
Views26K

У нас не подгорит!

Как PostgreSQL хранит большие значения столбцов? Какие явные и неявные ограничения есть у существующего механизма хранения? Что за проблемы вызваны этими ограничениями? И как можно решить эти проблемы, и расширить возможности PostgreSQL? Об этом, и чуть больше - данная статья.

Читать далее
Total votes 58: ↑58 and ↓0+58
Comments15

Приколы с ChatGPT: обмануть или быть обманутым

Reading time4 min
Views72K

Привет, Хабр! В этой статье я написал про ошибки и приколы, с которыми я столкнулся за пару дней использования ChatGPT. Сразу оговорюсь — таких жёстких примеров, как на картинке, у меня не было. Но были даже более интересные!

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

(не) Безопасный дайджест: космическая социнженерия, сервера нараспашку и атаки на гигантов

Reading time5 min
Views876

В конце месяца традиционно собрали для вас подборку самых громких ИБ-инцидентов. В октябрьской программе: подрядчик Toyota, который случайно загрузил часть кода в открытый доступ, космонавт под прикрытием, кибератаки на австралийские компании и масштабная утечка данных клиентов Microsoft.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments0

Что делают арбитраж боты, что из себя представляет MEV, и почему это проблема всех блокчейнов

Reading time5 min
Views17K

Disclaimer: обычно я пишу про крипту почти на ежедневной основе в канале миллениалы делают веб3, но когда удается найти что-то особенно интересное, получается лонгрид.

MEV maximum value that can be extracted from block production in excess of the standard block reward and gas fees by including, excluding, and changing the order of transactions in a block [initially referred to as "miner extractable value" во времена майнеров и PoW, но после мерджа у нас ни первого ни второго].

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

Assuming searchers are economically rational, the gas fee that a searcher is willing to pay will be an amount up to 100% of the searcher's MEV.

Но фокус в том что за одну транзакцию могут бороться много серчеров сразу (например в случае дексов) и газ физ могут правда доходить до 90% от MEV.

Так как стоимость транзакции = цена за газ * количетсво газа, а цена за газ -- высоко конкурентная переменная, появились програмируемые транзакции которые минимизируют необходимое количество газа.

Каким образом можно минимизировать необходимое количество газа:

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

Оконные функции SQL простым языком с примерами

Reading time4 min
Views551K

Привет всем!

Сразу хочется отметить, что данная статья написана исключительно для людей, начинающих свое путь в изучении SQL и оконных функций. Здесь могут быть не разобраны сложные применения функций и могут не использоваться сложные формулировки определений - все написано максимально простым языком для базового понимания. 

P.S. Если автор что-то не разобрал и не написал, значит он посчитал это не обязательным в рамках этой статьи))) 

Для примеров будем использовать небольшую таблицу, которая показывает оценки учеников по разным предметам. В БД табличка выглядит следующим образом

Читать далее
Total votes 49: ↑46 and ↓3+58
Comments16

Добавляем ботов в мультиплеерный шутер на Unity

Reading time7 min
Views9.3K

С ростом проекта в него приходит постоянно приходит новая аудитория: как матерые игроки, так и новички в жанре. Закинуть всех в один матч можно, но первым будет скучно, а вторым — сложно. В итоге всех можно потерять уже на старте.

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

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

Читать далее
Total votes 43: ↑42 and ↓1+45
Comments2
1
23 ...

Information

Rating
Does not participate
Location
Bansko, Blagoevgrad, Болгария
Registered
Activity