Обновить

Разработка магазина на нишевой CMS

Уровень сложностиСредний

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

Читать далее

Почему разделение слоёв критично для AI-агентов: уроки построения Autonomous Developer Farm (ADF)

Уровень сложностиСредний

Когда я начинал строить систему из нескольких AI-агентов, которые пишут код параллельно и автономно, я думал что главная проблема — техническая. Как запустить 6 агентов одновременно? Как не потерять задачи при сбое? Как смотреть на всё это с телефона?

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

Читать далее

Анализ рисков для венчурного инвестора, желающего вложиться в российское «железо»

Уровень сложностиСредний

В 2026–2028 годах РФ направит 250 млрд рублей на развитие микроэлектроники, а общий бюджет программы до 2030 года — почти 3,2 трлн рублей. Ждать ли прорыва? Разбираем риски для венчурного инвестора: техпроцессы 65–14 нм, зависимость от импорта, судьбу «Байкала» и «Эльбруса», а также что меняется на рынке с 27 мая 2026 года.

Читать далее

О белом медведе замолвите слово

Уровень сложностиСредний

В научно-популярных и корпоративных публикациях регулярно встречается такая конструкция: упоминается «эксперимент Вегнера с белым медведем», после чего приводятся минуты, на которые «подавляющие мысли» испытуемые быстрее сдавались на следующей задаче. Иногда - с конкретными цифрами, вплоть до десятых долей минуты. Иногда - с отсылкой к Достоевскому в качестве литературного якоря. Конструкция выглядит цельной: классический литературный образ, известный эксперимент 1987 года, количественный результат.

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

Разберём по порядку.

Читать далее

Как мы сделали desktop-приложение для сравнения коммерческих предложений: Tauri, FastAPI, Python sidecar и Excel-отчёты

Обычно, когда говорят про автоматизацию закупок, вспоминают ERP, тендерные площадки, ЭДО, 1С, согласования, заявки, договоры и большие корпоративные системы.

Но между “поставщик прислал коммерческое предложение” и “закупку можно согласовывать” часто есть очень приземлённый этап, который до сих пор живёт в Excel.

Закупщик получает несколько КП от поставщиков. Один файл в Excel, второй в PDF, третий в Word. У одного поставщика цена с НДС, у другого без НДС. Где-то рубли, где-то доллары, евро или юани. В одной строке партномер указан полностью, в другой — описание чуть отличается. По части позиций есть целевые цены, по части надо ориентироваться на прошлые закупки.

Дальше всё это вручную сводится в одну таблицу.

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

В этой статье расскажу не столько про саму закупочную предметную область, сколько про техническую сторону: почему выбрали desktop, как собрали Tauri + React + FastAPI, как упаковали Python backend в sidecar, с какими проблемами столкнулись при сборках под Windows/macOS и что оказалось важным в B2B-приложении, которое должно работать не “в демо на ноутбуке разработчика”, а у пользователя.

Читать далее

Методы машинного обучения в 2026 году: Тир-лист

Уровень сложностиСредний

Дисклеймер:

Какие методы машинного обучения стоит брать в 2026 году, а какие только для музея. Тир-лист от S до D с объяснениями и итоговой таблицей.

Читать далее

Я использовала Claude Code неправильно. 6 неочевидных фишек, которые изменили мой воркфлоу

Уровень сложностиПростой

Несколько недель я использовала Claude Code неправильно. Не то чтобы что‑то не работало — всё было нормально. Описываешь задачу, Claude пишет код, правишь, идёшь дальше. Разумный воркфлоу. Только я использовала мощный инструмент как калькулятор. Потом начала копать. Оказалось, в Claude Code есть целый слой который никак себя не анонсирует — его просто надо найти. Часть есть в документации, часть обнаруживаешь случайно. Вот, что я нашла для себя:

Читать далее

AI-агент слишком рано уходит в код: как не принять diff за понимание задачи

Уровень сложностиСредний

Я перестал радоваться моменту, когда AI-агент слишком быстро уходит в код.

Не потому что скорость сама по себе вредна. Скорость полезна, если задача уже стала понятной и проверяемой.

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

Сигнал настоящий.

Вывод - нет.

Под AI-агентом здесь я имею в виду не абстрактную автономную систему, а практический инструмент разработки: он читает файлы, строит план, меняет код, запускает проверки и возвращает summary по задаче.

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

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

Читать далее

Как запустить Trilium Notes Server на Android через Termux

Уровень сложностиПростой

Несколько лет я пытался организовать удобную систему заметок в Obsidian.
Сначала всё нравилось: markdown, плагины, локальные файлы. Но со временем появилась другая проблема — я начал тратить больше времени на настройку системы, чем на сами заметки.

Плагины конфликтовали между собой, структура постоянно менялась, а вопрос синхронизации между устройствами так и не удалось решить «идеально».
Официальный Obsidian Sync платный, а варианты через Git, Syncthing или облака всё равно требовали дополнительных костылей.

В какой‑то момент я решил посмотреть в сторону self‑hosted решений и наткнулся на Trilium Notes.

Читать далее

Нахождение коэффициентов линейной зависимости методом наименьших квадратов

Уровень сложностиСредний

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

Читать далее

TCP-S: прозрачное шифрование TCP-сокетов на хосте через модуль ядра Linux

Уровень сложностиСложный

Я давно озадачивался вопросом: как избавить себя от трудозатрат на внедрение систем централизованного управления сертификатами и при этом дополнить существующий транспорт TCP/IP шифрованием? Представьте: весь маршрут анализируется враждебной средой, где каждый может просматривать содержимое трафика, и для каждой единицы нужны методы сокрытия. Хотелось получить прозрачный, автоматический TLS, но без возни с сертификатами, ALPN и модификацией приложений.

В итоге получилось решение в виде модуля ядра Linux — надстройки прямо над протоколом TCP. Он цепляется за netfilter-хуки LOCAL_OUT и PRE_ROUTING и прозрачно шифрует вообще все TCP-сокеты на хосте. Если модуль установлен на клиенте и сервере, весь трафик между ними автоматически идёт в криптованном виде. Это даёт колоссальный выигрыш по времени внедрения, когда нужно быстро скрыть содержимое соединений от систем анализа и демаскирования.

Читать далее

makc — кроссплатформенное управление мышью и клавиатурой на Go без cgo

Уровень сложностиСредний

makc — кроссплатформенная Go-библиотека для управления мышью и клавиатурой. Без cgo, без обёрток. Внутри статьи: как я переписал её с C на чистый Go и какие подводные камни нашёл на Win32, CoreGraphics и evdev/Wayland.

Читать далее

Запуск WebStorm из Git Bash: как открыть проект одной командой

Уровень сложностиПростой

Если вы работаете на Windows с веб-стеком, скорее всего, ваш терминал - это Git Bash. А если вы используете WebStorm как основную IDE, то наверняка ловили себя на мысли: «Почему я не могу просто написать webstorm . в терминале, как это делают коллеги на macOS и Linux?».

В этой статье разберём, как настроить чистый и быстрый запуск WebStorm из Git Bash.

Читать далее

Как я, программист-самоучка, написал CRM для своих двух шаурмичных, потерял деньги, но создал продукт, который продаётся

Уровень сложностиПростой

Привет. Я программист (со скидкой на самоучку), который в 2021 году решил, что открыть две шаурмичные — хорошая идея. Спойлер: идея была так себе. Но из этого вышла полезная CRM, которой сейчас пользуются 15+ заведений. Расскажу, как я её писал, на чём сломался и почему мой код до сих пор не идеален.

Если вам нужна только техническая часть — листайте к разделу «Архитектура». Если интересна драма с бумажками и комиссиями — читайте по порядку.

Читать далее

Паузы убивающие интерес

Уровень сложностиСредний

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

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

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

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

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

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

Как это выглядит на практике

Давайте сравним два варианта подачи одного и того же текста и отследим собственную реакцию при прочтении.

Читать далее

Секреты Вселенной в разрядах арифмометра. Часть 2

Уровень сложностиСредний

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

Читать далее

Альтернативные сторы и платежи в iOS: что реально изменилось в ЕС и США

Уровень сложностиСредний

Apple формально открыла iOS для альтернативных сторов и сторонних платежей в Европе, но сделала это так, что без калькулятора и юриста разбираться уже больно. В ЕС появилась целая матрица режимов дистрибуции и монетизации, а в США по‑прежнему нельзя поднять свой стор, но можно честно поставить кнопку «оплатите на сайте» без отдельной комиссии за сам факт ссылки.

Ниже — разбор, когда всё началось, какие есть варианты дистрибуции и монетизации в ЕС, что поменялось с 1 января 2026 года и что именно разрешили (и не разрешили) в США.

Читать далее

Асинхронность vs синхронность и как Redis и Celery спасают бэкенд

Уровень сложностиСредний

Начнем с того, что асинхронность — это конкурентное выполнение задач (мультизадачность, как если бы человек готовил обед и переключался на прочтение книги в перерывах), а синхронность — это последовательное выполнение задач (человек сначала приготовил обед, а потом уже читал книгу). Эти понятия часто путают. Теперь к делу!

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

🧩 Здесь мы подключаем Celery и Redis. Теперь если бэкенду попадается сложный процесс, он не нагружает себя, а создает в Redis задачу (в данном случае мы Redis используем как брокера задач, но у него есть больше возможностей). Теперь бэкенд ставит задачу, отправленную Redis, в состояние ожидания. Celery видит невыполненную задачу в Redis, добавляет в свою очередь новую задачу, последовательно выполняя задачи из очереди и возвращая результат. После выполнения Celery отмечает в Redis задачу выполненной, а в бэкенде запрос снимается с режима ожидания и получает ответ. Теперь быстрые запросы сразу получают ответ, а сложные задачи через Redis и Celery решаются последовательно, и даже если будут тормозить мы сможем подключить больше модулей Celery.

Читать далее

ZDT-D: Android как гибкий сетевой шлюз с root-доступом

Уровень сложностиСредний

На Android есть привычная модель работы с VPN: приложение поднимает VpnService, создаёт виртуальный интерфейс, получает системную VPN-иконку и начинает пропускать через себя весь трафик устройства или выбранные приложения.

Для большинства пользователей этого достаточно. Но если хочется более гибкой схемы — например, чтобы одно приложение шло через один инструмент, второе через другой, третье напрямую, а четвёртое через отдельный proxy pipeline, — стандартная VPN-модель быстро начинает мешать.

ZDT-D — это Android root-модуль для маршрутизации трафика, DPI-инструментов, локальных proxy/tun-пайплайнов, DNS-контроля и управления сетевыми правилами по приложениям.

Это не попытка сделать “ещё один VPN-клиент”. Скорее, это попытка превратить Android-устройство в небольшой настраиваемый сетевой узел, где разные приложения могут ходить через разные маршруты.

Читать далее

Codex. Sign-in failed. Login server error: Token exchange failed: error sending request for url

Уровень сложностиПростой

Пытался авторизоваться в Codex Desktop App несколько часов. Codex не пропускал дальше авторизации через Google, падая на этапе получения токена, и я нигде не мог найти решение проблемы.

Читать далее