Pull to refresh
1
0
Роман @ryanl

Пользователь

Send message

Сравнение алгоритмов ограничения частоты запросов

Level of difficultyMedium
Reading time7 min
Views6.9K

▍ Зачем ограничивать частоту?


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

Видео


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

Конечные точки API тоже часто ограничивают по частоте запросов, чтобы их ресурсы не монополизировал единственный пользователь. Представьте, что вам нужно, чтобы пользователи могли обращаться к затратной конечной точке не чаще ста раз в минуту. Это можно отслеживать при помощи счётчика, обнуляющегося каждую минуту. Все запросы после сотого в пределах этой минуты будут блокироваться. Это один из простейших алгоритмов ограничения частоты, называющийся fixed window limiter (ограничитель с фиксированным окном). Это распространённый способ управления трафиком к сервису.

Но не всегда всё так просто.

Когда начинается и заканчивается каждое одноминутное окно? Если я запущу поток запросов ближе к концу окна, смогу ли превысить лимит? Ёмкость окна восстанавливается по одному запросу за раз, или сразу на всё количество?

В этом посте мы рассмотрим три самых популярных алгоритма, чтобы ответить на каждый из этих вопросов.
Читать дальше →
Total votes 34: ↑34 and ↓0+53
Comments4

Нация высоких технологий: как создавался IT-сектор Израиля

Level of difficultyEasy
Reading time5 min
Views1.9K

Конфликты на Ближнем Востоке вспыхивают вновь и вновь. Тем интересней и показательней опыт Израиля. Постоянная борьба за независимость не помешала этому относительно молодому государству всего за 50 лет стать мировым лидером в сфере технологических инноваций. Рассказываем, как создавался израильский IT-сектор и в чем секрет его стремительного развития.

Читать далее
Total votes 14: ↑8 and ↓6+4
Comments2

Многообразие связных списков

Level of difficultyMedium
Reading time13 min
Views9.1K

Связный список — классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структуры данных и, надеюсь, вместе узнаем что‑то новое. Краем глаза увидим возможные применения связных списков. И в конце, для любителей C++, бонус: использование связного списка для сбора диагностики выделений динамической памяти в вашем коде.

Связать себя со знаниями!
Total votes 25: ↑25 and ↓0+33
Comments7

Питер Норвиг: автор лучшего в мире учебника по ИИ

Level of difficultyEasy
Reading time5 min
Views19K


Питер Норвиг (Peter Norvig) — выдающийся учёный, один из отцов современной ИИ-разработки. После сингулярности ИИ точно оставит его в живых в знак благодарности.

Норвиг не только хороший программист, но и теоретик программирования, учёный и преподаватель, в длинном резюме перечислено 58 статей, а количество цитирований на сегодняшний день составляет 78 830.

Основное признание Норвиг получил как автор учебника «Искусственный интеллект: современный подход», который в наше время считается самым популярным учебником по ИИ в вузах. Эта фундаментальная работа претерпела уже четыре переиздания.
Читать дальше →
Total votes 46: ↑42 and ↓4+57
Comments7

Вступление в мир разработки игр

Level of difficultyEasy
Reading time5 min
Views8K

Исследуйте путь профессионала в области машинного обучения и его команды, погружаясь в разработку мобильных игр. Статья рассказывает о переходе от участия в соревнованиях на Kaggle к созданию мобильного приложения «Угадай фильм». Узнайте о проблемах разработки MVP для Android, интеграции техник машинного обучения с использованием OpenCV и различных этапах разработки и публикации приложения. Погрузитесь в процесс использования ИИ для дизайна, выбора кадров из фильмов и включения интересных фактов о фильмах через ChatGPT, завершившись успешным запуском в Google Play.

Читать далее
Total votes 8: ↑6 and ↓2+6
Comments2

Kubelet в Kubernetes

Level of difficultyEasy
Reading time4 min
Views3.6K

Привет, Хабр!

Kubelet — это агент, который работает на каждом узле в кластере Kubernetes. Он отвечает за то, чтобы контейнеры в Pod'ах были запущены и функционировали в соответствии с предоставленными спецификациями PodSpec. Kubelet непрерывно общается с сервером API Kubernetes, чтобы проверять и поддерживать состояние узлов и контейнеров. Без Kubelet, управление контейнерами стало бы нестабильным и непредсказуемым, так как он обеспечивает регулярную проверку состояния и восстановление контейнеров, управляет их жизненным циклом и реагирует на изменения в конфигурации.

Читать далее
Total votes 6: ↑4 and ↓2+6
Comments0

Сравнение сборщиков мусора в Unity и .NET

Level of difficultyMedium
Reading time12 min
Views8.7K

В этой статье я хотел бы рассказать о различиях между сборкой мусора в Unity (IL2CPP) и .NET. Несмотря на то что IL2CPP существует более 10 лет, я до сих пор встречаю недоумение, когда беседа заходит на тему Garbage Collector (GC) касательно Unity. Считать реализацию GC в .NET, ровно как и в JVM, единственным существующим решением — не верно. А тем более принимать такую реализации как "по умолчанию" используемую в Unity — есть заблуждение. Надеюсь эта статья будет полезной, даст верное понимание и устранит заблуждения. Ну а в конце статьи затронем грядущие серьезные изменения в Unity.

Читать далее
Total votes 18: ↑18 and ↓0+21
Comments8

Анализ мощности статистических критериев с использованием бакетизации

Level of difficultyMedium
Reading time10 min
Views2.4K

В данной статье рассматривается влияние бакетизации на мощность статистических критериев в условиях различных распределений данных и при разном объеме выборки. Особое внимание уделено зависимости мощности критерия от количества бакетов и размера выборки. Исследование предоставляет важные выводы для проектирования и анализа A/B тестирования и других форм экспериментальных исследований.

Не кладём все яйца в одну корзину
Total votes 3: ↑3 and ↓0+4
Comments2

«Когда будет готово?». Декомпозируем задачи и оцениваем сроки без фатальных ошибок

Level of difficultyMedium
Reading time11 min
Views17K

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

Спойлер: вы все равно ошибетесь, прогнозируя сроки. Но что можно сделать? Минимизировать шанс на ошибки и сделать их менее фатальными. Я расскажу про рабочие инструменты, которые помогли мне в свое время, — брать их на вооружение или нет, решайте сами. Если вы не знаете, как подступиться к декомпозиции сложного проекта и с чего начать, — эта статья вам в помощь.

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

Обзор K8s LAN Party —  сборника задач по поиску уязвимостей в кластере Kubernetes прямо в браузере

Level of difficultyEasy
Reading time9 min
Views4K

Я продолжаю тестировать инструменты, которые помогают научиться защищать кластеры Kubernetes. На этот раз взглянем на продукт от разработчиков из компании Wiz ResearchKubernetes LAN Party, челлендж по выполнению CTF-сценариев. Выход инструмента был приурочен к прошедшей в марте этого года конференции KubeCon EMEA 2024.

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

Читать далее
Total votes 28: ↑28 and ↓0+32
Comments2

Это база: нюансы работы с Redis. Часть 2, репликация

Level of difficultyMedium
Reading time11 min
Views9.2K

Всем привет, на связи Пётр, инженер компании Nixys. В прошлой статье мы разобрали основные концепции Redis. Теперь рассмотрим базовую репликацию Redis и настроим эту БД на высокий уровень отказоустойчивости.

Читать далее
Total votes 14: ↑14 and ↓0+16
Comments2

Самое понятное объяснение парадокса близнецов

Level of difficultyMedium
Reading time5 min
Views49K

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

Кратко напомню суть парадокса

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

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

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

Читать далее
Total votes 85: ↑81 and ↓4+98
Comments408

Про ML по-серьёзному: что расскажут в докладах на I'ML

Reading time7 min
Views2.2K

Слова «доклад про AI/ML» могут звучать словно очередной рассказ про будущее, где вкалывают роботы, а не человек. Такое мы все уже слышали сто раз.

Но на нашей онлайн-конференции I'ML всё будет иначе:
— Она рассчитана на тех, кто лично использует ML в проектах.
— Она не о далёком будущем, а о вопросах, актуальных уже здесь и сейчас.
— Она не об абстрактном («было бы здорово…»), а о конкретном: «как бороться с ML-галлюцинациями», «как рекомендовать размер одежды с помощью ML».
— Она не о том, как «нейросети отберут работу», а наоборот: о ML-работе, которую нейросети нам дали.

В общем, она не для желающих просто пофантазировать, а для специалистов, желающих эффективно работать.

А что именно там будет? До конференции остался месяц, и мы представляем Хабру её программу:

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

Отправляем GC в отпуск и создаем эксзепляры классов .NET сами

Level of difficultyMedium
Reading time6 min
Views7.2K

Придерживаясь великой цитаты "правила созданы для того, чтобы их нарушать", давайте нарушим какие-то основополагающие правила CLR. Как на счет того, чтобы послать GC с его работой в отставку и самим заняться размещением в памяти экземпляров классов? Заодно разберемся, как все это работает где-то там под капотом CLR.

Читать далее
Total votes 38: ↑37 and ↓1+45
Comments32

Книга: «Podman в действии»

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

Пришло время обновить свой контейнерный движок! Менеджер контейнеров Podman обеспечивает гибкое управление слоями образов и полную совместимость с Kubernetes, а также дает возможность пользователям без прав администратора создавать, запускать непривилегированные контейнеры и управлять ими. OCI-совместимая поддержка Docker API позволяет перевести существующие контейнеры на Podman, не ломая свои скрипты и не меняя привычного порядка работы.

«Podman в действии» познакомит вас с менеджером контейнеров Podman. Простые объяснения и примеры позволят быстро разобраться с тем, что такое контейнеры, как они работают и как управлять ими. Вы получите глубокие знания об используемых Podman компонентах Linux и даже узнаете больше о Docker. Особенно ценны соображения автора Дэна Уолша по поводу безопасности контейнеров.

Для разработчиков и системных администраторов, имеющих опыт работы с Linux и Docker.
Читать дальше →
Total votes 13: ↑13 and ↓0+16
Comments0

Моделирование курса валют методом Монте-Карло

Level of difficultyEasy
Reading time12 min
Views7.8K

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

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

Ключевой аспект использования Монте-Карло в финансах — это его способность учитывать и анализировать волатильность и дрейф курсов валют. Для повышения точности моделирования и реалистичности получаемых данных часто применяется ГАРЧ модель (Generalized Autoregressive Conditional Heteroskedasticity). ГАРЧ помогает адекватно оценить и моделировать изменчивость волатильности, что является критичным при анализе финансовых временных рядов.

Идейно код выполнялся без готовых реализованных методов из различных либ.

Проект использует следующие библиотеки и инструменты:

Читать далее
Total votes 12: ↑11 and ↓1+14
Comments6

Самые интересные задачи для безопасников — Джабба одобряет

Reading time5 min
Views6.6K

Мы решили не один CTF-турнир. За плечами остались KnightCTF, 0xL4ugh и DiceCTF. Найти по-настоящему интересные и сложные задачи все труднее, поэтому будем смотреть в оба глаза и следить за несколькими мероприятиями одновременно.

На этот раз — порешаем задачи сразу двух CTF-турниров: Space Heroes и ThCon 2024. Уже интересно, что подготовили безопасники из США и Франции? Тогда добро пожаловать!
Читать дальше →
Total votes 40: ↑40 and ↓0+47
Comments2

ML-технологии, которые уже сейчас оказывают мощное влияние на бизнес

Level of difficultyEasy
Reading time11 min
Views2.9K

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

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

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

События в .NET: стандартная реализация, альтернативы, и причем тут сахар

Reading time17 min
Views6.5K

События – это объекты, которые получают уведомления о некотором действии в разрабатываемом ПО и могут запускать реакции на это действие. Разработчик может определить эти действия, добавив к событию обработчик. Разберем в этом материале само понятие событий в .NET и разные способы работы с ними.

Читать далее
Total votes 7: ↑7 and ↓0+9
Comments8

Разбираемся в ROC и AUC

Level of difficultyEasy
Reading time6 min
Views19K

Привет, Хабр!

В машинном обучение очень важны метрики оценки эффективности моделей. Среди таких метрик есть: кривые ROC и показатель AUC. Они позволяют оценивать бинарные классификаторы.

В этой статье мы как раз и разберем их.

Читать далее
Total votes 9: ↑8 and ↓1+11
Comments1

Information

Rating
6,252-nd
Location
Красноярск, Красноярский край, Россия
Date of birth
Registered
Activity