Обновить

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

На Хабре много пишут про высокие нагрузки, стартапы и миллионные бюджеты. Моя ниша скромнее: я делаю сайты малому бизнесу в регионах. Стоматологии, свадебные фотографы, автомастерские, магазины запчастей. Читая статьи «как я сделал сервис на миллион пользователей», я каждый раз вспоминаю, как выбирал хостинг для сайта стоматологии и переживал из-за того, что у клиента не работает кнопка на телефоне в 11 вечера.

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

Читать далее

Что делать в эпоху ИИ, чтобы не потерять все?

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

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

Читать далее

Почему значок VPN в Android не гарантирует, что VPN действительно работает

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

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

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

Читать далее

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

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

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

Читать далее

Freedom To Parrots

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

Freedom To Parrots — проект, с помощью которого любой желающий, имея обычный ПК, телефон или ноутбук, может развернуть туннель для интернет-трафика внутри интернет-звонка, чтобы получить доступ к сайтам там, где это необходимо!

Читать далее

Как я собрал новостного Telegram‑бота с ИИ‑редактором, который живёт в GitHub Actions и не стоит ни копейки

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

Обычно автоматический новостной канал в Telegram делают так: скрипт на feedparser, копеечный VPS, cron раз в час — и в канал падает безликая простыня текста со ссылкой. Через день от такого канала все отписываются.

Читать далее

Гонка вооружений в интернете: как блокировки и VPN бесконечно догоняют друг друга

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

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

В этой статье описано — четыре реальных раунда этой гонки. Как Китай в 2019–2021 годах научился вычислять Shadowsocks по тому, насколько случайными выглядели первые байты соединения. Как в 2018-м Роскомнадзор заблокировал 19 миллионов IP Google и Amazon ради одного Telegram. Как российский TSPU в 2025–2026 годах дошёл до обрезания любого соединения через Cloudflare после первых 16 килобайт. И какой протокол сейчас в ответ буквально притворяется чужим сайтом.

Читать далее

v2hub: экосистема для разработчиков

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

В прошлых постах я рассказывал про v2hub - экосистему для управления VPN-подписками - и про то, как я до неё докатился. На тот момент сервис был устроен просто: есть пользователь, у него есть токен, он этим токеном управляет своими подписками. Через v2hub-cli, через v2hub-panel, через бота - не важно, суть одна: у пользователя только те подписки, что он создал сам.

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

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

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

Так в v2hub появились провайдеры.

О провайдерах

TrustTunnel на своём VPS: как устроен протокол и как его установить

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

TrustTunnel создан командой AdGuard VPN. Исходники сервера и клиентов открыты, и сервер можно поднять на своём VPS. Для подключения к нему не нужна подписка на AdGuard VPN. Официальный проект.

Клиент устанавливает защищённое соединение с сервером. Внутри него идут подключения приложений, а сервер уже обращается к нужным адресам в интернете. Для передачи данных используются HTTP/2 поверх TLS и TCP либо HTTP/3 поверх QUIC и UDP.

Для каждого TCP-подключения клиент отправляет HTTP-запрос CONNECT и открывает отдельный поток. Сервер соединяется с адресатом, после чего передаёт данные в обе стороны. Несколько потоков используют общее соединение между клиентом и VPS.

UDP устроен иначе: датаграммы разных приложений передаются через один общий HTTP-поток. Внутри него TrustTunnel добавляет адреса, порты и длину данных, чтобы сервер мог отправить каждый пакет по назначению. Для ICMP echo, то есть ping, спецификация предусматривает отдельный поток. Это описано в спецификации TrustTunnel.

Разница между транспортами заметна при потерях пакетов. В HTTP/2 все потоки зависят от одного TCP-соединения: пока оно восстанавливает потерянные данные, доставка следующих данных задерживается. В QUIC восстановление идёт отдельно для каждого потока. Но внутри потока порядок сохраняется, а пропускная способность соединения остаётся общей. Поэтому HTTP/3 не гарантирует меньшую задержку в любой сети. Устройство потоков QUIC.

На практике HTTP/2 полезен там, где ограничен UDP. HTTP/3 стоит проверить там, где UDP доступен. Сравнивать лучше на своей сети и своём сервере.

Читать далее

Работа в IT в Испании: айтишников не хватает, но четверть безработных айтишников ЕС живёт здесь

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

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

В Tech Cities 2026 Experis приводит оценку ОЭСР: на одного доступного технологического специалиста в Испании приходится больше трёх предложений работы. Adecco насчитал почти 222 тысячи опубликованных технологических вакансий за 2025 год.

А профсоюз UGT показывает другую Испанию: 50 354 зарегистрированных соискателя работы в секторе TIC. По данным Eurostat, которые приводит UGT, в стране 54 100 безработных с образованием в области новых технологий. Безработица среди них — 9,9% против 6,5% в среднем по ЕС.

На первый взгляд кто‑то здесь неправильно считает.

Читать далее

Кто сказал, что юнит-тесты должны писать разработчики?

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

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

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

Frontend написан на React, состояние хранится в Redux, значительная часть бизнес-логики вынесена в сервисный/API-слой. Проект активно использует Firebase и Firestore, есть асинхронные операции, webhooks, внешние API, realtime-синхронизация, AI-функции и другие интеграции. 

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

За несколько лет, пока я работал на проекте, ситуация изменилась.

Читать далее

Два мегабайта состояния внутри, 17 бит наружу: разбор моста, который связывает языковые модели в обход текста

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

В начале сентября из тихого режима вышла компания Mostik: 15 человек, из них 12 с докторской степенью и один лауреат Филдсовской премии. Их мост соединяет две языковые модели и передаёт скрытые состояния напрямую, минуя текст. В демонстрации облачная GLM-5.2 на 753 миллиарда параметров не пишет ни одного токена: читает задачу, отдаёт внутреннее состояние через мост, а весь текст генерирует Qwen-3.5 на 4 миллиарда, модель класса «запускается на телефоне».

Издание QbitAI пишет: связка выбила зашкаливающий результат на ARC-AGI 3, том самом бенчмарке, где до этого почти максимум набрал GPT-6 Astra. Точных цифр в материале нет. Сама команда технические детали пока не раскрывает: говорит, соревнование не закончено. Зато главную идею описали подробно, и о ней можно поговорить предметно, с формулами и допущениями, а не только на пальцах.

Читать далее

Связка Gemini + Anki: как бесплатно скрестить метод Фейнмана и интервальные повторения для учёбы

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

Рассказываю, как объединить нейросеть Gemini и приложение Anki, чтобы перестать зубрить конспекты. Пошаговая настройка обхода блокировок, готовый промпт для карточек и разбор метода Фейнмана.

Читать далее

Агент сказал «готово». Четыре вердикта вместо одного слова

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

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

Читать далее

Самое дешёвое число на странице — не цена

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

Двадцать площадок продают одно и то же — 65 000 единиц энергии TRON на час — и ни одна пара не называет цену одинаково. Я читаю их прайсы каждые пятнадцать минут и свожу в одну таблицу. Статья не про TRON: она про то, что происходит между «страница загрузилась» и «есть число, по которому можно сортировать», и про один класс ошибок, который я считаю самым скверным в системах такого рода: производная величина, незаметно ставшая исходной.

Читать далее

Как подружить Cursor с корпоративным VPN после 4 сентября

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

4 сентября у многих пользователей из России внезапно перестали нормально работать AI-функции Cursor: Agent, Chat, автодополнение и часть API-запросов.

Днём ранее, 3 сентября, Anysphere обновила Terms of Service. В новой версии появился пункт 17.5 Export and Trade Controls, где говорится о необходимости соблюдать санкционные и экспортные ограничения, а также об ограничениях на использование сервиса в определённых юрисдикциях и для определённых лиц.

И вот тут возникает интересная проблема.

Самый очевидный совет — «просто включи VPN» — для разработчика, работающего в корпоративной инфраструктуре, часто не подходит. В моём случае корпоративная сеть нужна постоянно: через неё доступны внутренняя документация, GitLab, сервисы, базы знаний и прочая инфраструктура. При включении обычного VPN маршрут до корпоративной сети ломался. В итоге Cursor вроде бы снова получал доступ наружу, но одновременно терял доступ внутрь корпоративной инфраструктуры.

Читать далее

MovieShort-AI: автонарезка фильмов в вертикальные Shorts — пайплайн «сцены → LLM → 9:16»

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

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

Читать далее

Какой VPN работает при белых списках в 2026: проверено симкой

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

Короткий ответ: тот, у которого протокол делает настоящее TLS-рукопожатие с разрешённым сайтом на 443 порту. Всё остальное (WireGuard, голый VLESS без TLS, обычный HTTP с поддельным заголовком) при живой проверке через симку не прошло ни разу. Таблица с цифрами замера и методика внутри.

Читать далее

А нужен ли Вам Data Lakehouse?

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

Покупатель: Мне необходимо хранилище Data Lakehouse!

Продавец: Отлично! Мы будем рады работать над этим проектом.

Продавец: Пара вопросов для подготовки установочной встречи. Какой объем данных Вы предполагаете хранить, и какой тип данных будет основным в хранилище?

Покупатель: Очень большой объем, в первый год объем исходных данных составит 1Тб, а через 5 лет объем увеличится в 10 раз. Данные будут поступать из учетных систем.

Продавец: Хммм… Большое спасибо. Я передам эту информацию нашей технической команде. Вам будет удобно если мы свяжемся с Вами завтра по ВКС?

  

Приведенный диалог, не шутка, а утрированная информация из реального ТЗ. В ТЗ к этому объему данных просили S3 хранилище, Spark, Kafka, Trino, Flink, ClickHouse, dbt, Airflow, Ranger, Prometheus, Grafana, Polaris, хранение в Parquet, S3 (с горизонтальным масштабированием) и все это надо было реализовать в K8S.

 Первая реакция на такой запрос была несколько юмористической. Мне было трудно представить зачем строить весь этот “огород” для работы с 5-10Тб структурированных данных, мучаясь с интеграцией всех этих продуктов в единый контур безопасности (требование ТЗ) теряя производительность при работе с S3. По составу продуктов можно решить, что было необходимо обрабатывать потоковые данные, но в ТЗ таких требований не было. Но затем я задумался, может быть, я устарел и теперь архитектурный шаблон Data Lakehouse(DLH) не рассматривается предпочтительно к большим данным (Big Data). Для меня, в первую очередь, вызвал сомнение целесообразность хранения данных на S3 в открытых форматах таблиц Iceberg (Parquet).

Читать далее

Как я завайбкодил тренажер для стихов без бэкенда: OCR в браузере, сжатие текста в URL и чистый фронтенд

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

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

Сразу поставил условие: никакого бэкенда и баз данных. Рассказываю, как запустить распознавание страниц книг через Tesseract.js прямо в браузере, сжимать целые тексты в URL через lz-string для шеринга без серверов и как всё это летает на связке React 19, Vite 8 и Tailwind v4.

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