Обновить
0
0
Андрей@andreypaa

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

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

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

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели11K

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


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

Видео


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

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

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

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

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

Принципы  работы водоструйного эжектора с функцией вакуумного насоса на примере пожарного гидроэлеватора типа Г-600

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

 Характеристики  водо-водяных струйных насосов и   гидроэлеваторов. Принцип  работы гидроэлеватора с функцией вакуумного насоса.

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

Про вакуумные гидроструйные насосы (см. ссылку).

К этой группе водо-водяных струйных насосов относятся также и «элеваторы» для систем отопления.

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

Начнём с простейших водоструйных насосов.

Струйными насосами могут быть как водо-водяные, так и водо-газовые или газо-газовые насосы (см.рис.1.)

Читать далее

Как организовать себе эргономичное рабочее место

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

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

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

Двоичный поиск против вероятностного

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели7.7K

Внутри Dolt, первой в мире базе данных SQL с полнофункциональными возможностями контроля версий, таится много интересной computer science. Недавно я писал о системе хранения Dolt, в ней есть очень тонкая особенность — применение вероятностного поиска на больших выборках 64-битных целых чисел.

В любом учебном плане по Computer Science есть курс алгоритмов. Моим был CS 102, и одним из пунктов, который объяснялся в нём досконально, было то, что поиск — это, по сути, задача O(log2(N)) при условии, если данные отсортированы. За свою карьеру я многократно встречался с этим в том или ином виде — если сортируешь информацию и сохраняешь её, то стоит ожидать, что для поиска потребуется время O(log2(N)). В общем случае мы соглашаемся на время поиска O(log2(N)), потому что оказывается, что можно перебрать большой объём данных с логарифмическим коэффициентом масштабирования. Эта система работает, потому что мы уже почти автоматически сортируем всё заранее.

Но что если мы добавим дополнительные ограничения на наши данные, которые позволят нам выполнять поиск за константное время?

Будет ли эта статья историей о необязательной оптимизации? Да, будет. В этом конкретном случае поиск будет занимать гораздо меньше времени, чем чтение с диска. Мы говорим о величинах менее чем 0,1% от суммарного времени. Будет ли эта статья историей о преждевременной оптимизации? Нет, не будет. Это бы подразумевало, что мы не осознаём, что время тратится не на то. Эта статья — история о заманчивости алгоритма константного времени.

Читать далее

Delta-Rle-Huffman (DRH) Texture Format

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

Всем привет! В этой статье я опишу алгоритм работы формата сжатия изображений без потерь. Сжатие использует известные методики, которые и дали ему название. Проект начинался с простых экспериментов, которые вышли из под контроля. Не смотря на то, что формат чаще сжимает лучше чем png, никакого практического применения этот формат не имеет, оставаясь чисто академическим.

Внимание! В статье много картинок.

Кому интересно, добро пожаловать под кат!

Что внутри ноутбука Maibenben P625? Разборка модели на базе Core i5-12450H и 2.5К IPS экраном

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.8K
Рабочая офисная «лошадка» Maibenben P625 на платформе Intel Core i5-12450H. Так ли она хороша? Современный бизнес-ноутбук с приличным экраном, в металлическом корпусе и с увеличенной аккумуляторной батареей. Смотрим, что внутри и тестируем.


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

Вакуумные струйные насосы: устройства простые на вид, но таинственные по физике работы

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

Струйные насосы-эжекторы

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

Элеватор вовсе не уникальное устройство, а лишь одна из версий применения широко известного  семейства «струйных насосов».

Такими струйными насосами могут быть как водо-водяные, так и водо-газовые, газо-водяные или газо-газовые насосы. (см.рис.1.)

Читать далее

Пишем поиск семантически похожих текстов (или товаров) за полчаса на Go и Postgres (pgVector)

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


Казалось бы, в посгресе и так есть неплохой полнотекстовый поиск (tsvector/tsquery), и вы из коробки можете проиндексировать ваши тексты, а потом поискать по ним. Но на самом деле это не совсем то, что нужно — такой поиск работает лишь по чётким совпадениям слов. Т.е. postgres не догадается, что "кошка гонится за мышью" — это довольно близко к "котёнок охотится на грызуна". Как же победить такую проблему?


TLDR:


  1. Преобразовываем наши тексты в наборы чисел (векторы) при помощи API openAI.
  2. Сохраняем векторы в базе с помощью pgvector.
  3. Легко ищем близкие друг к другу векторы или ищем их по вектору-запросу.
  4. Ускоряем индексами.
Читать дальше →

Как выбрать правильный сервер c подходящими для ваших нейросетей CPU/GPU

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели17K

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

Эта статья рассказывает о наиболее важных компонентах, которые влияют на выбор сервера для искусственного интеллекта, — о центральном и графическом процессорах (CPU и GPU). Выбор подходящих процессоров и графических карт позволит запустить суперкомпьютерную платформу и значительно ускорить вычисления, связанные с искусственным интеллектом на выделенном или виртуальном (VPS) сервере.

Читать далее

На пути к 1-разрядным моделям машинного обучения

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

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

Эта статья написана в схожем ключе, но нас наиболее интересует, возможно ли напрямую квантовать предобученные модели при экстремальных настройках, в том числе, при двоичных весах (0 и 1). Уже имеющиеся работы нацелены на обучение моделей с нуля. Но в открытом доступе сейчас достаточно много отличных предобученных моделей, таких как Llama2. Более того, обучение с нуля — это ресурсозатратная задача в пересчёте как на вычисления, так и на данные, поэтому такие подходы не слишком доступны в свободном сообществе.

В этой статье мы подробно разберём крайне малоразрядное (2 и 1-разрядное) квантование предобученных моделей с применением HQQ+. HQQ+ — это адаптация HQQ (полуквадратичного квантования), в которой для повышения производительности используется адаптер с низкой размерностью. Наши результаты показывают, что при обучении лишь небольшой части весов в верхней части HQQ-квантованной модели (даже одноразрядной) качество вывода значительно возрастает, такая модель может даже превосходить небольшие модели полной точности.

Модели находятся на Hugging Face: 1-разрядная2-разрядная.

Читать далее

Безопасность в Docker: от правильной настройки хоста до демона

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

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Помогаю клиентам обеспечивать защиту инфраструктуры и участвую в разработке новых решений компании в сфере ИБ. И сейчас я начала больше погружаться в тему разработки и изучать лучшие практики по обеспечению безопасности приложений.

Все больше компаний используют контейнеры в разработке сервисов. Популярность технологии объяснима: с помощью контейнеров можно легко упаковать приложение вместе со всеми зависимостями в один образ. Его разработчики могут передавать между собой с уверенностью, что приложение запустится на любой платформе. Однако эта же популярность контейнеров приводит к рискам: в контейнерах широко распространена эксплуатация уязвимостей, которые во многом возникают из-за неаккуратного использования инструмента.

Сегодня сложно представить современное приложение без технологий контейнеризации. Поэтому я решила подробно изучить вопросы безопасности в этом направлении и собрала рекомендации, как лучше подойти к работе с Docker-платформой. Подробности под катом!
Читать дальше →

Септик и автономная канализация. Часть 2. Проектирование

Уровень сложностиПростой
Время на прочтение15 мин
Охват и читатели19K

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

Читать далее

Курс «PostgreSQL для начинающих»: #4 — Анализ запросов (ч.1 — как и зачем читать планы)

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели83K

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции мы узнаем, что такое план выполнения запроса, как и зачем его читать (и почему это совсем непросто), и о каких проблемах с производительностью базы он может сигнализировать. Разберем, что такое Seq Scan, Bitmap Heap Scan, Index Scan и почему Index Only Scan бывает нехорош, чем отличается Materialize от Memoize, а Gather Merge от "просто" Gather.

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

Читать далее

ClickHouse как бэкенд для Prometheus

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели15K

Привет! Меня зовут Михаил Кажемский, я Lead DevOps в IT‑интеграторе Hilbert Team. В последнее время к нам часто обращаются заказчики, которым нужна помощь с организацией хранения долгосрочных метрик в российских облаках. Так как для многих эта задача сейчас актуальная, в данной статье мы с моим коллегой Денисом Бабичевым решили рассказать, как мы используем мощные возможности ClickHouse для эффективного долгосрочного хранения метрик Prometheus. В статье вы найдете рекомендации по использованию инструмента и описание альтернативных решений, таких как Thanos, Grafana Mimir и Victoria Metrics.

Читать далее

Большая шпаргалка по Docker: как распилить монолитный проект на части

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели34K

Погружение в мир контейнеризации с докером — это путь к оптимизации развёртыванию приложений, а также ключ к упрощению жизни разработчиков и системных администраторов. Меня зовут Андрей Аверков, в IT c 2008 начинал пусть с аналитика-проектировщика IT систем, 11 лет в роли разработчика и последние годы на руководящих должностях. Сейчас я тимлид команды разработки из 9 человек в группе компании Кокос. Мы занимаемся созданием и поддержкой CPA платформ (gdeslon.ru, fxpartners.ru, ads.mobisharks.com), а также проектом по генерации лендингов — lpgenerator.ru. У нас большой опыт в разделении продуктов на части, поэтому, сегодня мы собрали самое основное и необходимое для работы с Docker. В нашей шпаргалке вы найдете все необходимое для успешного старта с докером: от базовых концепций и установки до продвинутых техник работы с контейнерами.

Читать далее

Создаем свой Managed K8S за 5 минут на старом железе

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели17K
image

Привет! Все больше облачных провайдеров по всему миру предлагают свои услуги по управляемому Kubernetes кластеру в их облаках. Стоимость таких сервисов практически всегда является ключевым фактором при выборе вендора, а молодые компании с отрицательной прибылью но очень большими амбициями вовсе вынуждены отдавать последние деньги за кластер, который мог бы заменить обычный Shared-хостинг за 150 рублей в месяц. Давайте разберемся.
Читать дальше →

Краткий обзор токенизаторов: что это такое и зачем это надо?

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели23K

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

Так как это сделать?

Вы можете просто пролистать книгу и прочитать ее с начала до конца, буквально вручную находя всех котиков, но… Это может занять много времени и усилий. Гораздо проще будет воспользоваться индексом в конце книги, где перечислены все места, где упоминается слово «кот». Проблема в том, что в обычной печатной книге такого нет, а вот если вы читаете электронку — да, вполне. Можно воспользоваться поиском по слову.

Но это вы так можете, а вот компьютеры — нет.

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

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

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

Читать далее

Как взломают ваш Postgres

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели16K

Все знают что плохо оставлять дефолтные пароли. Но что произойдет если поднять PostgreSQL позабыв о безопасности? Нас взломают? Как быстро взломают?

Я развернул PostgreSQL, настроил сборку логов и ниже расскажу что будет (спойлер — вас очень быстро похекают).

Что случилось?

Простой высоковольтный блок для питания разрядных трубок

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели11K

Предложенный лабораторный высоковольтный блок питания (ВВ БП) на основе автомобильной катушки зажигания (т. н. бобины) собран подручными средствами и из подножных материалов. Крайне прост, надёжен, дёшев, некапризен и ремонтопригоден. Не требует намоточных работ. Вместе с тем, позволят зажигать тлеющий разряд в трубках Гейслера, распылять геттер разрядом и прочее подобное. При работе от внешнего регулируемого низковольтного блока питания имеет и регулировку высокого напряжения. Очевидное и познавательное устройство модуля, родственное и уходящее корнями к небезызвестной индукционной «катушке Румкорфа», полезно при демонстрациях.
Читать дальше →

Превращение событий PostgreSQL в события Laravel

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели5.8K

В прошлый раз я описал, как можно поставить задачу (Job) в очередь Laravel из хранимой процедуры или триггера PostgreSQL.

В этой статье я расскажу, как можно преобразовать события, возникающие в PostgreSQL, в события Laravel.

Рабочий пример выложен на GitHub.

Читать далее

Информация

В рейтинге
Не участвует
Откуда
Мордовия, Россия
Дата рождения
Зарегистрирован
Активность