Чтобы дать LLM доступ к своему коду, пишут инструменты (tools). Инструмент — это функция и всё, что модели нужно знать, чтобы её вызвать: имя, описание и схема аргументов.Потом те же инструменты приходится писать ещё раз. Первая версия сделана на tool() из AI SDK. В проекте появляется MCP-сервер, и инструменты переписывают под registerTool. Соседняя команда использует Genkit, и те же инструменты пишут в третий раз, через defineTool. Функции остаются прежними, меняется только обёртка.К тому же к…
Помните Million Dollar Homepage? В 2005 году студент продал миллион пикселей по доллару за штуку и заработал миллион. Никакой пользы в этих пикселях не было, но люди платили за участие в мемчике и за место, которое видят другие.Мне захотелось сделать что‑то похожее для разработчиков, только вместо денег — валюта, которую у нас и так все копят: звёзды на GitHub.Так появился Star Throne — репозиторий‑игра. Ставишь звезду на репо, и через минуту‑две GitHub Actions считает, сколько звёзд у тебя сам…
👋 Привет! Меня зовут Александр, я работаю фронтенд-разработчиком в компании «МегаФон». Сегодня хочу поговорить о статическом анализе TypeScript-проектов за пределами привычной связки tsc и ESLint.tsc прежде всего отвечает за корректность типов, а ESLint находит широкий круг ошибок и нарушений принятых в проекте правил. Вместе они закрывают большинство повседневных задач, но не все проблемы удобно выражать через типы и правила линтера. Например, в проекте может потребоваться запретить зависимост…
Давно не виделись хабровчане. Сегодня мы поговорим на избитую и всем уже изрядно надоевшую тему, но слегка под другим углом. Если вы уже работали с микрофронтендами в вебе, сама загрузка отдельной сборки внутри Capacitor вряд ли удивит. WebView исполняет JavaScript, а уже он загружает сборку через Module Federation и монтирует её как компонент.Сложности начинаются, когда этому микрофронту нужен, например, доступ к камере или геолокация. Сразу возникает несколько вопросов:Кто регистрирует плагин…
Всем привет! Меня зовут Даниил Николаев и я frontend-разработчик в компании "Исходный Код"На kickoff снова всплывает один и тот же спор. Один тянет Tailwind. Второй - CSS Modules. Третий тащит привычный CSS-in-JS. Кто-то молча открывает .scss и выходит из разговора. Разбор ниже - в контексте React, для middle и middle+.Способов писать стили слишком много. У каждого есть громкие адепты и не менее громкие хейтеры. Обычно команда выбирает то, что уже умеет, а не то, что дешевле живет в бра…
TL;DR. Собрал одно и то же CRUD-приложение на восьми стейт-менеджерах (effector, zustand, mobx, react-query, rxjs, reatom, xstate, jotai) и увидел: дело не в выборе библиотеки, а в архитектуре. Три правила, которые реально решают:не тяните одну независимую фичу напрямую в другую — связывайте их через компоненты и хуки, а не импортом модели в модель;один стор — одна сущность, без общего “божественного” стора на всё приложение;создавайте и удаляйте модели вместе с компонентом — не превращайте их …
Практический разбор архитектуры, где CommandBus передаёт намерения пользователя, а EventBus распространяет изменения состояния между независимыми частями интерфейса. В небольшом frontend‑приложении обычно нет необходимости придумывать дополнительные слои абстракции. Пользователь нажал кнопку — компонент вызвал сервис. Сервис изменил данные — интерфейс обновился. Проблема появляется позже, когда одно и то же действие можно выполнить из нескольких мест, а на одно изменение состояния должны реагир…
Мы делаем пет-проект «Чатограмма»: он считает статистику переписки прямо в браузере, файл с перепиской на сервер не уходит. Такое обещание проще всего проверить без чтения политик: включить авиарежим и посмотреть, посчитается ли. Мы даже вынесли это в интерфейс: если сети нет, главная сама меняется на «Интернета нет — а сайт работает», а после подсчёта показывается «Посчитано в авиарежиме».Для этого странице нужно ответить на, казалось бы, тривиальный вопрос: есть ли сейчас сеть? На iPhone отве…
Это вторая версия статьи (первую модератор удалил, причину мне не сообщили. Что ж, пишу заново: без ссылок на свои каналы, зато с тем, что за эту неделю изменилось в проекте). Буду рад, если на этот раз текст останется на сайте.s57-parser: морская карта S-57 в браузереКоротко о чём речь. Электронные навигационные карты (ENC) формата S-57 стоят на каждом коммерческом судне. Стандарт живёт с 1996 года, но живого JavaScript-парсера для него я не нашёл: либо серверный GDAL, либо коммерческие SDK за…