Обновить
0

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

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

Роскомнадзор ужесточил штрафы за персданные: 300 тысяч за неуведомление, миллион за утечку

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

С 30 мая 2025 года штрафы за нарушения в сфере персональных данных выросли до 300–700 тысяч рублей — за то, что раньше стоило 5 тысяч. Разберём требования и что можно сделать, чтобы работать спокойно.

Материал проверен экспертом по персональным данным — Алешковой Натальей.

Читать далее

Кастомные uuid на базе дженерика

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

Уже более 6 лет я использую кастомные идентификаторы - одна из классных штук, за которые обожаю go. Они незаменимы в описании бизнес-логики - невозможно перепутать порядок идентификаторов. Все вызовы становятся типобезопасными и самодокументируемыми. И писать такой легкочитаемый код очень приятно. Применяю кастомные id очень широко - от парсинга http-запроса до слоя данных.

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

Читать далее

Как получить лицензии ФСТЭК России и не получить травму: опыт Angie Software

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

Всем привет!

В сентябре 2025 года мы в Angie Software получили долгожданные лицензии ФСТЭК, которые позволят нам заняться сертификацией продуктов. К этой точке в пространстве и времени мы шли почти год, хотя изначально казалось, что сама по себе процедура представляет довольно простой алгоритм. И не должна отнимать столько времени.

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

Читать далее

Дерево Киви для поиска шаблонов по тексту

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

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

Читать далее

Праздничный обвал: подборка новогодних инфраструктурных фейлов мирового масштаба

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

Праздничные дни — это не только культовая классика по ТВ и тонны салатиков с фейерверками. Для бизнеса это рост продаж, всплеск трафика и сотни автоматических задач. Для инженерной команды это еще и проверка на прочность: достаточно одного забытого cron-а, одного просроченного сертификата или одной горячей рассылки — и вы получаете массовый инцидент в самый неудобный момент. 

В статье разберем, почему именно новогодние и рождественский ажиотаж становится проверкой для сервисов и систем. Посмотрим реальные сценарии фейлов и разборов, которые можно сразу положить в on-call playbook. Берите свое новогоднее настроение, прошу всех под кат.

Читать далее

Экспресс-анализ безопасности криптофлэшек: реальная защита или маркетинговый ход?

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

Привет, Хабр! На связи снова Иван Глинкин, руководитель группы аппаратных исследований из команды Бастиона. 

«Флешка с кодовым замком», «флешка с аппаратным шифрованием», «зашифрованный USB-накопитель», наконец, эталонное название — «криптографический модуль» (Cryptographic Module). У криптофлешки aka encrypted USB много имен, но суть от этого не меняется.

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

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

Результаты получились интересными. Подробности — под катом.

Читать далее

Объектные хранилища: чем заменить minio?

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

Как говорят у меня на родине: корпоративная жадность — двигатель миграций. И именно это мы сейчас можем наблюдать на примере MinIO — некогда любимого инструмента DevOps-инженеров для развёртывания S3-совместимого хранилища. В 2021 году они втихушку сменили лицензию на AGPL v3, а в 2025 году и вовсе выпилили веб-интерфейс из бесплатной версии. Ну и, наверное, можно подумать, что за такой удобный инструмент можно и заплатить. Но тогда встаёт вопрос: какова цена коммерческой лицензии? От $96 000 в год)

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

Читать далее

Сам себе VoLTE. Запускаем сотовую сеть 4G LTE с поддержкой звонков и SMS

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

Приветствую всех!

Два года назад я уже рассказывал о том, как запустить у себя дома базовую станцию 4G LTE. Тем не менее, в той сети работал только мобильный интернет, тогда как при попытке позвонить или отправить SMS связь немедленно обрывалась.

Самое время восполнить это упущение. Сегодня мы поднимем сеть, в которой будут работать все эти функции. Заодно разберёмся, как работают звонки в LTE-сетях, как запустить такую сеть при помощи SDR и как заставить это всё работать. Как водится, будет много интересного.

Open5GS

BBRv3, FEC и QUIC: как мы удержали jitter <1 мс и стабилизировали RU<->EU

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

BBRv3, FEC и QUIC: как мы удержали jitter <1 мс и стабилизировали RU↔EU.

Мы стабилизировали QUIC на реальных RU↔EU трассах: jitter <1 мс PoP↔PoP, P50 ~20–21 мс RU↔EU (end-to-end). Помогли BBRv3 с динамическим pacing, HTTP/3 Datagrams/MASQUE (RFC 9297/9298/9484) и экспериментальный FEC. На профиле 5% потерь при включённом FEC видим ~+10% goodput (*recovery валидируем group-aligned тестом*). Ниже — методика, цифры и репликация. Замеры — для наших RU↔EU путей (ноябрь 2025), на других трассах цифры могут отличаться. Все тесты проводились на реальных Edge PoP узлах CloudBridge (Moscow, Frankfurt, Amsterdam) с использованием собственного инструмента quic-test.

Читать далее

История поиска бага в ядре Linux длиной в год, или нежданные нули из XFS'а

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

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

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

В этой статье описано наше исследование длиною в год,  из которого вы узнаете, почему PostgreSQL(и любое другое приложение) может падать из-за бага в ядре Linux, причём тут XFS и почему очистка памяти может быть не так полезна, как вы о ней думали.

Читать далее

IT-2025: Реквием по здравому смыслу

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

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

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

Читать далее

Связь без мобильной сети: как я развернул свою VoIP-телефонию на участке

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

Когда мобильная связь подводит, особенно важно оставаться на связи с близкими. Почему бы тогда не организовать собственную телефонную сеть на основе VoIP? Меня зовут Дима Абакумов, и под катом расскажу, как я решал эту задачу и с какими трудностями столкнулся

Читать далее

Чистим main.go: предсказуемый старт и надежный Graceful Shutdown

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

Сталкивались ли вы с болью при управлении порядком запуска и остановки зависимостей в вашем Go-сервисе?

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

Примерный сценарий жизненного цикла сервиса выглядит так:

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

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

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

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

Читать далее

Как я осознал, что не умею кодить

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

Вчера мой скрипт завис. Процессор горел на 100%. Я убил процесс.

Я Senior Developer с 10 годами опыта. Пишу на Python, знаю Java и много модных фреймворков. Но в этот момент я понял: я не умею программировать. Точнее, я умею использовать инструменты. Но я не понимаю природу вычислений.

Эта статья — о том, как одна математическая задача изменила моё понимание разработки.

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

Возможно, и тебя тоже.

Читать далее

Мифы, суеверия и народные мудрости в разработке игр

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

Существует довольно много распространённых «мудростей» о разработке игр на C++, различных обрядах и видах магии. И как это часто бывает с подобными сакральными знаниями, при внимательном осмотре - у части действительно есть право на жизнь, часть можно отправить в Каирский музей отбирать славу у мумий, а часть вообще оказывается родом из чужой реальности, и работать как предполагалось отказывается. Но это не мешает некоторым компаниям относиться к таким советам как к скрижалям, бережно принесённым с великой горы совещаний. Новым сотрудникам их передают почти с торжественностью обряда посвящения: «Так делали наши предки, так делаем и мы».

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

Понедельнишное

Хакеры начинают фишинг и выигрывают у Google

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

У мошенников нет ничего святого! Хакеры взялись за Google: подделка подписей теперь не обязательна, ведь можно заставить Google подписывать фишинговые письма валидным DKIM самостоятельно. Если раньше опытный ИБ-специалист мог сходу разобраться, где фишинговое письмо, а где — нет, сейчас это сделать в разы сложнее. И дело вовсе не в популярных нейронках, изощренном социальном инжиниринге или слитых базах.

Несем вам горячий кейс о том, как мошенники научились злоупотреблять настройкой OAuth-приложений, используя официальные инструменты Google для отправки поддельных писем от no-reply@accounts.google.com.

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

Читать далее

Взламываем Аэродромный Метеоиндикатор

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

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

Читать далее

Удивительные клеточные автоматы: вариативные окрестности (взвешенные, Гаусса, «далёкие углы/стороны»)

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


?, Хабр!

Вернёмся к классической модели. Две недели назад мы рассмотрели альтернативные окрестности для КА, из числа «признанных сообществом». Сегодня дополним эту тему интересными вариативными частностями, такими как «взвешенные окрестности» и «far corners»/«far edges».

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

:h Что здесь происходит (для новых читателей серии)
В этой серии мы разбираем клеточные автоматы – дискретную модель, основой которой является сетка из ячеек-клеток, которые изменяют (или не изменяют) своё состояние в зависимости от количества соседей.

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

Самая популярная конфигурация – «B/S», или «life-like», по названию крайне широко известного клеточного автомата «Game of Life», где B/S обозначает, что в нашем правиле мы описываем всего два параметра – количество соседей необходимых для рождения новой клетки в пустой ячейке, и количество соседей для выживания существующей клетки.

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

Для понимания сегодняшней статьи достаточно знать, что (продолжение под катом):
Читать дальше →

Удивительные клеточные автоматы: блочные КА, окрестность Марголуса

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


?, Хабр!

Сегодня мы снова немного отойдём от классической модели, и будем строить конфигурацию с самого начала, благо, никаких сложностей в этом нет. Сегодняшняя конфигурация – блочные КА – предполагает, что наша сетка разбивается на некоторые участки, собственно, блоки, для которых заранее определены инструкции перехода. Никаких вариаций – один шаблон перехода для одного шаблона расположения. Звучит так, будто мы получим набор бессвязных осцилляторов, верно? Но у конфигурации есть второе условие: каждый шаг происходит смещение сетки разбиения, за счёт чего клетки при каждой следующей итерации относятся к новому блоку. Лучше, конечно, на примере.

Самой популярной моделью построения блочных КА является разбиение на блоки 2×2, со смещением на 1 клетку по диагонали за итерацию. Данная модель носит имя своего первого и основного исследователя, пионера изучения КА – Нормана Марголуса. Хоть сам вид и называют окрестностью Марголуса, он несколько отличается логически от тех окрестностей, что мы с вами обозревали ранее. А именно: данная окрестность отображает сразу оба возможных состояния, и она не привязана ни к какой конкретной клетке.
Читать дальше →

10 зрелищных клеточных автоматов с поколениями

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

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

Сегодня мы немного дополним характеристики «life‑like» модели и добавим ещё одну часть к правилам — поколения.

?

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность