Обновить

Моя лента

Тип публикации
Порог рейтинга
Уровень сложности
Предупреждение
Войдите или зарегистрируйтесь, чтобы настроить фильтры
Новость

Надёжность, качество, безопасность ПО: методология и инструменты

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

Мы запускаем новый цикл вебинаров "Надёжность, качество, безопасность ПО: методология и инструменты" ⚡️

В предыдущем цикле вебинаров "Вокруг РБПО" мы рассмотрели 25 процессов из ГОСТ Р 56939—2024, направленных на создание безопасных программных решений. Теперь поговорим не только о безопасности, но и в целом о создании качественного и надёжного ПО.

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

Читать далее
Статья

Apache Iceberg: Индиана Джонс и Каталог судьбы

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

parquet - данные лежат в открытом формате - казалось бы, бери кто хочешь. Но есть неприметный артефакт, от которого зависит, увидите вы таблицы или мусор из файлов и кого вообще к ним подпустят. Это каталог. Разбираю просто, что такое Apache Iceberg, зачем ему каталог - и почему новость про Polaris важнее, чем кажется. В продолжение анонса новостей…

Читать далее
Новость

Кабмин утвердил список приложений для предустановки на гаджеты в 2027 году

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

Правительство РФ утвердило перечень приложений, обязательных для предустановки в 2027 году на смартфоны, компьютеры и смарт‑ТВ. Документ опубликовали на официальном портале правовой информации. Среди прочих в списке числятся RuStore, «Госуслуги», «ВКонтакте», «Дзен», разные приложения «Яндекса» и мессенджер «Макс».

Читать далее
Статья

Как мы настроили Customer Success в сервис деске — чтобы обслуживать, удерживать и развивать клиентов в единой системе

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

Хотите ли вы, чтобы ваш кастомер был доволен своим саксесом? Мы — очень, поэтому собирались купить систему, чтобы отслеживать использование наших продуктов и услуг, улучшать опыт клиентов и предупреждать их отток. 

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

Рассказываем, что и как настроили и какие получили результаты — со скринами и цифрами.

Читать далее
Статья

От стажёра до Head of DS: что я узнал, изучив почти 700 карьер в Data Science

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

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

В анализ были взяты анкеты из 29 вопросов дата-сайентистов всех уровней, от стажёров до Head of DS. Я посмотрел, как связаны их опыт, грейд, доход и условия работы. В опросе я спрашивал об образовании и способе входа в профессию, навыках и типах данных, с которыми работают специалисты, времени на встречах, переработках, бэкграунде руководителя, удовлетворённости работой, готовности сменить компанию и ожидаемой прибавке к зарплате.

Читать далее
Статья

Стоит ли внедрять базы знаний в банках. Считаем ROI

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

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

Читать далее
Статья

? выглядит как try/catch. Внутри — полная противоположность

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

Привет.

Спросите любого, что делает ?, и услышите примерно одно: «сахар для match, который при ошибке делает ранний return». В целом, тут есть правда. Разворачивается ? и правда в match с return, но прячется за этим match целый трейтовый механизм — он умеет конвертировать типы, работает с вашими собственными типами и не имеет ничего общего с try/catch, хоть и выглядит похоже.

Давайте посмотрим, что компилятор на самом деле пишет вместо вашего вопросика, что такое residual в нынешнем дизайне, почему ошибке нужен отдельный тип, и как прикрутить ? к своему типу. И сразу скажу: пользоваться ? на Result и Option можно давно и на стабильном Rust, а вот реализовать поддержку ? для своего типа — это до сих пор nightly. Дальше будет видно почему.

Читать далее
Статья

Кайтен не для людей

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

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

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

Привет, я Катя Берестовая из агентства Loft. С 2008 года мы делаем контент-маркетинг для компаний. За каждым текстом — интервью с инженером, который «на встрече всё расскажет», фактчекинг, согласования с юристами клиента и редактура. Кайтен попросил рассказать, что мы про них думаем. История получилась нетривиальная: мы очень активно используем сервис управления процессами Кайтен — и почти не заходим в него руками. Туда ходят наши боты, а боты уже разговаривают с редакторами там, где им удобнее — в привычных чатах в Телеграме. Расскажу, как мы к этому пришли.

Читать далее
Пост

Один оператор сравнения чуть не удалил тысячу пользователей 

На днях наводил порядок в логике автопродления подписок Telegram-бота.
Казалось, задача на полчаса.

Если кратко: у пользователя заканчивается подписка, и бот проверяет дату планируемой оплаты.
Если срок подписки истёк и продления нет, то пользователь попадает в очередь на удаление. Всё просто.


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

Сначала я подумал, что платёж не успел записаться в базу. Проверил – платёж записался.

Потом начал искать проблему в часовом поясе. Тоже нет.

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

Причина оказалась намного проще: в фундаменте не стоял тот оператор сравнения.

Вместо subscription_end < now
я написал subscription_end <= now.


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

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

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

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

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



Что изменил:

1. Перенастроил удаление: теперь оно происходит не сразу.

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

2. Настроил перепроверку актуального состояния подписки через x часов, чтобы отсечь ложные срабатывания.

Если пользователь оплатил доступ или подписка продлилась, удаление отменяется.

3. Добавил тест на этот сценарий, чтобы избежать повторения <=ошибки.

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



Мораль:
даже очевидные условия нужно проверять на границах. 

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

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

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

Теги:
+3
Комментарии0
Пост

Открытый проект .MD this page позволяет преобразовать веб-страницу в чистый Markdown, готовый для ChatGPT, Claude, Gemini и других нейросетей. Решение очищает код сайта от рекламы, баннеров и другого мусора для отправки на обработку в ИИ. Есть предпросмотр, экспорт в .md и опция для мгновенного копирования сайта.

Теги:
+4
Комментарии1
Статья

Система триггеров на событиях Change Stream в MongoDB

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

Почти любая распределенная платформа рано или поздно сталкивается с необходимостью синхронизировать данные между своими системами. И чем выше требования к надежности и скорости доставки изменений, тем меньше остается простых решений. Бизнес-пользователям при работе с интерфейсом одной из платформ нужно знать о сущностях, заведённых во второй. Первая хранит их в реляционной СУБД (неважно, какой именно), а вторая - в документоориентированной MongoDB. До кучи, обе платформы разнесены по сети. Можно, конечно, предложить открыть оба интерфейса бок о бок и сверять данные глазами. Но это справедливо негативно скажется на финансовом обеспечении команды разработки, да и как-то не по-человечески так относиться к своим коллегам. Поэтому приходится зарабатывать доверие в коллективе честным трудом.

Встаёт вопрос: как в условиях распределённой структуры наладить транспортировку данных для взаимодействия независимых систем? Прикручивать ко всем продуктам кастомные интеграции дорого и непродуктивно. 

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

Читать далее
Статья

Недельный геймдев: #289 — 2 августа, 2026

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

Из новостей: ждём сиквел Pragmata, Double Fine уволила 23 сотрудника, продажи Subnautica 2 достигли 5 миллионов копий, NVIDIA и AMD повышают цены на GPU для партнёров.

Из интересностей: перевод King’s Bounty 1990 для DOS на русский язык, техники рендеринга воксельного мира на мобильном устройстве в Unity, как левел-дизайнеру играть в игры.

Читать далее
Пост

Как Kubernetes, Jira и Keycloak не помогли выпустить продукт

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

Первый кейс сразу интересный. Есть команда из трёх разработчиков, больше 30 репозиториев, Kubernetes, Helm, Argo CD, Keycloak, Jira и куча другой инфраструктуры. Нет только новой версии приложения, которую заказчик может нормально открыть в браузере.

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

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

Разработчики говорят, что проблема в непонятном ТЗ. Заказчик говорит, что команда не отвечает на вопросы, не доводит решения до конца, а то, что показывает, регулярно не работает.

Меня позвали разобраться.

Первым делом я попросил доступ к коду. Код лежит в собственном GitLab. Правда, сам GitLab периодически тоже лежит, поэтому попасть туда получилось не сразу.

Когда доступ появился, меня встретила авторизация через Keycloak.

Напомню: разработчиков трое.

Спрашиваю, как деплоят. Kubernetes, Helm, Argo CD. Открываю список репозиториев, а их больше 30. Часть занята общими библиотеками и Docker images, но большая часть приходится на отдельные сервисы.

Потом выяснилось, что у команды есть собственные registry, Jira, Grafana, VictoriaMetrics и ещё пачка инфраструктурных компонентов.

Всё это работает на мощностях заказчика. Точнее, периодически работает. То GitLab недоступен, то проблемы с кластером, то ломается ещё что-нибудь. А отдельных людей, которые могли бы постоянно следить за этим зоопарком, нет.

Старая версия приложения продолжает обслуживать пользователей. У новой тоже есть production-контур, но он сильно отстаёт от dev и пока не соответствует требованиям.

Frontend вроде бы существует. Но вживую я его до сих пор не видел, только на скриншоте.

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

Получается странная картина. Инфраструктура уже сложная. Репозиториев много. Инструментов ещё больше. А общего понимания, что считается готовым продуктом, до сих пор нет.

Дело не в том, что Kubernetes, Jira или Keycloak плохие. Вопрос в том, зачем всё это понадобилось именно сейчас и кто должен это обслуживать.

Если команда из трёх человек построила инфраструктуру, за которой не успевает следить, значит, сложность уже стала проблемой. Особенно когда она не помогает быстрее выпускать продукт.

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

Забавно, что это полная противоположность истории с The Signal.

Там ребята быстро выкатились на Vercel, но забыли настроить RLS в Supabase. А когда я поднял логи и метрики, мне сказали, что это уже какой-то очень серьёзный подход.

Тут всё наоборот. Логи есть. Метрики есть. Kubernetes есть. Даже Argo CD есть. А работающий frontend пока существует для меня только на скриншоте.

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

Нормальный вариант где-то между ними: работающий пользовательский сценарий, понятные критерии готовности, минимальная безопасность, логи, метрики и повторяемый деплой.

А вы в какой крайности?

Теги:
+4
Комментарии1

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

Пост

Друзья, я просто обязан сказать огромное спасибо всему сообществу Хабра за вашу поддержку и активность под статьей о моем проекте Kakehashi!

Вдохновившись вашими отзывами, вчера вечером я опубликовал проект на Hacker News. Результат превзошел все ожидания: прямо сейчас тред держит 204 поинта, а репозиторий набрал более 220 звезд на GitHub.

Проект попал в радар к хардкорным системщикам со всего мира. Среди тех, кто дал звезду, оказались инженеры из команд Cursor, Fly.io, Astro, создатель пакетного менеджера Pixi, разработчик Redox OS и в дискуссии на HN был легендарный автор утилиты Cydia @saurik.

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

Огромное вам спасибо! 

P.S. Хотел опубликовать в хаб «Я пиарюсь», но интерфейс не пропустил из-за нехватки кармы (нужно 30). Поэтому публикую в профильные хабы как апдейт к прошлой статье. Надеюсь на понимание!

Спасибо всем!
Спасибо всем!

Проект: https://github.com/wie-project/kakehashi

Статья на Хабре: https://habr.com/ru/articles/1065502/

Пост на Hacker News: https://news.ycombinator.com/item?id=49145937

Теги:
+12
Комментарии0
Статья

SOFROS AI Секретарь: как мы построили локальную систему для автоматического ведения протоколов

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

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

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

Так родился SOFROS AI Секретарь — система, которая автоматически превращает любую встречу в структурированный протокол с задачами и ответственными. Расскажу, как мы это сделали и что из этого вышло.

Читать далее
Статья

Как за вами следит Яндекс: часть 1/3

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

Полный реверс-инжиниринг APK Яндекса: разбираем механизмы сбора аудио, геолокации, платежных данных и списков установленного ПО

Читать далее
Новость

Microsoft с 1 августа подняла цены на Xbox по всему миру

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

С 1 августа 2026 года Microsoft повысила цены на Xbox по всему миру. Цена консолей увеличится на $100 для моделей с 512 ГБ памяти и на $150 для моделей с 1 ТБ. Кроме того, прекратится выпуск модели с 2 ТБ памяти.

Читать далее
Новость

Alibaba выпустили Qwen3.8-Max: стоит в четыре раза дешевле Opus 5, но уступает в сложном кодинге

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

Команда Qwen выпустила Qwen3.8-Max, новую флагманскую MoE-модель на 2,4 трлн параметров. На каждом токене активируются 95 млрд параметров, размер контекста составляет 1 млн токенов.

В API модель стоит $2 за миллион входных и $6 за миллион выходных токенов. Это в 2,5 раза дешевле Kimi K3 по генерации и больше чем в четыре раза дешевле Claude Opus 5.

Веса Qwen3.8-Max обещают опубликовать на Hugging Face и ModelScope на следующей неделе. Это будет первая модель Max-класса от Qwen с открытыми весами. Вместе с ней команда пообещала открыть веса Qwen3.8-27B.

Читать далее
Новость

Выпуск обновления видеоредактора с открытым исходным кодом Shotcut 26.8

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

В начале августа 2026 года состоялся релиз мультиплатформенного видеоредактора с открытым исходным кодом Shotcut 26.8, созданного на основе MLT Multimedia Framework. Исходный код проекта написан на C++ и QML (интерфейс на виджетах, а не на qml) и опубликован на GitHub под лицензией GNU General Public License v3.0. Разработка проекта этого видеоредактора началась более десяти лет назад. Предыдущая стабильная версия Shotcut 26.6 вышла в июне 2026 года.

Читать далее
Новость

Исследование: IT‑команды тратят 11 часов в неделю на проблемы с подключением к облаку

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

По данным Computer Weekly, исследователи обнаружили, что предприятия тратят больше времени на устранение неполадок с подключением к облаку из‑за возросшей нагрузки на системы искусственного интеллекта. Суммарно на эти процессы может уходить до 11 часов в неделю.

Читать далее