Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 58 min 15 sec ago

Восстановление глючной клавиатуры с помощью QMK и STM32F103

Thu, 11/20/2025 - 04:21

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

Зарегистрировался, чтобы поделиться статьёй о восстановлении работоспособности механической клавиатуры Royal Kludge R87 Pro. Быть может, она кому-то поможет в восстановлении своей клавиатуры, используя МК (STM32F103R8T6) или просто я опишу здесь некоторые моменты того, чего не было описано в других статьях на различных ресурсах, в т.ч. и вот здесь - https://habr.com/ru/articles/857914/. т.к. было потрачено очень много, благо, свободного времени на её восстановление, хочу поделиться опытом. Не буду использовать ссылки и то, как установить qmk на windows и какие команды все это компилировать.

Читать далее

Как всплывающее окно в WebView съело мои два дня (viewport и с чем его кушать)

Thu, 11/20/2025 - 03:51

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

У меня это произошло со скромным всплывающим окном внутри WebView.

Задача была максимально скучной: на экране с WebView пользователь нажимает кнопку “Exit”, а веб-страница показывает попап подтверждения. На старом коде — всё идеально. На браузере — идеально. На новом инфраструктурном слое WebView — попап появляется на миг и тут же закрывается сам, как будто кто-то тайно играет в “крестики” за пользователя.

Никаких ошибок. Никаких исключений.

Просто “блип”… и пустота.

То самое чувство, когда ты нажимаешь кнопку, а мир делает вид, что “ничего не было”.

И это — пролог к истории о том, как два дня моей жизни сгорели на алтаре WebView.

Читать далее

Reinforcement Learning: Model-free & Deep RL

Thu, 11/20/2025 - 03:45

Продолжаю погружаться в Reinforcement Learning. Здесь продолжение статьи Intro Reinforcement Learning.

Если предыдущая часть помогла вам понять, что такое среда, агент, награды и функции ценности, то здесь мы сделаем шаг дальше: мы переходим к model-free алгоритмам и Deep Reinforcement Learning, где агент учится оптимальной стратегии, не имея прямого доступа к модели среды.

Читать далее

Аморальный патч для Intel DRM

Wed, 11/19/2025 - 23:53

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

А значит снова пришло время карать и патчить!

Читать далее

MLAG как замена Spanning Tree

Wed, 11/19/2025 - 23:46

Сетевой протокол канального уровня Spanning Tree достаточно широко распространен в современных сетях. Его используют для борьбы с закольцовыванием сетевой топологии. Однако, STP не позволяет полностью использовать каналы, к которым подключены несколько линков. Плюс к этому у STP относительно большое время сходимости и необходимость передавать трафик через корневой коммутатор, то есть единая точка отказа.

В качестве одной из альтернатив Spanning Tree можно воспользоваться MLAG. Multi-Chassis Link Aggregation (MLAG) — технология, обеспечивающая балансировку нагрузки и надежность каналов. В этой статье рассматриваются значение, важность и потенциальные варианты использования MC-LAG на различных уровнях сети.

Читать далее

Снижаем когнитивную сложность при проектировании архитектуры приложения

Wed, 11/19/2025 - 23:42

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

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

Пора этой порочной практике сказать решительное НЕТ!

Сказать решительное НЕТ

Экономика цифровых иллюзий

Wed, 11/19/2025 - 22:59

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

Как это работает на самом деле? Тот же «Кинопоиск» заключает лицензионные договоры с правообладателями, одни фильмы он включает в подписку, другие предлагает «в аренду» или «в продажу». Но когда пользователь «покупает» фильм, юридически это не покупка в привычном смысле, а заключение сублицензионного договора. И стоит основному договору между сервисом и правообладателем закончиться, рушится и вся цепочка — вместе с вашей «покупкой». Фильм попросту исчезает из библиотеки, как будто его там никогда не было.

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

Неудивительно, что подобные истории вызвали волну возмущения и в игровой индустрии. Так появилась инициатива с красноречивым названием Stop Killing Games. Её участники возмущены тем, что издатели продают игры, но при этом оставляют за собой право в любой момент их «убить» — например, закрыть серверы, без которых даже одиночный режим становится недоступным. Игра вроде бы куплена, но по факту она исчезает вместе с отключённой инфраструктурой.

Читать далее

Google Antigravity и Gemini 3 Pro: что реально меняется в разработке и почему это не убийца Cursor

Wed, 11/19/2025 - 22:08

18 ноября 2025 Google представил новую связку: модель Gemini 3 Pro и IDE Google Antigravity. Первая - про управляемое рассуждение, длинный контекст и мультимодальность. Вторая - про мультиагентную разработку с артефактами и «прозрачными» шагами. В ленте мгновенно пошли заголовки «Cursor мертв».

В этой статье разбираем, что именно Google запустил, почему слова "самая умная модель" - преувеличение, чем Antigravity отличается от Cursor, какие сценарии разработки уже меняются, и где пока еще рано бросать привычный стек.

Читать далее

IPv6 для сайта, и не только

Wed, 11/19/2025 - 21:23

А вот кстати еще один способ подключить IPv6, без регистрации у туннельных брокеров, даже если хостер не выдает адресов:

Для обычных IPv4-адресов выделена специальная сеть в формате IPv6, адреса в ней имеют вид 2002:XXXX:XXXX::/48.
То есть, если у вас есть выделенный 1 IP-адрес - считайте, что вам выделена и вот такая сеть IPv6, или 65536 подсетей /64 - просто вам об этом забыли рассказать.

Читать далее

Щёлк-щёлк — и поехали: как релейная автоматика стала прообразом IIoT. Часть 2

Wed, 11/19/2025 - 21:05

Напомню, что мы исследуем историю релейной автоматики и, неразрывно связанной с ней, релейной логики. И пытаемся понять, как в первой половине ХХ века огромные заводы работали, выполняли сложнейшие операции и почти не сбоили. Хотя все современные инженеры IIoT на тот момент еще даже не родились, а устройства ПЛК только шли в разработку. 

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

Читать далее

Кейс: Как разрушить чужой бизнес на Авито и почему техподдержка вас просто пошлет

Wed, 11/19/2025 - 20:47

Над Москвой сильный туман. Самолет начинает заходить на посадку, пилоту ничего не видно. Вдруг из-за тумана появляется небоскреб, в окне кто-то маячет. Летчик высовывается и кричит: - Где мы?

В ответ: - В самолете!

Летчик кивает и уверенно, с точностью до метра, сажает самолет. После посадки второй пилот спрашивает: - Как тебе это удалось?

- Я задал простой вопрос и получил на него 100% правильный, но совершенно бесполезный ответ. Тогда я понял, что мы пролетаем офис техподдержки Авито. А дорогу дальше я знаю!

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

Читать далее

Выживание в ASO: зачем нужен якорь, семантическое ядро и ASA

Wed, 11/19/2025 - 20:34

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

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

Читать далее

Громче, ещё громче. Новые умные телевизоры Sber с голосовым управлением — технологией Farfield

Wed, 11/19/2025 - 20:20

Салют, Хабр!

Сегодня мы представили новые умные телевизоры Sber серии 7000 с голосовым управлением без пульта. Его обеспечивает технология Farfield. Этим телевизорам достаточно дать голосовую команду, чтобы включить фильм, поставить его на паузу, изменить громкость и так далее. 

Сегодня расскажем, что нового (и как именно) реализовали в серии 7000. В статье:

Farfield, loopback и особенности настройки звука в умных ТВ;

зачем обходить дерево для голосового управления в сторонних приложениях;

ГигаЧат в умных ТВ.

Читать далее

Анализируем MLP сообщество на Пикабу или как я спарсил 65 тысяч постов с Pikabu и построил интерактивный дашборд

Wed, 11/19/2025 - 20:14

Дело было вечером, делать было нечего... Я, как и многие в IT, периодически просматриваю вакансии, чтобы держать руку на пульсе рынка. И знаете, что бросается в глаза? Огромное количество позиций "Аналитик данных". Хоть это и не моя основная специализация (я больше по ML), теоретическая база у меня есть. И вот я подумал: а как бы мне сделать интересный пет-проект в этой области, чтобы и навыки прокачать, и самому не заскучать?

Читать далее

Космотекст: отправляем статьи в космос — и объявляем победителей

Wed, 11/19/2025 - 19:41

Привет от Хабра! Несем вам буквально космическую новость — мы подвели итоги конкурса космических статей и выбрали те, что отправятся в настоящий КОСМОС

Разбираемся с фильтрами в TShark, чтобы анализировать сетевой трафик прямо в консоли

Wed, 11/19/2025 - 19:38

Всем привет! На связи Сергей Баширов, ведущий разработчик из R&D-команды Cloud.ru. Сегодня поговорим о фильтрах чтения и отображения в TShark. Поделюсь лайфхаком: как быстро и просто посмотреть доступные поля для любого протокола без AI-ассистентов и поиска. Но сначала пара слов о том, как я докатился до такой жизни.

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

Поехали

Люди, которые писали код на голых нервах. О практике девяностых и нулевых, которая до сих пор работает

Wed, 11/19/2025 - 19:25

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

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

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

Читать далее

Круговорот обновлений СХД TATLIN.UNIFIED

Wed, 11/19/2025 - 19:23

Вы наверняка сталкивались с системами хранения данных семейства TATLIN или серверами VEGMAN, хотя можете об этом даже не подозревать. Например, делая заказ в интернет-магазине или пользуясь другими популярными онлайн-сервисами — в глубине ИТ-инфраструктуры для них можно обнаружить продукты YADRO. 

Всем привет, меня зовут Александр Чуриков, я технический эксперт отдела сервисного дизайна YADRO. Мы служим мостиком между сервисом и нашим R&D, который разрабатывает продукты — изучаем все боли сервиса, которые возникают при обслуживании, в том числе при обновлении и замене компонентов, и транслируем их в R&D. Предлагаю подробно разобраться в процессе обновления СХД TATLIN.UNIFIED: от операционной системы и до прошивок аппаратных компонентов.

Читать далее

[Перевод] Паттерн Transactional Outbox: от теории до продакшена

Wed, 11/19/2025 - 19:16

Transactional Outbox часто подаётся как простой рецепт: записали событие в отдельную таблицу, фоновый воркер разберётся. В реальности именно этот «временный костыль» неожиданно превращается во вторую очередь со своей конкуренцией за блокировки, дубликатами, нарушенным порядком и тихо растущими таблицами.

В статье разберемся, что именно начинает ломаться в outbox-паттерне под нагрузкой, как выбирать и блокировать события в разных СУБД, почему ретранслятор стоит отделить от API и какие гарантии доставки на самом деле получаются. А ещё — почему консюмеры должны быть идемпотентными, как следить за внутренней очередью в базе и не узнавать о проблемах уже после инцидента.

Разобрать outbox

Как IN (:ids) раздувал Hibernate Query Plan Cache до 100+ МБ и почему ANY(:ids) спас прод

Wed, 11/19/2025 - 18:32

При разборе продакшн heap dump я обнаружил странность: Hibernate Query Plan Cache занимал почти треть памяти. Обычный IN (:ids) внезапно генерировал тысячи SQL-планов и раздувал heap.

Почему так происходит и как полностью решить проблему с помощью ANY(:ids) — разбираю пошагово на реальном примере

Читать далее

Who's online

There are currently 0 users and 1 guest online.