Блог

tagshift: из <template> — в компонент

Маленькая библиотека, которая превращает обычный <template> в класс: плейсхолдеры ${props} в тексте и атрибутах, слоты по правилам Shadow DOM, а render() обновляет тот же самый элемент на месте. Без зависимостей, без сборки и без виртуального DOM.

3 × 7 × 11 = 231: бесшовный фон из трёх маленьких плиток

Плитка 3×3 повторяется через каждые 24 пикселя. Положите на неё 7×7 с дырками, а сверху — 11×11 с дырками, и лабиринт не повторится 1848 пикселей. Почему 231, почему не подходят 4, 6 и 10, и почему ячейки должны быть плитками Трюше.

Rust: первые шаги. Todo, который помнит

Todo из первой части теряет всё при выходе. Учим его хранить задачи в файле, шаг за шагом: модули и pub, Result и оператор ?, ошибки без unwrap, тесты рядом с кодом, релизная сборка. По-прежнему ноль зависимостей.

Passkeys: печать вместо пароля

Как устроены passkeys и почему фишинговой странице нечего подписать. Регистрация и вход по шагам, и рабочий минимум на SimpleWebAuthn: четыре ручки на сервере, автозаполнение в браузере, passkey вместо пароля или вторым шагом после него.

Rust: первые шаги. Todo, который всё забывает

Ставим тулчейн, делаем первый проект и пишем todo-list для терминала без единой зависимости. По дороге — ownership, borrow checker и переполнение usize, каждый раз с настоящим выводом компилятора.

Serv 0.3: локальный веб-сервер с поддержкой Markdown

serv 0.3 умеет отдавать папку с markdown как сайт: `/about` находит `about.md`, папка открывается своим README, ссылки ведут на чистые адреса, диаграммы рисуются. Что за это пришлось отдать — сеть ради mermaid и полтора мегабайта ради подсветки.

Запрос кончился, соединение осталось

`rack.hijack` выглядит как способ сделать стриминг, а на самом деле это выход из контракта Rack: приложение забирает сокет вместе со всей бухгалтерией, которую сервер за него вёл. Два вида перехвата, и только один освобождает поток.

Как папка SVG становится шрифтом

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

Теория ограничений

Снять ограничение почти ничего не стоит, а поставить задним числом — дорого: сначала расследование, потом заглушка, которая переживёт всех. О том, почему систему надо начинать с узкого и расширять по требованию.