❌

Normal view

История одной IT‑разработки: как мы создали софт по рассылке деловых писем

Всем привет! Я Дмитрий Шихаев, маркетолог для IT-компаний. Сейчас работаю с крупными IT-заказчиками, помогаю выводить технологические продукты на рынок и развиваю направление ABM-маркетинга в России.

Но путь к этому был далеко не сладким. Когда-то мы с товарищем Гошей, у которого за плечами были базовые знания BASIC и опыт работы с конструктором BAS, решили практически без денег и опыта создать собственный софт для массовой отправки качественных персонализированных деловых писем.

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

А тогда бюджет у нас был как у студента за неделю до стипендии, техническая команда состояла из двух калек - маркетолога без знаний IT-внутрянки и начинающего автоматизатора, зато амбиции были как у всего состава Кремниевой долины.

Читать далее

Свой «бесплатный» биллинг или коробочное решение — разбираемся, как выбрать оптимальный вариант

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

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

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

Читать далее

Как я один создал браузер для бухгалтеров: история BELPORTAL от снимков реестра до WebView2 и 56 млн скачиваний

Когда-то работа бухгалтера с госпорталами была настоящим квестом: IE, ActiveX и километры инструкций. Я расскажу, как один создал BELPORTAL — программу, которую скачали 56 млн раз. Путь от снимков реестра Windows до полноценного браузера на WebView2, борьба с кризисом Avest и спасение отчетных периодов.

Читать далее

Роботы-коммунисты: что бывает, когда у тысячи ИИ-агентов нет начальника

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

Звучит как странный эксперимент или неудачный стартап. Но исследователи из Microsoft Research проделали это на ИИ-агентах. В препринте Agensh до 1024 экземпляров одной модели шесть часов вместе воспроизводили поведение готовых программ, и никто ими не руководил. При этом рой показал результат лучше одиночки. Заодно сам завел у себя ревьюеров, интеграторов и регламенты.

Давайте разберемся, как это устроено, что измеряли и где в цифрах прячутся оговорки.

Читать далее

Третий месяц вайб-дебажу настолку в браузере. На что уходит столько времени

Веб-версию своей настолки делаю пятый месяц, три из которых уже ушли на вайб-дебагинг. «Release любой ценой» это карточная игра про хаос IT-разработки.

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

Нас в проекте двое плюс модели. Коллега-разработчик держит движок и сеть, я же за то, что видно на экране, и за правила. Прочитать код я могу, а вот понять нет. Разбор пойдёт от того, что я вижу на экране третий месяц подряд, как в дне сурка.

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

Читать далее

Quill в Next.js App Router, editor, autosave и HTML viewer с подсветкой кода

WYSIWYG-редактор в Next.js App Router затрагивает несколько слоев приложения. Quill работает с DOM и browser API, поэтому сам редактор живет на клиенте. Контент нужно хранить отдельно от экземпляра Quill, передавать в компонент при смене сущности, сохранять на сервер и затем показывать без toolbar и режима редактирования.
Если хранить результат Quill как HTML, редактор и viewer могут работать с одной строкой contentHtml. Editor меняет HTML через onChange. Autosave отправляет новую версию после паузы во вводе. Viewer получает сохраненный HTML и отдельно обрабатывает элементы, которые Quill использует для code blocks. Для подсветки кода добавляется highlight.js.

Читать далее

Неделя вместо квартала. Как технологии меняют профессию бизнес-аналитика

Хабр, привет! Меня зовут Джангр Анджукаев, я работаю старшим бизнес-аналитиком. В этой профессии я уже более 10 лет и каждый год открываю для себя что-то новое – инструменты, подходы, технологии.

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

Читать далее

Архитектура 1С для новичков: Строим первую внешнюю обработку и клиент-серверный мост. Часть вторая

В первой части мы разобрались, почему сервер 1С «слеп» к файлам на вашем диске C: , и подготовили поле ввода для пути к файлу. Пользователь нажал на заветные три точки ... и выбрал документ. Путь к файлу мы научились делать за 3 шага. Что дальше? Теперь нам нужна большая, красивая кнопка, которая заставит этот файл оторваться от вашего компьютера, улететь на сервер, превратиться там в данные базы и вернуть нам красивое окошко с сообщением. Давайте по шагам разберем, как спроектировать это и запустить клиент-серверный мост.

Шаг 4. Создаем кнопку действия «Выполнить загрузку». Просто нарисовать кнопку на экране мало — нужно объяснить платформе, что должно произойти при клике.

В редакторе формы нашей внешней обработки переходим на вкладку Команды (она находится в правом верхнем окне, прямо рядом с «Реквизитами»). Нажимаем зелёный плюс «Добавить» и называем нашу команду просто и понятно: Загрузить. Берем эту команду мышкой и перетаскиваем в левое верхнее окно Элементы, прямо под наше поле с путем к файлу.

На форме появится кнопка. Выделите её, откройте свойства (Alt + Enter) и в поле Заголовок укажите текст, который увидит пользователь: Загрузить.

Шаг 5. Выбор типа обработчика события. Теперь необходимо связать созданную команду с программным кодом. В свойствах команды найдите строку Действие и нажмите на пиктограмму с лупой. Платформа откроет диалоговое окно выбора. Из предложенного списка необходимо выбрать пункт: «Создать на клиенте и процедуру на сервере без контекста».

Давайте разберем, почему платформа предлагает разделение и почему выбор директивы «без контекста» (&НаСервереБезКонтекста) является наиболее правильным.

Читать далее

Бесплатное ПО, пять лет разработки и немного наглости. Как я пытаюсь попасть в реестр российского ПО

Привет, Хабр! Я Артур Валиев. Разработчик, предприниматель из небольшого села в Ставропольском крае и человек, который однажды решил, что написать собственный удалённый рабочий стол — хорошая идея.

Спойлер: идея оказалась хорошей. А вот количество работы я немного недооценил. Примерно на пять лет.

Но начать хочу совсем с другого.

Читать далее

ymcp, или как подружить агентов с YouTrack, если ты не админ

Всё началось с того, что я в очередной раз копировал описание задачи из YouTrack в Claude Code. Потом комментарии к ней. Потом ещё один комментарий, который кто‑то оставил, пока я копировал первые. Потом ждал, пока агент напишет код, открывал PR, возвращался в задачу, вставлял ссылку, менял статус на Fixed — и шёл за следующей.

В какой‑то момент я понял, что из всей этой цепочки самая бесполезная её часть — это я. Агент умеет писать код, YouTrack умеет хранить задачи, а я работаю буфером обмена с ногами.

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

Читать далее

Дядя Боб написал правила для ИИ‑агентов: разбираем ub‑mode

Автор «Чистого кода» Роберт Мартин aka Дядя Боб взялся за ИИ-агентов. В скилле ub-mode, который Дядя Боб на днях выложил на GitHub, всего около 750 слов. Этими словами Мартин выстраивает работу агента так, будто сам стоит рядом и смотрит на монитор строгим взглядом.

На днях Роберт Мартин aka Дядя Боб, автор «Чистого кода», выложил на GitHub ub-mode — набор правил для ИИ-агентов. Весь скилл — один файл примерно на 750 слов: короткие ёмкие правила, написанные по тем же принципам «чистого кода». Теперь у каждого разработчика будет свой Дядя Боб: он встанет над ИИ-агентом с линейкой и проследит за гигиеной кода.

При разборе багов агент приносит правку и пишет «готово, шеф». По одному диффу не понять, так ли это: старые тесты могли остаться зелёными и при неверной логике, а новая проверка — просто спрятать сбой. Скилл ub-mode заставляет агента обосновать свою работу: сначала показать тест, который падает из-за бага, потом предъявить правку, после которой тест проходит.

В репозитории ub-mode нет кода: там только README.md и SKILL.md. Второй файл описывает порядок действий, а README отсылает к утилитам, которые меряют сложность кода, ищут дубли и проверяют, ловят ли тесты ошибки. Автор пишет, что частично использовал идеи poteto-mode / pstack.

Правила разбиты на три части: First Make it Work, Then Make it Right и Practice.

Читать далее

[Перевод] Ускоряем self-hosted Convex в два раза: AOT-компиляция TypeScript-функций в Wasm

Convex – это новый, но набирающий популярность фреймворк для реактивных веб-приложений, который позволяет писать транзакционные квери (queries) и мутации (mutations) на TypeScript с гарантиями консистентности.

Вся статья ниже относится к self-hosted версии Convex: convex-backend, а точнее, к моей пропатченной версии оного, так как “официальная” версия не пригодна к работе в продакшене и вряд ли тестировалась на сколь-нибудь нагруженном кейсе. Моя версия работает на виртуальном сервере с 32 ядрами и 64Гб памяти и обрабатывает до 15 тысяч Convex-кверей и мутаций в минуту.

Я навайбкодил convex-wasm-compiler, который компилирует Convex-квери и мутации в WebAssembly, и соответствующий патч для convex-backend, позволяющий выполнять скомпилированные в Wasm Convex-функции на файберах Wasmtime прямо в Tokio рантайме convex-backend.

TLDR: квери и мутации в среднем работают в 2 раза быстрее, хвосты задержек сократились втрое. Объём памяти, который сервер удерживает под готовые к выполнению окружения (V8-контексты или Wasm-окружения), уменьшился на 80%.

Читать далее

Архитектура 1С для новичков: Строим первую внешнюю обработку и клиент-серверный мост. Часть первая

Боитесь запутаться в клиент-серверной архитектуре и управляемых формах? В этой короткой статье разберем самый простой и понятный алгоритм создания внешней обработки с нуля. Идеально для начинающих разработчиков и студентов, делающих первые шаги в 1С.

​Каждый начинающий программист 1С рано или поздно приходит к моменту, когда типовых возможностей конфигурации не хватает, а вносить изменения в саму конфигурацию (снимать с поддержки) нельзя или не хочется. Именно для таких задач и существуют внешние обработки (файлы с расширением .epf),они не мешают последующим типовым обновлениям от фирмы 1С.

Шаг 1. Создаем файл обработки в Конфигураторе

Открываем Конфигуратор и идем по классическому пути: Файл — Новый — Внешняя обработка.

Перед нами пустая карточка. Здесь нас интересуют два поля: Имя и Синоним.

Имя — это то, как к вашей обработке будет обращаться сама система в коде (пишем строго без пробелов, например: ЗагрузкаДанныхИзФайлов).

Синоним — это название, которое 1С выведет на экран пользователю (тут пробелы и знаки препинания разрешены, например: Умный импорт первички).

Шаг 2. Проектируем интерфейс (Управляемую форму)

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

Добавляем данные: В правом верхнем углу (вкладка Реквизиты) нажимаем «Добавить». Нам нужна строка, назовем её ПутьКФайлу, перетаскиваем в левое верхнее окно Элементы. 

Лайфхак для интерфейса: Выделяем это поле, открываем его свойства (Alt + Enter) и в поле Заголовок пишем то, что должен увидеть пользователь, а чуть ниже находим свойство КнопкаВыбора и ставим галочку Да (чтобы в поле появились заветные три точки ...).

Читать далее

DevSecOps для тех, кто не безопасник: как встроить SAST, SCA и поиск секретов в CI/CD

Прилетает задача: «нужно прикрутить безопасность к пайплайну». Берёте популярный сканер, втыкаете в CI/CD с дефолтным конфигом — и через десять минут пайплайн с треском падает под лавиной из 480 предупреждений. Через неделю постоянных ложных блокировок команда просто забивает на алерты: безопаснее не стало, релизы замедлились, а при слове «DevSecOps» все раздражаются.

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

Собрать за вечер →

Читать свои книги без подписок и DRM: как устроена Readora

У многих дома лежит папка с сотнями книг в FB2 — и почти ни одного удобного способа читать их где угодно. Десктопные читалки не синхронизируют прогресс, онлайн-сервисы требуют подписку и не принимают «свои» файлы, а связка Calibre с облаком — конструктор для энтузиаста. Рассказываем, как эту проблему решили браузером, PostgreSQL и открытым кодом — и почему в итоге всё свелось к скучному и предсказуемому стеку.

Но обо всём по порядку.

Погнали

Условия, в которых рождаются системы. Средовой подход для ИИ‑агентов

Вечером вы оставили агентам задачу, а утром перед вами готовая реализация: код, тесты, все проверки зелёные. Вы будете это релизить? Наверняка у вас сразу появилось своё «смотря что». Написание кода мы уже умеем автоматизировать, а решение о том, что считать пригодным результатом, осталось за нами.

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

Читать далее

[Перевод] Что будет, если слить две ветки в Git? Проверяем заранее, не выполняя merge

Конфликты при слиянии веток в Git часто обнаруживаются в самый неподходящий момент — когда изменения уже готовы к интеграции. Но что, если результат merge можно проверить заранее, не затрагивая рабочую директорию и текущую ветку? Разбираемся, как с помощью git merge-tree увидеть потенциальные конфликты ещё до слияния и что для этого умеет сам Git.

Разобрать команды

ИИ на всех этапах создания продукта и не только. О чём говорили на ГигаКонфе для инженеров — 2026

Весь год на Хабре то и дело всплывают дискуссии: останется ли место программистам в мире, где ИИ‑агенты забирают всё больше задач? Но одно дело читать диванную аналитику и прогнозы, а совершенно другое — адаптироваться к новой реальности и смотреть, как всё это крутится в проде. 16 октября я отправился на инженерный день ГигаКонф-2026 в штаб‑квартиру Сбера, чтобы своими глазами увидеть, насколько глубоко ИИ интегрировался в инженерные процессы рынка.

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

Спойлер: писать код нам всё‑таки придётся. Но постепенно это становится не самой сложной частью работы.

Читать далее

Когда код становится игрой: как INFOSTART TECH EVENT 2026 изменил мои лекции

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

INFOSTART TECH EVENT2026 для меня оказался именно таким.

Я много лет работаю с 1С, руковожу компанией, преподаю. Казалось бы, удивить меня профессиональным мероприятием уже сложно. Но эта конференция не просто удивила – она напомнила, ради чего я вообще всем этим занимаюсь. И, что для меня особенно ценно, её отголоски очень быстро долетели до университетской аудитории в Абакане.

Об этом и хочу рассказать.

Читать далее
❌