Habr.com

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

Внутри диаграммы Ганта: холст 480 на 360, палитра на 30 цветов и число без последнего бита

Fri, 10/30/2026 - 22:08

Я собираю файл конфигурации из XML так, чтобы он совпал с платформенным с точностью до бита. Диаграммы Ганта в типовых конфигурациях пустые, и на них ушло шесть дней. Внутри нашлись обычная диаграмма, воображаемый холст 480 на 360, число, у которого платформа теряет последний бит, и палитра, где серия номер -1 получает 15-й цвет. Рассказываю, как это устроено и как добывалось: дизассемблер, Frida и серия загрузок платформой.

Читать далее

История одной IT‑разработки: как мы создали софт по рассылке деловых писем

Fri, 10/30/2026 - 21:09

Всем привет! Я Дмитрий Шихаев, маркетолог для IT-компаний. Сейчас работаю с крупными IT-заказчиками, помогаю выводить технологические продукты на рынок и развиваю направление ABM-маркетинга в России.

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

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

А тогда бюджет у нас был как у студента за неделю до стипендии, техническая команда состояла из двух калек - маркетолога без знаний IT-внутрянки и начинающего автоматизатора, зато амбиции были как у всего состава Кремниевой долины.

Читать далее

Два бага, 20 часов откатов: как я чинил гонки в M:N-рантайме Nova

Fri, 10/30/2026 - 21:00

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

Три истории о гонках в M:N-рантайме языка Nova: что сломалось, как я это искал и что в итоге нашло баг. Объясняю простыми словами, знать устройство рантайма не нужно, а в конце — чек-лист для отладки гонок в многопоточном коде.

Читать далее

Свой «бесплатный» биллинг или коробочное решение — разбираемся, как выбрать оптимальный вариант

Fri, 10/30/2026 - 20:45

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

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

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

Читать далее

Впихнуть невпихуемое

Fri, 10/30/2026 - 20:38

Прогресс мчится невероятными темпами. Еще в сентябре запуск 125-миллиардной MoE-модели на домашнем ПК казался забавой для владельцев серверных стоек. А уже к концу октября ее спокойно крутят на RTX 5070, при этом 321-миллиардная модель уже работает на одиночной RTX 3090 с 64 ГБ ОЗУ.

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

Читать далее

Вместе мы можем больше: «ЛизаАлерт» на связи или что меняет спутниковый интернет в поисках пропавших людей

Fri, 10/30/2026 - 20:34

#мыпомогаемЛизаАлерт

Вместе мы можем больше: «ЛизаАлерт» на связи или что меняет спутниковый интернет в поисках пропавших людей.

К вечеру становится понятно, что человек действительно пропал...

Читать далее

[Перевод] Заменяем базу данных SQLite на 3 ГБ конечным автоматом‑преобразователем на 10 МБ

Fri, 10/30/2026 - 20:29

Примечание для любителей чисел: все значения в статье округлены до первого значимого разряда, потому что я фанат метода «zequals» Роба Истэуэя, который позволяет сразу переходить к сути при выполнении оценочных расчётов. Гораздо полезнее запомнить такую эвристику: «Один парень сократил потребление памяти в 300 раз, заменив самодельную базу данных на крошечную статическую специализированную структуру данных, которая делает именно то, что ему нужно, и ничего лишнего».

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

Она замечательно работала в первой реализации tsk, написанной на Go (о которой я уже много раз рассказывал). В ней используется несколько базовых оптимизаций. Чтобы не выполнять поиск по нескольким процентам от общего числа слов (а их было несколько сотен тысяч), которые мы встраивали непосредственно в исполняемый файл (с самого начала одной из целей проектирования было поставлять всю программу в виде одного файла .exe, одного файла .app или одного статически скомпонованного исполняемого файла), мы установили ограничение: например, возвращать только первые 50 или 100 совпадений. Кроме того, мы просто заранее кэшировали все комбинации из 1, 2 и 3 символов. После этого за целый год интенсивного личного использования я больше ни разу не замечал сколько-нибудь ощутимых задержек в работе программы. При помощи подобных простых оптимизаций мы смогли сжать префиксное дерево примерно в 60 МБ.

Однако финский язык отличается чрезвычайно развитой агглютинацией. Одно-единственное исходное слово может иметь более сотни возможных окончаний, если учитывать все их комбинации. Причём эти комбинации не образуются по какому-то простому регулярному правилу!2 Кроме того, чрезвычайно последовательная орфография финского языка означает, что написание слов точно отражает то, как носители языка действительно их произносят. Поэтому по мере добавления окончаний исходные слова причудливым образом удлиняются, изменяются и трансформируются, приобретая благозвучные формы. Всё это кажется совершенно естественным, если ты уже пару лет погружён в изучение языка. Но новичок, увидев предложение вроде «Opiskelijassammekin on leijonan sydän», с большой вероятностью споткнётся об одно конкретное слово. Одна из задач этой программы — помочь изучающему понять, где именно нужно правильно разделить слово на составляющие, и для этого она тоже включает в себя всю необходимую информацию.

Здесь префиксное дерево даёт сбой...

Читать далее

Публичный Wi‑Fi и законодательство 2026/2027 — что изменилось и как построить сеть

Fri, 10/30/2026 - 20:25

Привет, Хабр! Меня зовут Алексей, и я занимаюсь беспроводными технологиями. Эта статья посвящена обзору актуальных юридических требований в сфере публичных беспроводных сетей и обзору способов технической реализации таких сетей в 2026–2027 годах.

Написать эту статью меня побудили три вещи. Во-первых, постоянный запрос от коллег и от владельцев различных объектов, на которых действует публичный Wi-Fi, на актуальные законодательные требования к публичным сетям. Тут удивляться не приходится: законодательство постоянно докручивается, и требуется быть в курсе. Во-вторых, некоторая смена поведения злоумышленников. И наконец, в-третьих, многократный всплеск спроса на услуги по построению публичного Wi-Fi, с которым мы столкнулись летом 2026 года. В этой статье я постараюсь актуализировать информацию о публичных беспроводных сетях и рассмотрю два вопроса: юридические требования и технические способы реализации.

Читать далее

Cекс‑качели, «китайский подвальчик» и иск на пять миллионов рублей

Fri, 10/30/2026 - 19:56

Представьте ситуацию: у вас из компании уходит сотрудник, копирует ваш бренд, фотки, заказывает товар у ваших же поставщиков и роняет вам продажи. Как думаете, можно его наказать?

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

Дело — закачаешься! Пригодится каждому предпринимателю.

С чего все началось

Жила-была компания с ласкающим слух названием «Джага-Джага». Зарабатывали они тем, что продавали товары 18+ на маркетплейсах.

Продавали много, давно и хорошо. Клиенты любили компанию (и друг друга, иначе зачем еще всё это покупать).

По данным Rusprofile ООО «Джага-Джага» работали с 2012 года. В лучшие годы выручка компании достигала 100 миллионов рублей…

Взлетая выше ели, не ведая преград…

Как я поднял свой мессенджер: Nextcloud Talk на TrueNAS через свой домен

Fri, 10/30/2026 - 19:53

Я устал от ситуации с мессенджерами и настроил звонки через Nextcloud Talk для всей семьи. Потому что мама звонит в VK и не понимает, почему звонки не проходят - у меня iPhone, приложение VK удалено из стора. А значит, отозван токен для уведомлений и входящие вызовы проходят только если приложение открыто. А папа звонит в TG по старой привычке - пока включишь VPN, пока дождешься установления соединения...

Читать далее

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

Fri, 10/30/2026 - 19:48

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

Читать далее

Manic Miner. Часть 1. История хита для ZX Spectrum 1983 года

Fri, 10/30/2026 - 19:05

Не так давно вышел новый движок SpecForge (автор Neil Wright) для создания платформеров на ZX Spectrum прямо в браузере. 

Для демонстрации возможностей Нил сделал на нем игру «Тобобобо идет домой». Чувак бегает по лабиринту с чудиками и собирает монетки, которые якобы рассыпала его жена. Ссылку дам в статье.

Я погонял. Итог: добротный платформер в стиле Manic Miner. Решил в будущем разобраться с SpecForge плотнее, и попробовать сделать на нем что-то посерьезнее TOBOBOBO. Вместе с этим пришла мысль изучить историю игры Мэтью Смита про шахтера Вилли и разобраться в особенностях кода. 

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

Может, эта ретроспектива поможет тем, кто пробует писать игры для Спектрума, глубже понимать специфику платформеров 80-х.

LOAD ""⬛️

Когда пользователь медсервиса — ИИ‑агент

Fri, 10/30/2026 - 19:00

За одну неделю: Gemini получил право записывать людей к врачу, семья из Сиэтла подала иск к OpenAI за советы ChatGPT, а нейросети, как выяснилось, рекомендуют из пяти лекарств одно — то, у которого лучше SEO. Разбираю, что обязано появиться в интерфейсах сервисов про здоровье и как это проверять — по правилу, которым медицинские лаборатории живут каждое утро.

Читать далее

Честная кнопка: как сравнить нажатия игроков, если у всех разный пинг

Fri, 10/30/2026 - 18:58

Мы делаем ЖМЯК — Свою игру в браузере: табло на телевизоре или ноутбуке, а кнопки — телефоны игроков. Ничего не нужно ставить, гости заходят по QR-коду и вводят только имя.

Главное в такой игре — кнопка. Вопрос прочитан, все тянутся к телефонам, кто-то нажал первым — он и отвечает. И вот тут быстро выясняется неприятное: в браузерной игре первым часто оказывается не самый быстрый игрок, а тот, у кого быстрее интернет.

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

Читать далее

Страшно красивые: монстры занимают очередь к косметологу

Fri, 10/30/2026 - 18:57

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

Перед Хэллоуином представим, что в Центре диагностики кожи «Гельтек» открылась запись для необычных посетителей. Одного собрали по частям, другого подняли из гроба, третий поселил в себе инопланетного нахлебника. Зато жалобы знакомые: кожа сохнет, раздражается, волосы ведут себя как сволочи.

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

Читать далее

Фотосессия стоматологов без фотосессии за $3: FLUX.3 klein + ComfyUI + RunPod = 290 кадров

Fri, 10/30/2026 - 18:52

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

Читать далее

Почему мне стыдно перед собственной «Яндекс Станцией»

Fri, 10/30/2026 - 18:50

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

Под капотом там взрослые языковые модели, но главный баг (или фича) Алисы кроется не в терабайтах кремниевой мудрости. Всё дело в её голосе.

Читать далее

Старый софт на свежем Linux: свой GCC, свой OpenSSL и честный RPATH

Fri, 10/30/2026 - 18:47

А что если… нужен старый софт, но при этом хост Linux свежий?

Как вариант, можно взять, да хоть на примере питона, нужный официальный образ в докере. Да и пользоваться.

Казалось бы, проблема решена. Но есть нюанс (с). Добро пожаловать под кат.

Читать далее

Наследие Siemens: как концерн пережил две Мировые войны

Fri, 10/30/2026 - 18:37

В предыдущей части мы подробно рассказали о становлении компании Siemens и ее экспансии на глобальные рынки в начале прошлого века. В этой части речь пойдет о судьбе корпорации в период Мировых войны и между ними.

Читать далее

Подводные камни битовых полей в C++

Fri, 10/30/2026 - 18:31

Думаю, вы знаете, что C++ — язык, который разрешает вам вообще всё. А потом молча смотрит, как вы на этом подрываетесь. Обычно мы привыкли мыслить категориями байтов, но что делать, если стандартная сетка типов кажется слишком расточительной? Когда внутренний перфекционист требует компактности, на помощь приходят битовые поля. Зачем отдавать под скромный флаг “да/нет” целый восьмибитный контейнер, если можно ювелирно отрезать ровно один бит? Поставил двоеточие — и ты повелитель памяти. Но там, где начинается экономия, заканчивается порядок и предсказуемость. Программист остается один на один с тонкостями стандартов и поведением конкретных платформ. Предлагаю вместе заглянуть под капот C++ и подробно разобрать, как на самом деле устроены битовые поля.

Читать далее

Who's online

There are currently 0 users and 2 guests online.