Обновить
64K+

TypeScript *

Cтрого типизированная надстройка для JavaScript

54,11
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Чей номер и чей БИК: две офлайн-библиотеки на открытых реестрах Минцифры и ЦБ

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели12K

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

Так появились две библиотеки. phoneoperator по реестру Минцифры определяет оператора и регион номера, bankbik по справочнику ЦБ находит банк по БИК и проверяет ИНН, СНИЛС, ОГРН и счета. Обе работают без сети и обновляются сами. Внутри: как 60 МБ реестра ужимаются до 45 КБ, почему у МТС два названия и почему сайт Минцифры не пускает GitHub.

Песочницы: phoneoperator и bankbik.

Проверить реквизиты

Новости

Как мы научили JavaScript анализатор понимать поток управления

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели8.5K

Недавно в статический анализатор PVS-Studio была добавлена поддержка JavaScript/TypeScript, и он на старте умеет искать ошибки, связанные с потоком управления. Причём тут граф потока управления, как мы его добавили и чем это полезно — читайте в этой статье.

Читать далее

Обновления GigaIDE за сентябрь 2026

Время на прочтение5 мин
Охват и читатели7.3K

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

Читать далее

Anthropic запретила обижать Claude, а я матерюсь в каждом втором сообщении. Пришлось сделать Punto Switcher для промптов

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели8.8K

Всем привет! 8 октября Anthropic обновила правила пользования своими моделями. Среди прочего там появился пункт, который меня обеспокоил: систематическая бессмысленная жестокость к моделям теперь под запретом. Я как раз писал об этом новость и поймал себя на мысли, что я буду первым, кого забанят.

Потому что я матерюсь на Claude Code. Много. Когда агент в который раз бодро рапортует «готово», а ничего не готово, слова я не подбираю. У меня даже есть скилл Prompt Warrior, который по логам считает, как я общаюсь с агентом. Посчитал: мат почти в каждом втором сообщении. А теперь пришла пора не только считать, но и менять. Менять текст, автоматически, а не свои привычки, конечно же.

Читать далее

FalangFlow: открытый конструктор автоматизаций на блок-схемах с TypeScript и Temporal

Время на прочтение5 мин
Охват и читатели9.9K

Я здесь уже рассказывал про Falang (friendly algorithmic language) - универсальное решение для построения блок схем. Тогда у меня было несколько MVP под разные направления, сейчас же я выхожу в свет с реальным продуктом.

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

Читать далее

Переезд с Webflow на Next.js по одной странице: Payload CMS, next-intl и проверки в CI

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели5.4K

Корпоративный сайт на пяти языках: около сотни страниц, блог, новости и 100–150 тысяч пользователей в месяц. Два года он жил на Webflow. Переезд на Next.js 15 и Payload CMS сейчас на финишной прямой, и шёл он без дня Х: страница за страницей, на одном домене со старым сайтом.

Разбираю, как это устроено. Счёт Webflow по строкам, Next.js под /app на Webflow Cloud и 301-редиректы с пятью локалями, перенос CMS-коллекций в Lexical, next-intl и проверки в CI, которые ловят то, что раньше находил только дизайнер через месяц.

Как это устроено

Как React учился батчингу и как научить его «летать»?

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели5.4K

Чтобы React летал как Vue 3, достаточно забрать у него тяжелые вычисления и переложить их на плоский реактивный граф зависимостей с умным планировщиком транзакций на уровне микрозадач.

Больше реактивности

Как посчитать статистику переписки на 500 тысяч сообщений в браузере и не увидеть ни одного

Время на прочтение10 мин
Охват и читатели6.3K

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

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

Читать далее

Набор функций ещё не продукт: что я понял, когда посмотрел на свой проект со стороны

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели5.8K

Всем привет! В прошлой статье я рассказывал про ребрендинг моего плагина для Obsidian, Companion и MCP. Но спустя какое-то время я поймал себя на достаточно неприятной мысли: поменять название, причесать отдельные функции и добавить ещё несколько возможностей недостаточно, чтобы получился действительно интересный продукт. Функций становилось всё больше, а ответа на довольно простой вопрос всё ещё не было:

Зачем обычному пользователю вообще нужен именно мой плагин?

Ответить на него самому себе оказалось сложнее, чем я думал. Поэтому вместо того, чтобы придумать очередную кнопку, я решил посмотреть, как развивались другие популярные плагины Obsidian, особенно в AI-нише. Мне хотелось понять, есть ли какой-то момент, после которого проект внезапно начинает расти, и можно ли этот момент вообще повторить.

Читать далее

Парсер расписаний после хабратестирования: полвторого, RRULE, systemd и производственный календарь

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели9.7K

В прошлой статье я показал cronsense, библиотеку, которая переводит расписание на русском или английском в cron: «по будням в 9:30» → 30 9 * * 1-5. Комментаторы устроили ей хабратестирование и нашли, чего она не умеет: «полвторого», «без пяти шестнадцать», «каждые полчаса», а ещё задачи, для которых cron не подходит вообще.

За несколько дней вышло семь версий. Теперь одна фраза превращается в cron, RRULE для календарей или таймер systemd, а праздники можно называть по имени. Для «последнего рабочего дня месяца» появилась вторая библиотека, prodcalendar: производственный календарь РФ, который сам обновляется в npm. Попутно сверка с rrule.js и systemd-analyze нашла баги, о которых я не знал.

Песочница

Прочитать до Нового года

Почему архитектура важнее выбора стейт-менеджера в React

Время на прочтение16 мин
Охват и читатели6.7K

Почему архитектура важнее выбора стейт-менеджера в React

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

Читать далее

Capacitor: от веба к мобильным приложениям. Часть 5. Микрофронтенды в Capacitor

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.4K

Ого, да это же следующая статья цикла про Capacitor. В ней мы рассмотрим нюансы реализации микрофронтендов в Capacitor приложении,а также разбирем схему, в которой команды могут выпускать MFE независимо и не ломать нативную часть приложения.

Читать далее

Если UI плагинный, почему BFF монолитный?

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели8.9K

Модульная архитектура во фронтенде дает командам автономность: каждая пилит свой модуль и не ждет соседей. Потом появляется BFF, один на всех, и автономность начинает утекать обратно. Каждая новая ручка проходит через согласования, релизы приходится синхронизировать, узкое место просто переезжает с клиента на сервер.

Привет, Хабр! Меня зовут Маргарита Козырева, я — сеньор-фронтенд в «Лаборатории Касперского», работаю в Kaspersky Security Center. В айти семь лет, значительная часть из них ушла на дизайн-системы, которые я строила с нуля.

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

Читать далее

Ближайшие события

Продвинутый статический анализ в TypeScript-проектах: выходим за рамки tsc и ESLint

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели5K

👋 Привет! Меня зовут Александр, я работаю фронтенд-разработчиком в компании «МегаФон». Сегодня хочу поговорить о статическом анализе TypeScript-проектов за пределами привычной связки tsc и ESLint.

Читать далее

Каждый LLM-фреймворк описывает инструмент по-своему

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.1K

Чтобы дать LLM доступ к своему коду, пишут инструменты (tools). Инструмент — это функция и всё, что модели нужно знать, чтобы её вызвать: имя, описание и схема аргументов.

Потом те же инструменты приходится писать ещё раз. Первая версия сделана на tool() из AI SDK. В проекте появляется MCP-сервер, и инструменты переписывают под registerTool. Соседняя команда использует Genkit, и те же инструменты пишут в третий раз, через defineTool. Функции остаются прежними, меняется только обёртка.

Читать далее

EventBus и CommandBus во frontend: когда прямых вызовов становится слишком много

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.4K

Практический разбор двух простых шин: как разделить запуск действий и реакцию на изменения в реальном frontend-приложении.

Читать далее

«Интернета нет — а сайт работает»: как мы учили PWA замечать авиарежим на iPhone

Время на прочтение8 мин
Охват и читатели7K

Мы делаем пет-проект «Чатограмма»: он считает статистику переписки прямо в браузере, файл с перепиской на сервер не уходит. Такое обещание проще всего проверить без чтения политик: включить авиарежим и посмотреть, посчитается ли. Для этого странице нужно ответить на, казалось бы, тривиальный вопрос: есть ли сейчас сеть? На iPhone ответ оказался неожиданным.

Читать далее

Почему я пишу Bun‑native альтернативу napi‑rs

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.8K

Я работаю над bffi‑rs, экспериментальным фреймворком для нативных биндингов Bun, написанным на Rust.

Проект появился из довольно практичной задачи. Я хотел сделать небольшое desktop‑приложение с нативным WebView, но при этом оставить Bun основным рантаймом.

В экосистеме уже есть решения для подобных приложений. Например, некоторые интеграции WebView для Bun используют Rust и napi-rs. В варианте Electrobun, который я рассматривал, для WebView используется Wry, а связка между Rust и JavaScript строится через napi-rs. Эти проекты решают реальные задачи, но у меня появился другой вопрос: что будет, если строить нативную часть приложения вокруг Bun, а не вокруг совместимости с Node.js?

Читать далее

«По будням в 9:30» → 30 9 * * 1–5: парсер расписаний на русском, который отказывается угадывать

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.8K

Библиотека называется cronsense. Она переводит расписание, записанное обычными словами на русском или английском, в cron‑выражение и обратно. Рассказываю, как устроен разбор, о какие ловушки cron легко споткнуться и как тесты проверяют, что описание разбирается обратно в то же расписание.

Читать далее

Книга из переписки без сервера: canvas, jsPDF и брошюра для печати прямо в браузере

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.8K

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

Потом понадобилась подарочная книга: PDF формата A5, где самые яркие моменты переписки собраны по главам — с чего всё началось, первое «мы с тобой», лучшие моменты каждого года, общий словарь, квиз «Кто это написал?». Плюс вариант для печати дома брошюрой: A4, сложить пополам, скрепить степлером.

И здесь правило «ничего на сервер» перестаёт быть бесплатным. Книгу обычно верстают на сервере: headless Chrome, LaTeX, что угодно с нормальными шрифтами и без ограничений по памяти. У нас всё это должно работать на телефоне, в том числе на iPhone, в том числе во встроенном браузере мессенджера. Ниже — как это устроено и на какие грабли мы наступили.

Читать далее
1
23 ...