Как стать автором
Обновить

Разработка

Сначала показывать
Порог рейтинга
Уровень сложности

Как я 2 года делал приложение, которое умеет предсказывать камбеки в Dota 2

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров8K

Я работал аналитиком в одной из тир-4 команд, которая не могла пройти дальше полуфиналов. Мы выигрывали небольшие турниры, перебирали составы, готовились к матчам… но каждый раз сталкивались с одной и той же проблемой — нехваткой данных или их переизбытком.

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

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

Почему один драфт сильнее другого? На какой минуте начнётся лейт? У кого преимущество в ерли?

И вот однажды я спросил себя: «Почему в 21 веке нет алгоритма, который поможет решить эту задачу?»

Не нашёл ответа. Значит, нужно было сделать самому.

Написал товарищу, который разбирается в коде. Расписал идею, почему она сработает, и почему её ещё никто не сделал. Мы начали. Первая версия была примитивной. Даже смешно сейчас перечитывать те первые сообщения — мы сами тогда не понимали, куда катимся.

Но со временем стало получаться. Очень быстро.

Сегодня DotaDiviner — это мультиплатформенный инструмент анализа драфтов , доступный через Telegram бот, мобильное и десктоп-приложение. Он строит график силы каждой команды поминутно, показывает, когда произойдёт камбек, кто доминирует в ерли, а у кого пик силы придётся на лейт.

А ещё он умеет отправлять автоматические уведомления о матчах, где есть явное преимущество — например, как на PGL Wallachia Season 5, где можно было легко ловить коэффициенты выше 10.

Продолжение под катом.
Если тебе интересно, как всё это работает — добро пожаловать 👇

Читать далее

Логирование в конвейере дебетовых карт: как мы сделали его удобным для себя

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров702

Статья о том, как мы улучшали логи внедрением сквозных идентификаторов и не только. Делали это для того, чтобы упростить и ускорить разбор возникающих ошибок. Это в разы сократило время разбора.

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

Читать далее

Использование параметров объектов в оформлении видов для автоматизации получения чертежей в nanoCAD BIM Строительство

Время на прочтение6 мин
Количество просмотров220

Подробное руководство по работе с параметрами и автоматизации оформления чертежей в nanoCAD BIM Строительство. Особое внимание уделено инструментам для ускорения оформления документации: мастерам размеров, настройке выносок и маркеров.

Читать далее

Single Sign-On (SSO) для системных аналитиков: от основ до деталей OIDC, SAML и Kerberos

Уровень сложностиСредний
Время на прочтение20 мин
Количество просмотров2.1K

Системным аналитикам часто приходится проектировать процессы авторизации, выбирать протоколы и описывать требования к аутентификации. Но когда дело доходит до SSO (Single Sign‑On) — архитектурных решений становится неожиданно много:
OIDC, SAML, Kerberos… Что из этого выбрать и почему?

В статье — подробный разбор SSO:

Что это такое, как работает и где мы сталкиваемся с этим каждый день (вход через Google, корпоративные порталы, файловые ресурсы Windows);

Как устроены OIDC, SAML и Kerberos — и чем они отличаются на каждом этапе: от запроса до logout;

Кому какой протокол подходит и как избежать архитектурных ловушек (например, использование SAML в мобильном приложении — это боль);

И, конечно, схемы, псевдокод и чек‑листы выбора.

Узнать больше про SSO, SAML и OpenID

Продолжение статьи универсальный бокс для дрона

Уровень сложностиСредний
Время на прочтение2 мин
Количество просмотров575

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

Читать далее

Главный вопрос к почте на кириллице

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров1.6K

Почта с адресом info@пример.бел технически возможна и мы в HB.BY её поддерживаем. Но спроса почти нет. В статье разбираем, кто мечтал о кириллической почте и что от неё отталкивает, чтобы узнать, к чему всё приведёт.

Читать далее

Повышение качества обслуживания в контактном центре: как платформа Эра внедряет стандарты ISO

Время на прочтение6 мин
Количество просмотров156

Сегодня расскажем о нашем новом модуле — контроле качества в контактном центре.

В 2х словах напомним, что ЭРА — это информационно-коммуникационная платформа для автоматизации контактных центров, созданная профессионалами с 25-летним опытом в сфере коммуникационного программного обеспечения. В основе платформы лежит микросервисная архитектура, которая обеспечивает отказоустойчивость и масштабируемость системы.

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

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

Эта концепция получила название УКЦ — управление контактным центром. Понятно, что основной процесс в контактном центре — процесс обслуживания. Но чтобы это обслуживание состоялось и было эффективным, нужно инициализировать и управлять и другими процессами — управлять нагрузкой и расписанием, управлять знаниями операторов, управлять качеством, управлять мотивацией, управлять отношениями с заказчиком, управлять инфраструктурой контактного центра.

Возникает множество процессов и управляемых объектов. Мы приняли решение сфокусироваться на управленческих процессах (отсюда и название УКЦ) и подойти к их организации системно. Мы заметили, что каждый контактный центр уникален, отличается уровнем процессной зрелости и своими особенностями. Однако всем необходим четкий ориентир — эталон, к которому можно стремиться и на который можно опираться при определении требований к эффективному контактному центру с точки зрения управления и организации. Таким ориентиром мы выбрали международный стандарт ISO 18295:2017.

Читать далее

Обработка асинхронных операций с Flowable — Часть 1: Введение в новый Async Executor

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров329

Flowable Async Executor (также известный как Job Executor) — это ключевой компонент Flowable. По сути, это многократно используемый, автономный компонент, работающий внутри различных движков Flowable и обеспечивающий асинхронное выполнение логики.

Читать далее

in-аргументы в C#: чем они отличаются от ref, out, и где реально полезны

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

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

Сегодня мы рассмотрим самый — казалось бы — скромный модификатор, который способен сэкономить кучу времени в горячих участках кода. Речь, конечно, про in-аргументы. Рассмотрим, чем они отличаются от ref и out, где ими действительно стоит пользоваться, а где лучше пройти мимо.

Читать далее

Как я прокачал английский до B2 в США, разработав своё языковое приложение

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

После переезда в США мой английский был на уровне A1. Вместо курсов и приложений я решил создать собственный языковой тренажёр и заодно прокачать себя как fullstack-разработчика. В статье рассказываю как я парсил словари, получил бан, внедрил геймификацию и достиг уровня B2 за год.

Читать далее

Scala Digest. Выпуск 30

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров537

Привет, Хабр! Мы — Настя, Эвелина и Миша — бэкенд-разработчики Т-Банка, пишем код на Scala и горим желанием его популяризировать. Мы собираем и агрегируем новости из разных источников, включая Scala Times, блог Petr Zapletal и канал Scala Nishtyaki, добавляем дополнительные новости и собственные комментарии. Мотивацию мы черпаем из желания развиваться и делиться полученными знаниями.

Приветствуем любую обратную связь! (づ ◕‿◕ )づ

Читать тридцатый выпуск

Синдром бога: когда ждешь миллионы за то, что просто пишешь код

Время на прочтение2 мин
Количество просмотров31K

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

Если коротко:

Автор работает в IT с 18 лет. Сейчас ему 24. И он пишет, как несправедлив этот мир, потому что его потолок — 400k. Видимо, за умение слепить форму или написать CRUD’ы должны платить миллионы.

Он жалуется, что ему ни разу в жизни не давали повышения. Утверждает, что это бывает только в фантастических рассказах. При этом он сменил 7 компаний — то есть в каждой работает в среднем меньше года. Удивительно, почему его не хотят закидывать деньгами.

Итог статьи и её автора — печален. Мы наблюдали нелепый акт самовыпила с Хабра. Сначала автор улетел в минуса, потом в read-only. После чего создал второй аккаунт, чтобы в последний путь бряцнуть своим дипломом бакалавра.

Читать далее

Что делает shuffle=True и как не сломать порядок

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

Привет, Хабр! В этой статье рассмотрим невинный на первый взгляд параметр shuffle=True в train_test_split.

Под «перемешать» подразумевается применение псевдо‑рандомного пермутационного алгоритма (обычно Fisher‑Yates) к индексам выборки до того, как мы режем её на train/test. Цель — заставить train‑и-test быть независимыми и одинаково распределёнными (i.i.d.). В scikit‑learn эта логика зашита в параметр shuffle почти всех сплиттеров. В train_test_split он True по умолчанию, что прямо сказано в документации — «shuffle bool, default=True».

Читать далее

Ближайшие события

После 13 лет разработки ReFS так и не готова заменить NTFS

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

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

Читать далее

В поисках контроллера вентиляторов

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

Шел 2022 год курс валют хорош и я решил обновил свой ПК. Собрал топовое i9 + 3080Ti (мне для работы :-)). Для хорошего охлаждения было установлено 9 вентиляторов. И все было бы хорошо если бы в небольшой квартире по вечерам/ночам гул вентиляторов начинал мешать семье.

Было принято решение собрать кастомное СЖО. Была собрана система на 2х трехсекционных радиаторах, количество вентиляторов уменьшилось до 6, но как оказалось зря, выдувать горячий воздух из корпуса все так же нужно и количество вентиляторов вернулось снова к 9, хотя и обороты стали меньше и стало тише.

В голову пришла идея отключать вентиляторы работающие без надобности. Ведь видеокарта если не играть особо не грелась. В ходе экспериментов установил, что в режиме работы и просмотра ютуба для охлаждения всего хватало 2х вентиляторов на одном радиаторе и одного радиатора на выдув, остальные можно было выключить. Поискав по интернету выбор пал на контроллер от Lian Li имеющий 4 независимых порта для вентиляторов, в процессе настройки понял для себя что не все вентиляторы могут останавливаться совсем в добавок софт для управления работал отвратительно. Немного пораскинув мозгами было принято решение собрать свой контроллер, ведь ничего особо сложного, думал я...

Читать далее

Как не облажаться с типами данных в PostgreSQL

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

Недавно вышла отличная книга PostgreSQL Mistakes and How to Avoid Them от Jimmy Angelakos — системного архитектора, практика и давнего участника сообщества PostgreSQL. Книга подробно разбирает распространённые ошибки, с которыми сталкиваются разработчики и администраторы при работе с PostgreSQL, и предлагает практичные решения: от тонкостей конфигурации и миграции до антипаттернов в SQL и выбора типов данных.

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

timestamp without time zone может ломать логику расчёта интервалов;

money — это не то, чем кажется (и почему он опасен);

char(n) и varchar(n) не дают ожидаемой экономии и даже вредны;

serial — это прошлый век, а identity — настоящее.

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

Читать далее

NoDPI4Android. Решаем проблему «деградации» YouTube теперь и на Android

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

Салют, Хабр! На связи снова я, Aragorn, со своим проектом по терроризированию Роскомпозора. В прошлый раз я рассказывал о NoDPI - утилите для "раздеградирования" YouTube и установил личный рекорд - 400 звезд на GitHub и блокировка статьи РКН через три дня после публикации.

Многие мои знакомые и люди в комментариях просили сделать версию под Android и Android TV. Я не очень дружу с Джавой и с Джавой под андроид в особенности, и поэтому такая перспектива меня не очень прельщала, но у меня был опыт написания android-приложений на python и kivy, который я и решил применить. После нескольких дней (и ночей) напряженного труда и танцев с бубном, мне наконец удалось создать NoDPI for Android, который практически не имеет аналогов. Именно о нем я и хочу сегодня рассказать. Надеюсь, статья будет вам полезна и интересна. Поехали!

Читать далее

Гит, предпосылки его появления и современное использование в веб-разработке

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

Сейчас сложно представить мир разработки программного обеспечения без git – распределенной системы контроля версий. Хотя еще 10 лет назад во многих компаниях использовались другие инструменты: CVS или SVN. Бывали даже такие команды, в которых и вовсе не велось версионирование кода. А 20 лет назад git только-только был создан Линусом Торвальдсом и начал распространяться в среде самых продвинутых разработчиков того времени — участниках опенсорс комьюнити вокруг ядра линукса.

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

Первый коммит гите был сделан 7 апреля 2005 года с описанием: Initial revision of "git", the information manager from hell. В английском языке слово гит означает «неприятный человек», и хотя история благодушно умалчивает, почему Линус назвал свой инструмент именно так, мы можем быть уверены, что в этом названии отражена та сложная обстановка, в которой оказались создатели ядра линукса в начале 21 века. Дело в том, что в начале разработки ядра Linux использовался проприетарный (то есть принадлежащий конкретной компании и не являющийся свободным) инструмент управления версиями под названием BitKeeper. Однако в 2005 году возник конфликт между разработчиками Linux и компанией-разработчиком BitKeeper, в результате которого была отозвана бесплатная лицензия разработчиков ядра.

Читать далее

Чем живут создатели ИИ? ML’щики, приоткройте чёрный ящик, расскажите о себе в нашем опросе

Время на прочтение1 мин
Количество просмотров3.3K

Пока весь мир обсуждает революцию ИИ, те, кто её творят, остаются в тени и просто делают свою работу. Именно им, ML- и DS-специалистам, человечество обязано прорывам в технологиях. Но какие они на работе и в жизни, чем интересуются и главное — что думают об ИИ, который создают? Мы решили расспросить их самих, чтобы составить честный портрет современного ML-щика. Если вы занимаетесь ML и Data Science, добавьте свои штрихи этому портрету — пройдите наш небольшой опрос. А мы потом покажем вам — и всей аудитории Хабра — получившуюся картину.

Пройти опрос

Security Week 2527: серьезная уязвимость в популярных Bluetooth-наушниках

Время на прочтение5 мин
Количество просмотров1.5K
26 июня исследователи из немецкой компании ERNW сообщили об обнаружении серьезной уязвимости в Bluetooth-модулях тайваньской компании Airoha Technology. Эта компания производит SoC, обеспечивающие передачу данных по протоколу Bluetooth. Такие чипы используются во множестве беспроводных TWS-наушников, включая популярные модели от Sony, JBL и Marshall. Специалисты ERNW пока не публикуют технические детали уязвимостей, чтобы дать время производителям наушников на подготовку патчей. Но понятен главный источник проблемы: проприетарный протокол коммуникации, реализованный в чипах Airoha и доступный без какой-либо авторизации.


Протокол (вполне вероятно, использующийся на этапе разработки и отладки) обеспечивает широчайшие возможности по контролю над устройством, включая чтение и запись в оперативную память устройства, а также модификацию прошивки. Коммуникация возможна с любых устройств (не только привязанных к наушникам) в зоне радиоприема — по протоколу BLE GATT и стандартному BD/EDR. Всего по итогам исследования ERNW были идентифицированы три уязвимости с идентификаторами CVE-2025-20700, CVE-2025-20701 и CVE-2025-20702, но речь идет об одной общей проблеме.
Читать дальше →