Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 1 hour 53 min ago

Бесплатный AI-сервер на Google Таблицах: параллельные запросы к Gemini для обработки сотен новостей

Thu, 09/10/2026 - 16:40

Собрать бесплатный конвейер новостей на связке Google Таблицы + Gemini API + Telegram просто, пока не упрёшся в жесткий лимит Google Apps Script: 6 минут на запуск и долгое ожидание ответов LLM.

Мне требовался умный фильтр и саммаризатор сотен иноязычных отраслевых новостей по узкой теме (AI в энергосбережении). При последовательных запросах скрипт банально «умирал» по таймауту на первой же пачке.

В статье покажу конкретный рабочий приём: как распараллелить независимые запросы к Gemini через UrlFetchApp.fetchAll(), уложить обработку 50 анонсов в 20 секунд вместо двух минут и при этом не сломать бесплатные квоты API.

Читать далее

Как QEMU исполняет чужой код: изучаем Tiny Code Generator изнутри

Thu, 09/10/2026 - 16:34

QEMU — это не просто виртуализация с KVM. Его главная cуперсила — способность запускать программы, скомпилированные для одной архитектуры, на совершенно другом процессоре. Безо всякой поддержки со стороны хоста. Например, запустить прошивку для ARM-микроконтроллера на x86-ноутбуке.

Как это работает? Под капотом QEMU скрывается JIT-компилятор под названием TCG (Tiny Code Generator). В этой статье мы разберем его устройство на практических примерах для RISC-V и посмотрим, как инструкции превращаются из одного машинного кода в другой, как формируются блоки трансляции, и зачем там нужны longjmp и цепочки блоков.

Читать далее

Зачем и как устранить монополию академических журналов

Thu, 09/10/2026 - 16:26

В своей статье «Научная истина» я показал, что научная истина — это результат консенсуса научного сообщества, который сейчас формируется в научной прессе. Сейчас эта пресса образует закрытый клуб взаимопризнаваемых научных журналов, которые по некоторым ключевым вопросам имеют негласное, но единое мнение. Основу этого мнения составляет представление о том, что научная истина, как конечное знание, существует, и есть теории, в которых это знание представлено. По этой причине эти теории являются неприкасаемыми, а потому для любых статей, ставящих это под сомнение, доступ в официальную научную прессу закрыт. Этот запрет является интернациональным, в чем я убедился лично.

Читать далее

Bio_news: как я делал ИИшный дайджест новостей по биологии

Thu, 09/10/2026 - 16:17

Короткий дисклеймер: Проект живой, ленту бот крутит дважды в сутки. Почитать готовый результат можно в моём Telegram-канале Bio_news, а покритиковать тут. А теперь к тому, как вся эта система устроена.

Как ИИ крутит ленту Bio_news

Как не потерять интеграцию с Docker в IDE после блокировки JetBrains

Thu, 09/10/2026 - 16:11

Те, кто работал в IntelliJ IDEA, PyCharm, GoLand или WebStorm, привыкли управлять Docker прямо из IDE: запускать и останавливать контейнеры, смотреть логи, работать с томами не выходя из редактора.

В 2022 году JetBrains приостановила продажи и поддержку для пользователей из России. IDE стали недоступны через официальные каналы, а плагины из JetBrains Marketplace (в том числе и Docker-плагин) вместе с ними.

Именно по этой причине консорциум OpenIDE принял решение реализовать поддержку Docker с нуля!

Про неё сегодня и поговорим.

Читать далее

Смартфон-шпион: почему даже отключение интернета не мешает смартфону отправлять хакерам данные

Thu, 09/10/2026 - 16:09

Есть такое уютное заблуждение: выключил Wi-Fi и мобильные данные – и все, ты невидимка. Спокойно можно строить теории заговора. На деле всё немного иначе. Даже в полном офлайне встроенные датчики смартфона продолжают исправно работать и копить информацию о том, чем вы занимались. Разбираемся, как смартфоны на самом деле следят за нами без сети, чего стоит опасаться по-настоящему, а что — просто повод для паранойи.

Жми, а то не узнаешь

Как создавать необычные усложнения для часов на Wear OS

Thu, 09/10/2026 - 16:08

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

Читать далее

Vivaldi 8.2 для мобильных устройств: Ваш браузер. Ваши правила. Ваши расширения

Thu, 09/10/2026 - 16:07

Vivaldi предоставляет вам все необходимые инструменты для работы в сети. С нашим последним обновлением Vivaldi 8.2 мы даём вам больше — с полной поддержкой расширений на Android, так что вы можете настроить свой мобильный браузер именно так, как вам нужно.

Читать далее

Проектный офис — не отдел отчетности

Thu, 09/10/2026 - 16:06

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

Тут возникает вопрос о способности формулировать управленческие запросы на уровне руководства. Но ещё более важный вопрос - к тому, кто запускает проектный офис: хочет ли он быть Head of PMO или им казаться?

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

Читать далее

Идемпотентность в платёжном конвейере: «повтори запрос» — это архитектура, а не retry

Thu, 09/10/2026 - 16:04

Начну со сцены, которую видел каждый, кто эксплуатировал платёжный сервис хотя бы год.

Клиент нажимает «Оплатить». Приложение отправляет POST /payments. Проходит пять секунд, и HTTP-клиент падает по таймауту. Ретрай-политика, которую кто-то настроил год назад по гайду, ждёт двести миллисекунд и отправляет запрос ещё раз. Через минуту клиент видит в выписке два списания.

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

Первый вывод: надо выключить retry на POST. Хорошо, выключили. Теперь у нас платежи, про которые никто не знает, прошли они или нет. Поддержка разбирает их руками. Ущерб никуда не делся, он просто переехал на другой счёт.

Второй вывод: надо добавить заголовок Idempotency-Key. Добавили. Дедупликацию сделали в middleware поверх Redis. Через полгода двойное списание случается снова. Потому что Redis пережил failover и потерял ключи. Или потому что повтор пришёл через сутки из файла клиринга, а в файле никакого HTTP-заголовка нет.

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

Retry сам по себе всего лишь тактика. Он работает там, где контракт уже есть. Без контракта retry не делает систему устойчивее. Он делает её быстрее ломающейся.

Читать далее

Спустя 13 лет я всё‑таки опубликовал своё первое приложение. Без малейшего навыка программирования

Thu, 09/10/2026 - 16:02

В 2013 году я купил книгу про то, как делать приложения, и загорелся. И вот спустя 13 лет, я все же выпустил свое первое приложение — дневник тренировок, от первого запроса в Claude Code до публикации в RuStore и Google Play. Рассказываю, как без навыков программирования я сделал свое первое рабочее приложение.

Читать далее

Как рост команды сломал редакционные процессы — и как я собирала их заново

Thu, 09/10/2026 - 16:00

В Russian Business меня позвали, чтобы я наладила процессы внутри команды.

До перезапуска проект много лет существовал под брендом Rusbase. В сентябре 2024 года Альфа-Банк стал стратегическим партнёром RB.RU и приобрёл долю в компании, а 7 августа 2025 года медиа перезапустилось под новым брендом Russian Business.

На тот момент нас было около 20 человек — это вся команда, включая редакцию. После перезапуска значительная часть рабочих процессов жила в Telegram-чатах. По сути, они и были нашей основной системой управления редакцией.

Очень быстро у этой системы обнаружились четыре больных места.

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

Никто не понимал, на каком этапе находится материал. Статья уже на вычитке? Ждёт визуалов? Зависла у автора? Чтобы выяснить это, снова приходилось поднимать переписки.

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

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

Держать всё это в голове невозможно. А увидеть полную рабочую картину, если она разбросана по чатам, — тем более.

Читать далее

Не пишите свой маленький BI

Thu, 09/10/2026 - 15:54

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

Меня зовут Илья Петров, я руковожу продуктом Digital Q.Sensor BI в «Диасофт». За последний год я неоднократно слышал одну и ту же фразу от разных команд — и своих, и клиентских: «нам бы сюда буквально пару графиков». И каждый раз внутри у меня загорается тревожная лампочка, потому что я примерно знаю, чем это заканчивается.

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

Читать далее

FUSE простым языком: как обычные программы притворяются файловыми системами

Thu, 09/10/2026 - 15:51

Вы наверняка сталкивались с этим эффектом: монтируете sshfs, rclone mount или gocryptfs — и после этого файловый менеджер, редактор, архиватор и бэкапилка работают с появившимся каталогом так, будто перед ними самая обычная файловая система. Хотя байты могут жить на сервере, в S3, внутри шифрованного каталога или вообще рождаться на лету.

Как программа из userspace умудряется встать между open() и данными так, чтобы остальная система ничего особенного не заметила? Сегодня разберёмся. Заваривайте чай покрепче (ядро любит крепкий), устраивайтесь поудобнее — поговорим про FUSE.

Сразу одна оговорка, чтобы не заложить мину в фундамент статьи: не всякая «сетевая папка» или подключённый телефон в файловом менеджере — это FUSE. GNOME GVfs, KDE KIO и MTP умеют показывать похожую картину на уровне приложений. FUSE идёт глубже: он подключается к файловому стеку ядра, поэтому смонтированное дерево видят обычные программы через привычные open(2), read(2), stat(2) и компанию.

Читать далее

Life Cycle: что остаётся после того, как тебя больше нет

Thu, 09/10/2026 - 15:46

Две недели назад я ехал к отцу и не успел примерно на сорок минут.

Ему было 84 года, последние месяцы он был совсем плох, поэтому сама возможность такого исхода не была неожиданностью. Я девятый ребёнок в семье и самый младший. Я метис: отец был кумыком, мама русской. Маму я похоронил в 2016 году. Из всей большой семьи именно я жил в Ставропольском крае, и когда близкие сообщили, что отец совсем плох, я выехал к нему.

Когда приехал, его уже не было.

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

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

Меня зовут Артур Валиев. Я программист. Раньше я уже пытался разговаривать через Rust о совсем не технических вещах — например, о любви. И чем дольше я пишу код, тем чаще ловлю себя на довольно странной профессиональной деформации: я начинаю смотреть на собственную жизнь как на систему, которую желательно хотя бы не оставлять в заведомо некорректном состоянии.

На этот раз мне захотелось попробовать описать не любовь.

Мне захотелось описать конец жизненного цикла.

Читать далее

Когда разработчики ленятся писать документацию: описываем клиентский API силами нейросетей

Thu, 09/10/2026 - 15:42

Документация устаревает быстрее, чем код успевает писаться? Рассказываем, как мы построили конвейер из Python-скриптов и нейросетей, который сам находит изменения в PHP-контроллерах и обновляет документацию API Invapi.

Читать далее

Почему игра лагает, хотя показывает 200 fps

Thu, 09/10/2026 - 15:25

Средний fps – вещь, которая к реальной плавности геймплея может не иметь никакого отношения. Вообще. Даже если вы собрали топовый ПК и имеете стабильные 180 кадров в счетчике картинка все равно может дергаться. А все потому, что глаз реагирует не на количество кадров, а на равномерность их появления. И вот эту равномерность средний показатель – тот самый AVG – как раз и прячет. Значит, надо смотреть на другие цифры. Но на какие?

Читать далее

А чё, так можно было? Dictionary == List

Thu, 09/10/2026 - 15:21

Ключ-структура из числа и строки. Поиск по словарю на 10 000 таких ключей занимает 74 975 микросекунд. Тот же ключ, объявленный record struct, — 3,354 микросекунды.

Разница в 22 354 раза, и берётся она не из сравнения ключей.

Читать далее

Мы сделали свой UI Kit: 6 компонентов превратились в 30+, а одна ошибка сломала разметку во всех проектах

Thu, 09/10/2026 - 15:21

Мы сделали свой UI Kit: 6 компонентов превратились в 30+, а одна ошибка сломала разметку во всех проектах

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

Когда в проекте начинает появляться всё больше одинаковых элементов интерфейса, рано или поздно возникает вопрос: зачем каждый раз создавать один и тот же Button, Input или Select?

Мы рассматривали готовые решения, в том числе Ant Design и Material UI, но они не закрывали наши требования. Нам требовался больший контроль над внешним видом и поведением компонентов, возможность детально адаптировать их под наши задачи и учитывать требования проекта к безопасности.

Читать далее

Who's online

There are currently 0 users and 4 guests online.