Архив за 06 июня 2026 - 3

Привет! Меня зовут Андрей, как и многие, я уставал от красных сообщений об ошибках в консоли, где не видно значений переменных. Приходилось ставить print(), гуглить – терял кучу времени. Поэтому я написал crashprobe – библиотеку, которая делает отладку простой и наглядной.

Проблема

Я думаю, всем, у кого программа падала из-за ошибки, надоело вот это:

Читать полностью »

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

Читать полностью »

Привет!

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

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

Читать полностью »

Когда я собрал список всех ИТ‑инициатив в холдинге, их оказалось 117. Это уже после нормализации — до неё было больше. Четыре проекта с разными названиями, разными авторами, разными бюджетами — про одно и то же: автоматизацию конкретного складского процесса. Каждый руководитель запустил «свою» инициативу, не зная о трёх остальных. Аналитики и разработчики уже тратили ресурс параллельно на все четыре.

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

Контекст

Читать полностью »

Контракт use case должен описывать потребность приложения, а не API выбранного persistence фреймворка.

Spring Data пагинация хорошо работает в CRUD приложениях. Для многих проектов Pageable в application service это разумный компромисс. Проблема возникает, когда Pageable становится частью публичного контракта use case:

interface OwnerUseCase {
    Page<OwnerView> execute(Pageable pageable);
}

Теперь каждый клиент: контроллер, шедулер, message listener, — вынужден знать о Spring Data API. Контракт слоя приложения начинает описывать детали persistence фреймворка, а не потребность приложения.

Независимая от фреймворка модель пагинации

Читать полностью »

Короткая суть. Некоторые команды до сих пор хранят «правду» об API в трёх несовместимых местах: в голове бэкендера, в страничке Confluence, которая устарела ещё прошлой весной, и в реальном JSON, который прилетает с прода. Эти три источника постоянно расходятся, и расплачиваются за это все — особенно клиентские разработчики. OpenAPI — это способ свести правду к одному файлу-контракту, понятному и человеку, и машине. В статье я разбираю, зачем это нужно, почему кодогенерация — далеко не главная причина, но при этом проговариваю, во что внедрение обойдётся бэкенду, и где у подхода реальные слабые места.

СитуацияЧитать полностью »

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

Читать полностью »

Около полугода назад я перешёл с ChatGPT на Claude Code с моделями от Anthropic, и моя жизнь изменилась. Вообще, это была не первая моя попытка решиться на такие серьёзные перемены. Раньше я пробовал пользоваться Qwen Code с китайскими LLM, но довольно быстро заканчивал со словами: «Я сам быстрее сделаю, чем ему объясню». Спойлер: проблема во многом была не в инструменте, а во мне.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js