Обновить

Чем заменить Discord: развернул восемь решений, померил задержку и нагрузку, делюсь цифрами

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

Держу сервер примерно на 200 аккаунтов, после блокировки Discord всё это перестало работать. За полтора года развернул на своём железе Mumble, TeamSpeak, Spacebar и Stoat, плюс протестировал четыре облачных сервиса, и собрал по ним метрики: задержку голоса акустическим методом, потребление CPU и RSS у клиента, поведение при 2% и 5% потерь через tc netem.

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

Читать далее

Archaeological Review: как я настраивал VPN-шлюз на роутере 2012 года выпуска

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

Или будь проклят тот товарищ из комментов на Хабре, который сказал, что каждый может поднять свой VPN за вечер, зачем нужна Амнезия.

Tldr: я не сетевой инженер, не разработчик ядра и даже не системный программист. Я простой парень с 11 классами образования и 10-летним опытом эпизодических попыток войти в айти. Но иногда этого оказывается достаточно для того, чтобы починить Ютуб (ну, почти) на древнем телевизоре посредством настройки VPN на не менее древнем роутере, если есть время, желание разобраться и хороший собеседник в виде бесплатной версии ChatGPT.

Об этом и пойдёт сказ в этой статье.

Читать далее

Одна пара скобок меняет всё: как читать сложные объявления в Си

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

Есть два объявления:

int *a[10];

int (*b)[10];

Они отличаются буквально одной парой скобок.

Но a и b имеют принципиально разные типы.

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

А если объявление выглядит так?

int (*f[10])(char *);

Или так?

void (*signal(int sig, void (*func)(int)))(int);

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

Читать далее

Как подготовить команду к AI-агентам: TDPD и инженерный контур вокруг модели

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

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

Я разрабатываю TDPD: сначала пользовательский сценарий и исполняемая проверка, затем реализация агентом, в конце — человеческая приёмка. В статье сопоставляю этот подход с инженерной практикой OpenAI и Anthropic: harness, короткими навигационными файлами, исполняемыми ограничениями, наблюдаемостью, журналами прогресса и изоляцией параллельной работы.

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

Читать далее

Мы хотели сделать каталог готовых сайтов. Через год получили маркетплейс с realtime, модерацией и аналитикой

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

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

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

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

регистрация => профиль продавца => создание товара => карточка => контакт с продавцом.

На разработку в итоге ушёл примерно год. За это время простая форма добавления товара превратилась в многошаговый конструктор с черновиками и предпросмотром, появилась модерация, затем повторная модерация изменений, realtime-чат, уведомления, аналитика для продавцов и отдельная инфраструктура вокруг проекта.

По дороге мы ещё и полностью поменяли первоначальную схему монетизации.

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

Почему Next.js

Frontend написан на Next.js и TypeScript. Для локального состояния используем Zustand, для серверных данных TanStack Query.

Next.js выбирали в первую очередь из-за SSR и SEO. Для нас было важно, чтобы карточки продуктов и другие публичные страницы нормально индексировались поисковиками. Для маркетплейса органический трафик потенциально играет большую роль, поэтому делать всё как обычное клиентское SPA не хотелось.

Читать далее

Новый Искусственный Интеллект

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

От хайпа на миллиарды до нового хайпа

Мутация в инженера нового времени

По оценкам технологических стратегов (например, аналитиков Juniper Research), переход будет плавным и займет около десяти лет:

2026–2028 гг. — Спрос со стороны работодателей носит точечный характер. Ищут в основном ученых, физиков-схемотехников и R&D-инженеров в крупные лаборатории.

2029–2032 гг. — Переломный момент (Бум робототехники). Производители робототехники понимают, что классические процессоры разряжают батарею за полчаса, и начинают массово закупать нейроморфное железо. Начинается лавинообразный спрос на специалистов. Появляются вакансии типа «SNN Compiler Engineer», «Edge AI Developer», «Embedded Neuromorphic Systems Architect». Появляются зрелые библиотеки. IT-курсы начинают массово предлагать программы переподготовки. Это идеальное время для перехода в индустрию для прикладных программистов. Тут-то мы и появляемся уже во всём разобравшись, практически без конкуренции.

2033–2035 гг. — Стандартизация и масс-маркет. Нейроморфные сопроцессоры интегрируются в потребительские чипы по умолчанию — точно так же, как нейронные процессоры (NPU) встроены в современные процессоры сегодня. Технология становится утилитарной. Навык оптимизации кода под событийно-зависимую и спайковую архитектуру становится базовым требованием для бэкенд-разработчиков и системных инженеров, наряду со знанием баз данных или Docker сегодня.

Читать далее

История самой скучной кражи на 400 BTC. Расследование

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

История самой скучной кражи на 400 BTC. Расследование

Шесть символов в начале и пять в конце совпали. Середину никто не сверял. 400 биткойнов ушли человеку, которого не существует ни в одном отчёте об инцидентах.

Читать далее

Выборочная маршрутизация трафика по доменным именам

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

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

Здесь пока не буду начинать сразу с готового конфига. Сначала хочу рассказать, откуда вообще появилась эта задача, какие варианты я пробовал и почему в итоге остановился на связке DNS, dnsmasq, nftables и policy routing.

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

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

Сам по себе VPN работал нормально. Неудобство было в другом: его постоянно нужно было включать и выключать. Нужно открыть внутренний сервис — включил VPN. Закончил работать с ним — выключил. Появился новый ноутбук — снова настрой VPN.

Плюс всё это нужно было делать на каждом устройстве отдельно.

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

Я хотел, чтобы человек просто подключался к сети нашего офиса и работал. Если он открывает внутренний GitLab или другой корпоративный сервис, трафик сам идёт через московский офис. Если открывает обычный сайт — трафик идёт напрямую в интернет.

Причём мне было важно соблюсти несколько условий.

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

Читать далее

Галлюцинация, которая следует за VPN: исследуем скрытый localization context DeepSeek

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

Всё началось с попытки понять, какие данные о текущей сессии доступны DeepSeek помимо текста диалога. Модель неожиданно назвала мою реальную IP-геолокацию. Я решил, что это обычная галлюцинация — пока после смены VPN эта «галлюцинация» не переросла во что-то большее.

Читать далее

Аспирин, которого нет

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

Как я измерял честность зрительной модели — и дважды принял цитату из промпта за понимание

Я делаю русскоязычного голосового агента для очков Ray-Ban Meta: смотришь на предмет, спрашиваешь голосом, агент снимает кадр камерой очков, отправляет его модели и отвечает в динамики. Штатный Meta AI по-русски не разговаривает, поэтому пришлось делать своё.

Я новичок. До этого проекта я не написал ни строки на Swift, а Mac у меня первый в жизни. Поэтому начал не с кода, а с вопроса, который не зависит ни от платформы, ни от телефона: какая модель нормально описывает картинку по-русски и насколько ей можно верить.

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

Читать далее

ИИ-агенты за четыре дня собрали мне PM-систему вместо SaaS за 78 000 ₽ в год

Я владелец небольшого агентства, и я не пишу код. За четыре дня ИИ-агенты собрали нам PM-систему: клиентские доски по постоянной ссылке, недельные спринты, учёт часов. Мы перестали платить 78 000 ₽ в год за SaaS и перенесли в неё 4 115 задач. Рассказываю честно: что получилось, какие решения пришлось принимать мне, а не ИИ, и где мне до сих пор страшно.

Читать далее

Почему стоимость заявки врёт: разбор атрибуции в услугах с офлайн‑визитом

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

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

Читать далее

Школьный портал

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

Всем привет, решил я от скуки навайбкодить не большой проект для школы. До этого я изучал алгоритмы и пробовал программировать простые программы на C, C++, Python. В году так 2023 я сидел на работе и маялся от скуки и параллельно думал, что я могу привнести нового в бюджетное учреждение. Тогда я ещё не интересовался всеми этими ИИ. Начал думать о проекте и решил для начала создать учет учеников, учителей. Создал БД, внес туда данные, и думал, что дальше делать с этими данными. И решил сделать локальный школьный журнал. К этому журналу я прикрутил всю возможную аналитику по оценкам и посещаемости.

Читать далее

HTTP 200, валидный JSON и плохой результат: как я отлаживал LLM-пайплайн генерации чек-листов

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

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

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

Тут и выяснилось, что первоначальная ошибка была простой частью задачи. У LLM-функции оказалось два разных уровня надёжности. Сначала приложение должно получить и разобрать ответ модели. Затем — правильно понять роль каждого входного документа и не превратить весь доступный контекст в требования. Успешный HTTP-ответ подтверждает только первый уровень, да и то не полностью.

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

Читать далее

Image-to-Video как задача управления ограничениями: практический workflow для Seedance 2.0

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

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

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

Отсюда знакомые артефакты: дрейф лица, «плавающие» текстуры, мерцание по контуру, меняющийся логотип и восковой материал кожи.

Рабочий подход к image-to-video, в том числе в Seedance 2.0, заключается не в поиске волшебного промпта. Это задача управления ограничениями: нужно хорошо зафиксировать идентичность, не выходить за информационные границы исходного изображения и менять параметры итеративно.

В статье разберём такой workflow для продуктовых рендеров, портретов, согласованных клиентских key visual и коротких роликов для прототипов.

Читать далее

Смерть b2b-компаний на рубеже пяти лет. Почему все против ИИ

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

Смерть b2b-компаний на рубеже пяти лет. Почему все против ИИ. Что действительно нужно автоматизировать сейчас в современных компаниях

Читать далее

Миллион доменов и ни одного ручного обновления: открываем RU Route Lists

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

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

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

Мы сделали открытый проект RU Route Lists. Он разделяет такие ресурсы по категориям, проверяет данные и каждые три часа публикует обновлённые списки для sing-box, Mihomo и собственной VPN-инфраструктуры.

Репозиторий: https://github.com/jutsu-dev/ru-route-lists

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

Читать далее

Yandex Maps Scraper: как я написал расширение для Chrome, которое парсит Яндекс Карты без серверов, прокси и боли

Парсер Яндекс Карт в один клик: организации, отзывы, медиа, новости, товары/услуги и email. Умная буферизация, экспорт в Excel и подковёрная борьба с API Яндекса.

Читать далее

Сравнение сервисов VPN в 2026 году: какой реально работает

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

Дисклеймер: статья не является рекламой. Это личный семейный сравнительный обзор Telegram-VPN-сервисов по открытой информации и пользовательским наблюдениям. Ссылки приведены только для ознакомления и самостоятельного сравнения.

VPN в России. Тема стала очень живой и многострадальной. VPN перестал быть чем-то сложным и непонятным. Ещё несколько лет назад VPN чаще воспринимали как инструмент для приватности, удалённой работы или доступа к отдельным ресурсам. Сейчас VPN используют люди, которые вообще не занимаются сетями и не хотят разбираться в протоколах. Людям нужно просто открыть мессенджеры или соцсети у многих на этом завязан бизнес как и у меня. Я стал искать рабочие сервисы — без постоянных обновлений конфигов, танцев с бубном и нормальной скоростью.

Перебирал долго, за последний год сменил около 15 сервисов. Рынок за последний год сильно поменялся. Крупных международных игроков (NordVPN, ExpressVPN и подобных) я в этом сравнении сознательно не трогаю. У большинства просто нет связи, хотя их продолжают пиарить. К тому же многие из них либо ушли из России совсем, либо сильно ограничили нормальную работу.

Также я разумеется пропущу все бесплатные или подозрительно дешёвые Telegram-VPN. Если сервис ничего не стоит для меня это странно. А скорость, стабильность, приватность это вообще не про них.

Я попытался сравнить именно VPN на которые стоит обратить внимание, тем более у многих есть бесплатный период для теста (что несомненно хорошо, хотя и не всегда его хватает.). Смотрю на них не как инженер с iperf и лабораторными тестами, а как обычный пользователь: можно ли поставить такой VPN себе, родителям или друзьям, чтобы он просто работал без головной боли.

Читать далее

Playwright + TypeScript без мучений: POM, фикстуры, CI, которые реально работают

Каждый раз, начиная новый проект, автоматизатор проходит один и тот же путь: структура Page Object Model, конфиг, CI, репортинг. Работа не сложная, но нудная — и её приходится переделывать заново на каждом новом месте. Я собрала это один раз по уму и зафиксировала структуру, к которой всегда можно вернуться. Делюсь тем, что получилось, и почему сделано именно так.

Читать далее
1
23 ...
ТудаНазад