Habr.com

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

[Перевод] Миллион долларов, заработанный в студенческом общежитии

Mon, 06/01/2026 - 20:43

За свои первые каникулы в колледже, вдохновившись Satisfaction75, я создал устройство, которое назвал Dissatisfaction65 — беспроводную клавиатуру формата 65%. Не помню, почему конкретно, но, изготовив несколько проводных клавиатур, мне хотелось попробовать собрать самодельную беспроводную. Для реализации беспроводной связи я выбрал микроконтроллер Adafruit 32u4 Bluefruit LE, потому что опенсорсная клавиатурная прошивка QMK поддерживала Bluetooth конкретно с этой платой. Получившееся устройство выглядело прекрасно, но производительность была чудовищной. Из-за задержек при вводе пользоваться им было почти невозможно, и несмотря на огромный аккумулятор, работало оно от него всего несколько дней.

У компаний наподобие Logitech и Apple есть беспроводные клавиатуры с низкими задержками и долгой работой от аккумуляторов, поэтому я понимал, что это не предел. На следующие два месяца я погрузился в мир беспроводных микроконтроллеров и самодельных клавиатур. Почти сразу же я понял, что любители выбирают микрочипы Nordic, а правит в этом мире формат Pro Micro. В процессе исследований я обнаружил три микроконтроллера, разработчики которых пытались связать эти две технологии: BlueMicro, nRFMicro и BLE-Micro-Pro1.

Из-за форм-фактора BlueMicro я бы не смог изготовить большинство клавиатур Pro Micro, потому что они бы мешали друг другу. BLE-Micro-Pro был довольно дорогим, закрытым и продавался только в Японии. Ближе всего оказался nRFMicro. Сначала я решил модифицировать под свои нужды nRFMicro, но вскоре осознал, что мои цели слишком амбициозны, поэтому начал с нуля.

Читать далее

Убейте GC-спайки в играх и сервисах: коллекции без аллокаций на .NET

Mon, 06/01/2026 - 20:42

Каждый разработчик на .NET сталкивался с этим. Всё работает быстро, но иногда случается внезапный фриз. Игра проседает с 60 до 30 FPS на секунду. Сервис отвечает на запрос 100 мс вместо обычных 10. UI дёргается.

Виновник — Garbage Collector.

Когда GC решает собрать мусор, он останавливает все потоки приложения (Stop-The-World). Для игр и real-time сервисов это катастрофа.

Стандартные коллекции .NET создают мусор везде:

Читать далее

Над вершинами, где ветры

Mon, 06/01/2026 - 20:27

Над вершинами, где ветры
забыли путь к земле,
парит орёл.

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

Читать далее

Математическое обоснование оценки коэффициента шума сигнальным методом. Быстрая оценка

Mon, 06/01/2026 - 20:26

В рамках данной статьи предлагается погрузиться в математику оценки коэффициента шума (КШ) сигнальным методом через отношение сигнал-шум (С/Ш или SNR), извлечь ряд интересных и полезных моментов, связанных с собственными шумами приемных устройств. Рассмотрены вытекающие методологии оценки КШ из основной методологии.

Читать далее

1.5. Закон сохранения энергии в 4D?

Mon, 06/01/2026 - 20:15

Статья написана в продолжение предыдущих материалов:

Часть 3. Фотон4D. Проектируем апгрейд действующей системы

Часть 4. Скорость света — технические детали

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

Это означает, что энергия любой системы в любой момент времени остается постоянной, что полностью подтверждается измерениями, наблюдениями и экспериментами. А это, в свою очередь, означает, что энергия существует и преобразовывается внутри 3D пространства. Соответственно, можно достоверно утверждать, что никакая доля энергии не покидает наше 3D пространство.

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

То, как выполняется закон сохранения энергии, довольно просто можно объяснить на примере.

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

Читать далее

200 000 объектов за 2 мс: как выбирать топ-K без полной сортировки

Mon, 06/01/2026 - 20:08

В real-time играх и серверах часто возникает задача: из N объектов нужно выбрать K лучших, чтобы обновить их в этом кадре.

Читать далее

Про «случайных» людей в ИТ

Mon, 06/01/2026 - 20:06

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

Чтож, у @alex0x08получилось отличное драматическое вступление, вот только где бы мы сейчас были без иных "случайных" людей. Так навскидку человек, придумавший жанр, который сейчас собирает половину кассы всей игровой индустрии, был страховым агентом. Жанр называется RPG, человека звали Гэри Гайгэкс, а изобрел он всего-то Dungeons & Dragons.

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

Так что в следующий раз, когда вы откроете статью с заголовком в духе «можно ли войти в IT без опыта/образования/после тридцати/из совсем другой профессии», просто пролистайте этот список ещё раз. Вы всё ещё против случайных людей в IT?

Случайности неслучайны

Kampus AI — нейросеть для генерации учебных отчётов онлайн

Mon, 06/01/2026 - 19:57

Сгенерировать отчет онлайн

Отчёт по практике — отдельный вид студенческой боли. Вроде и делал что-то на практике, а как сесть и оформить всё это по требованиям кафедры — ступор. Структура, введение, описание задач, выводы, и всё по ГОСТу. Kampus AI создан как раз для таких задач — помогает студенту собрать отчёт быстрее, не тратя выходные на оформление.

Сразу честно: это не кнопка «сделать всё за меня». Это помощник который ускоряет рутину. Разберу что он реально умеет, где помогает, а где придётся доработать руками.

Читать далее

Идентификация анонимного веб-трафика и 152-ФЗ: где проходит граница легальности и как устроена техническая механика

Mon, 06/01/2026 - 19:49

Год назад я начал заниматься задачей, которая в маркетинговой индустрии формулируется так: «у вас на сайт пришло 1000 человек, заявку оставили 30 — что делать с оставшимися 970?». Чисто маркетинговый ответ — улучшать сайт, прогревать ремаркетингом, гнать в подписку. Технически — есть другой класс решений: идентифицировать часть тех 970 анонимов и инициировать контакт по телефону.

В рунете эта область с 2022–2023 годов разрослась до десятков сервисов с разной степенью легальности и разной технической архитектурой. Я работаю с одним из них (платформа INTER), но цель этой статьи — не реклама, а разбор того, как такие системы вообще устроены, где они законны, а где нет, и какие технические компромиссы за этим стоят.

Статья рассчитана на инженеров, продакт-менеджеров, юристов в IT и всех, кому интересно, как технически работает рынок «возврата ушедшего трафика».

Часть 1. Откуда берётся «соответствие»

Базовая задача: пользователь зашёл на сайт example.ru, посмотрел страницу, ушёл. С точки зрения сайта он анонимен — у него есть IP, User-Agent, набор куки, fingerprint браузера, возможно, идентификаторы рекламных систем (Яндекс Crypta, Google Click ID и так далее).

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

Условно источники делятся на три категории:

1. Согласие первой стороны (легально). Пользователь однажды оставил телефон на каком-то сайте-партнёре, при этом согласившись с обработкой ПД и передачей данных третьим лицам — это написано в политике обработки. Сайт-партнёр или DMP-агрегатор, с которым у партнёра есть договор, складывает: «вот fingerprint браузера X — вот телефон Y». Когда тот же fingerprint X появляется на сайте example.ru, происходит matching. Это самый чистый путь с точки зрения 152-ФЗ — пользователь сам дал согласие на обработку и передачу.

Читать далее

[Перевод] Перевополщение Stable Values в JDK 26

Mon, 06/01/2026 - 19:48

В новом переводе от команды Spring АйО рассмотрим ленивую инициализацию в Java , которая почти всегда значит: поле сначала null, потом double-checked locking, volatile, синхронизация. Ошибиться легко, а final не поставить. Итог - код хрупче и JVM хуже делает constant folding.

В JDK 26 (preview, JEP 526) добавили LazyConstant<T>: final поле, рецепт вычисления через Supplier, значение доступно черезget(). Supplier выполнится при первом get и только один раз успешно, даже при гонке потоков. Кроме этого значение помечается как @Stable - JVM может считать его константой и агрессивнее оптимизировать.

Граничные случаи: null нельзя; не сериализуется; исключение из Supplier пробросится и следующая попытка снова пересчитает; equals у LazyConstant - только identity.

Для 1:n есть List.ofLazy и Map.ofLazy: элементы/значения считаются по индексу/ключу по требованию и кэшируются.

Читать далее

DI в TypeScript без декораторов: почему это будущее

Mon, 06/01/2026 - 19:31

Каждый, кто пишет на TypeScript хотя бы пару лет, отлично знаком со стандартным DI-сценарием: класс, декоратор @Injectable(), флаг emitDecoratorMetadata в конфиге и рантайм-магия фреймворка. Этот подход казался прорывным в 2015 году, но современный TypeScript ушел далеко вперед. У нас появились мощнейший статический анализ и продвинутый вывод типов, в то время как популярные DI-контейнеры вроде NestJS, InversifyJS или TSyringe будто законсервировались в прошлом.

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

Но что, если заставить компилятор TypeScript проверять валидность всего графа зависимостей еще до запуска кода? Без декораторов, reflect-metadata, кастомных трансформеров и тяжелой кодогенерации.

В этой статье мы разберем концепцию «экстремальной типизации» на примере InferDI — первого DI-контейнера, где сам граф зависимостей вместе с lifetime-правилами перенесен напрямую в систему типов. Мы поговорим о фундаментальных вещах: почему полный отказ от «удобной» магии аннотаций в пользу 100% ванильного TypeScript — это лучшая инвестиция в архитектуру, безопасность, скорость сборки и долговечность вашего проекта на годы вперед.

Читать далее

Любопытство как операционная система

Mon, 06/01/2026 - 19:30

Как эволюция и инженеры строят сознание

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

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

Я попробую рассказать об этом с точки зрения психотерапии и нейронауки. Если статья Вечернего про эпистемическую сторону предиктивного мозга (как мозг видит), то эта про его аффективную и мотивационную сторону (что им движет). За последние сорок лет нейронаука, психология и инженерия независимо друг от друга двигаются к одному и тому же ответу. И ответ оказался не таким, какого ожидала европейская философия последние двести лет.

Читать далее

Я стёрла себя из названия собственной студии, звучит как ошибка, но я знала, что делаю

Mon, 06/01/2026 - 19:25

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

В 2021 году у меня началась сильная аллергия, и врач сказал: всё, больше в маникюре не работаем. В другой сфере я себя тогда не видела. Так что решила всё делегировать.

Читать далее

HikariCP в проде: пять настроек, которые часто крутят неправильно

Mon, 06/01/2026 - 19:25

В проде connection pool редко падает громко — чаще он тихо превращает сервис в очередь ожидания: запросы висят, база задыхается, Kubernetes начинает перезапускать поды, а в логах всплывает знакомое Connection is not available.

В этой статье разбираем пять настроек HikariCP, которые чаще всего крутят «на глаз»: размер пула, minimumIdle, maxLifetime, keepaliveTime и connectionTimeout. Покажем, почему «поставить побольше» почти всегда плохая идея, как таймауты инфраструктуры ломают соединения и какие метрики стоит вывести в Grafana, чтобы увидеть проблему до инцидента.

Читать далее

AI-компаньон в проде на третьем месяце — 5 архитектурных решений и инфра-тюнинг

Mon, 06/01/2026 - 19:22

Каждый, кто пробовал собрать AI-чат по типовой схеме — chat-completions API, OpenAI Memory, один эндпоинт Stable Diffusion — рано или поздно упирается в одни и те же стены. Бот забывает разговор через десять реплик. Иногда сервер бодро отвечает HTTP 200, а внутри пустая строка: ни ошибки, ни таймаута, модель просто отказалась говорить и сделала это молча. Один и тот же запрос рисует двух разных персонажей. А одеть нарисованного персонажа в конкретное платье из каталога не получается вообще.

Читать далее

[Перевод] Пропозициональная интерпретируемость в искусственном интеллекте

Mon, 06/01/2026 - 19:18

Тема "возможно ли сознание в машине?" не перестаёт быть одной из самых важных для человечества по состоянию на сегодня, май 2026 года.

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

См. также предыдущие переводы Дэвида Чалмерса: Может ли большая языковая модель обладать сознанием? и Требует ли мышление наличия чувств и сенсорики? От чистых мыслителей к большим языковым моделям.

Читать далее

Почему сотрудники бросают ИИ после первой попытки — и как это исправить

Mon, 06/01/2026 - 19:18

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

Читать далее

Как наши детские травмы влияют на выбор профессии

Mon, 06/01/2026 - 19:13

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

- Смотрят характеристики и отзывы;

- Сравнивают денежный аспект.

- Оценивают перспективы.

А потом принимают, как кажется, взвешенное и рациональное решение.

Читать далее

Deep Work: как выделить 4 часа для глубокой работы и не отвлекаться

Mon, 06/01/2026 - 19:06

Вы садитесь писать код, делать архитектуру или готовить ТЗ — и через 40 минут обнаруживаете 12 открытых вкладок, 3 непрочитанных уведомления в Slack и стойкое ощущение, что не сделали ничего. 

Сейчас 11 утра, я пишу эту статью — и у меня открыта 31 вкладка, в трее маячат Телеграм, Макс и Яндекс.Почта. 

Так что систему, о которой пойдёт речь, мы будем разбирать вместе — я чуть впереди, вы следом. Никаких мотивационных призывов «просто сосредоточься» — только конкретные шаги, после которых 4 часа глубокой работы перестанут быть несбыточной мечтой.

Читать далее

(Почти) полноценный компьютер-консоль за 1200 рублей. Изучаем GameStick Lite

Mon, 06/01/2026 - 19:06

В прошлой статье про китайскую PlayStaion 5, я вскользь упомянул GameStick Lite — миниатюрную игровую консоль в формате «флэшки», которую можно купить всего за 1200 рублей новой. За такую скромную сумму, производитель кладет в комплект целых два беспроводных геймпада, флэшку и переходник на HDMI. Для большинства пользователей, эта консоль — самая обычная «многоигровка», на манер новодельных клонов SEGA Mega Drive и NES, однако на практике — это почти полноценный компьютер...

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

Читать далее

Who's online

There are currently 1 user and 17 guests online.