Pull to refresh

Technotext

DiffQuant: прямая оптимизация коэффициента Шарпа через дифференцируемый торговый симулятор

Level of difficultyHard
Reading time15 min
Reach and readers8.8K

Большинство ML-систем для трейдинга оптимизируют MSE, а оценивают по коэффициенту Sharpe. В DiffQuant этот разрыв убран: весь путь от рыночных признаков до позиции, PnL и издержек собран в единый дифференцируемый граф.

Градиент проходит не через proxy-цель, а через саму торговую механику. На двух последовательных held-out кварталах прототип показал Sharpe +1.73 и +1.15 после учёта комиссий.

Код, данные и протокол эксперимента открыты. Это не готовая торговая система - это другая постановка задачи.

Читать далее

WebGPU, библиотека Orillusion и кастомные шейдеры: как я создавал 4D Тессеракт

Level of difficultyMedium
Reading time13 min
Reach and readers6.6K

Orillusion + кастомные шейдеры: полный разбор процесса

Как зарегистрировать WGSL-шейдер, связать его с геометрией, настроить атрибуты и добиться анимации. Разбираем compute-шейдеры для GPU-вычислений и инстансинг на примере пяти вращающихся 4D-тессерактов. Если вам интересно то код и небольшие пояснения ниже.

Читать далее

Эксперимент: смогут ли бесплатные чат-боты написать Sci-Fi роман, достойный публикации на Литресе

Level of difficultyEasy
Reading time8 min
Reach and readers9.2K

Рассказываю, как получилось, что в итоге не чат-боты помогали мне писать книгу, а скорее я стал скромным соавтором, и какие выводы можно сделать после работы с четырьмя моделями одновременно.

Читать далее

Expression Templates

Level of difficultyMedium
Reading time22 min
Reach and readers11K

«Лень‑матушка вперёд нас родилась»

В этой статье я хочу рассказать о технике «Expression Templates» и её применении в библиотеке simstr.

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

Вот, к примеру, давайте рассмотрим такой простенький код.

Читать далее

Так как же всё-таки быстро конкатенировать строки в C++?

Level of difficultyMedium
Reading time9 min
Reach and readers8.8K

Всем практикующим программистам приходится конкатенировать строки. Именно конкатенировать, у нас не какой-то там JavaScript или PHP, у нас в C++ это называется вот таким заумным словом. Программисты на других языках без излишних мудрствований строки просто "складывают", даже не особо задумываясь об этой операции. Ведь что может быть проще, чем

return "The answer is " + str_answer + ", count is " + count;

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

Читать далее

Как запустить LTE TDD, когда инфраструктуры нет, но очень хочется?

Reading time46 min
Reach and readers12K

Всем привет! Меня зовут я сам прихожу Денис Вдовин, я системный архитектор в отделе мультисервисных (пакетных) сетей компании РТК-Сервис, и мне бы хотелось рассказать одну историю, которая началась с салата еще в зимние каникулы. В ней в разных пропорциях смешались ISIS, QoS, загадочный PTPv2, распределение Пуассона, теория массового обслуживания и LTE TDD, отчего она показалась мне крайне интересна и достойна публикации отдельной статьей.

Сей трактат, направленный на решение конкретной прикладной проблемы, будет довольно длинным и с каждым листом А4 сложность для понимания будет нарастать. Затрагиваются, казалось бы, совсем далекие друг от друга галактики, поэтому если вы где-то не смогли уследить за руками факира — это норма. Главное, что в конце вас ждет награда - мы научимся вычислять джиттер на обычном калькуляторе по графикам из Заббикса. Поехали!

Поехали

Синхронизируй то. Акт I: SyncE

Level of difficultyMedium
Reading time30 min
Reach and readers8.3K

Всем привет, на проводе снова я и опять буду донимать всех своей синхронизацией. В этом цикле статей предлагаю хорошенечко разобраться в фазовой синхронизации на основе протокола PTPv2 G.8275.1 и его верном спутнике технологии частотной синхронизации Synchronous Ethernet. Изучать будем от и до: физический уровень, для интереса заглянем в осциллограммки, посмотрим на сигнальный обмен, расковыряем дампы, посчитаем параметры, проведем пару сеансов разоблачения, узнаем почему QoS’ы стали нафиг не нужны, как линчевание негров и повесточка изменили PTP, поиграемся в хроматическую дисперсию, увидим какие данные можно выжать с Huawei и Juniper, а также узнаем особенности их работы и где можно неудачненько влететь. К концу пьесы выясним, почему PTP без SyncE пиво без водки деньги на ветер. Информации миллиард и на удивление почти вся по делу. Наберитесь терпения, постепенно все станет ясно.

Сегодня разговор о SyncE

Микросервис потоковой конвертации видео (Python, FFmpeg)

Level of difficultyMedium
Reading time7 min
Reach and readers8.5K

Недавно перед нами встала задача быстро реализовать микросервис для конвертации видео. Стандартным решением для таких целей является FFmpeg, который умеет читать файлы чанками (запросы HTTP Range) с URL и выводить результат в stdout. Поэтому я решил попробовать подход с потоковой конвертацией.

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

Читать далее

Как мы автоматизировали обновление, развёртывание и настройку Postgres-like СУБД для пользователей

Level of difficultyMedium
Reading time13 min
Reach and readers4.8K

Привет, Хабр! Меня зовут Роман Аминов, я руковожу группой автоматизации бизнес-сценариев в команде СУБД Pangolin в СберТехе. Это специальная доработанная сборка PostgreSQL, целевая СУБД в Сбере и не только. СУБД — сложный продукт, обновление, настройка и другие рутинные действия, связанные с её сопровождением, сопряжены с риском потери данных. Чтобы облегчить жизнь пользователям (и вдобавок разгрузить нашу техподдержку) мы разработали инструмент для автоматизации кластеров СУБД, их настройки и конфигурирования, обновления версий компонентов в их составе и обслуживание. Решение уже прошло проверку на тысячах кластеров в Сбере и я готов поделиться тем, как всё это работает.

Уточню, что мы используем систему управления конфигурациями Ansible. Всё, что нужно для её работы — это возможность устанавливать SSH-соединения и Python на удалённых серверах.

Надеюсь, статья будет полезна или натолкнёт на свои мысли автоматизаторов и администраторов СУБД и вообще всех, кто связан с базами данных. 

Читать далее

PID (ПИД) без математики: как просто понять P, I и D

Level of difficultyEasy
Reading time5 min
Reach and readers34K

PID-регулятор — частая проблема для начинающих в робототехнике: математика отпугивает. Но саму идею понять можно без формул. В этой статье я объясню P, I и D простыми словами и с визуализацией

Читать далее

Помощник читателя: визуализируем сюжет

Level of difficultyEasy
Reading time7 min
Reach and readers4.8K

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

- граф связей между героями
- хронологию событий
- карту мест действия

Читать далее

Angie — обратный прокси для безопасной локальной инфраструктуры и не только

Reading time13 min
Reach and readers7.4K

Angie — современный веб-сервер, созданный бывшими разработчиками nginx с открытым исходным кодом (лицензия BSD).

Он сочетает проверенную архитектуру nginx с новыми возможностями:

Читать далее

Принципы DOD в C++: Часть 1. Оптимизация структур

Level of difficultyEasy
Reading time7 min
Reach and readers11K

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

Читать далее

«Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки

Level of difficultyEasy
Reading time3 min
Reach and readers12K

Что будет, если столкнуть классический переборный алгоритм упаковки и «математику потока» на базе Numpy? Мы взяли реальный кейс на 398 предметов и проверили: можно ли за доли секунды найти решение, которое окажется дешевле и безопаснее ручного планирования.

Внутри — разбор «Бизнес-Ассемблера», борьба с весовыми лимитами и ответ на вопрос: почему при КПД 61% по объему контейнер может считаться идеально упакованным.

Читать далее

«База» по метрикам в Prometheus

Level of difficultyMedium
Reading time12 min
Reach and readers49K

Привет, Хабр! Меня зовут Глеб Типсин, я являюсь ведущим разработчиком продукта «Системы персонализации и геймификации» в SM Lab.

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

Материал подойдёт тем, кто только знакомится с мониторингом и хочет освоить «базу», а также тем, кто уже работает с Prometheus, но хочет "освежить" свои знания и узнать что-то новое.

Читать далее

Reverse Duck Test: как мы отсеиваем ложные срабатывания, не теряя бдительности

Level of difficultyEasy
Reading time5 min
Reach and readers6.8K

Всем привет! Сегодня расскажу вам о способе определения ложноположительных алертов, который был выработан совместно с коллегой по цеху и другом Николаем (@1Last) за время работы в SOC. К сожалению PhD в этом году перенесли, поэтому было принято решение поделится данным способом тут.

Кому он будет полезен и для какой, собственно, цели:

1. Для руководителей SOC и руководителей дежурной L1 - L2 — как способ оптимизировать ресурсы SOC (потому что мы изначально идём по более вероятному пути): структурировано и обоснованно отсеивать значительный объем шума — по нашему опыту, до 60-80% алертов на этапе роста SOC или в плохо настроенных средах.

2. Для всех сотрудников (в том числе и руководителей SOC) — эффективно развивать экспертизу: обучение аналитиков глубокому пониманию окружения и бизнес-процессов, что увеличит вероятность обнаружения сложных атак.

3. Для аналитиков — использовать в повседневной деятельности подход, положительно зарекомендовавший себя на практике, и снизить ментальную нагрузку на принятие решения о вердикте алерта.

Читать далее

Project Valhalla: революция в памяти Java

Level of difficultyEasy
Reading time9 min
Reach and readers9.8K

Java-разработчики годами жили по принципу «Everything is an object». И всё бы хорошо, если бы за это нам не приходилось платить «налогом на объект»: каждый раз, когда вы создаёте простой класс из двух полей int, JVM бережно дописывает к нему тяжёлый заголовок, упаковывает в ссылку и разбрасывает по куче, заставляя процессор страдать от постоянных промахов кеша.

Мы привыкли к этому компромиссу. Мы научились использовать примитивные коллекции и костыли, чтобы выжать производительность там, где объектная модель Java начинает буксовать. Project Valhalla призван изменить сами правила игры.

Читать далее

Как я перестал слушать «Unknown Artist — Track 01» и написал свой распознаватель музыки

Level of difficultyMedium
Reading time7 min
Reach and readers23K

12 000 MP3 без тегов, 15 лет прокрастинации, один выходной на код. Асинхронный распознаватель на Python + Shazam: как обойти rate limiting, починить кривые кодировки и не съесть всю память. Код открыт.

Читать далее

MIPI RFFE на GPIO ARM контроллера. Эмуляция проприетарного интерфейса на GPIO ARM-микроконтроллера

Level of difficultyEasy
Reading time13 min
Reach and readers6.6K

Всем привет, это моя первая статья, в рамках которой захотелось поделиться необычным для меня опытом. Возможно, кто-то найдёт здесь для себя что-то полезное. По работе пришлось столкнуться с крайне необычной микросхемой для коммутации высокочастотных (RF) сигналов.  Одна проблема – проприетарный интерфейс управления MIPI RFFE. Появился вопрос “А как этим управлять, не имея специализированных средств?”. Ответ узнаем вместе.

Читать далее