Все потоки
Поиск
Написать публикацию
Обновить
28.41

TypeScript *

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

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

Яндекс SmartCaptcha в Angular

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров882

Защита веб-форм от ботнетов и автоматических атак стала критически важной, особенно после ухода зарубежных сервисов. Яндекс SmartCaptcha предлагает российскую альтернативу Google reCAPTCHA, но её интеграция с Angular требует дополнительной работы.

В этой статье разберём создание Angular-адаптера, его архитектуру и особенности использования.

Читать далее

Разбираем Pino: как работает самый быстрый логер для Node.js

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров6K

Pino — один из самых быстрых логгеров для Node.js, но как он устроен внутри? В этой статье мы углубимся в низкоуровневые механизмы: разберём, как работают транспорты, чем отличается multistream от pipeline, и как настроить логирование без потери производительности. Вы узнаете, как использовать child loggers, маскировать данные с redact и избегать типичных проблем. Этот материал для тех, кто хочет понять Pino на фундаментальном уровне и применять его с максимальной эффективностью.

Читать далее

Книга: «Искусство юнит-тестирования с примерами на JavaScript. 3-е межд. изд.»

Время на прочтение4 мин
Количество просмотров1.3K
Привет, Хаброжители!

Если вы хоть раз сталкивались с юнит-тестами, вы знаете, что это одновременно и благословение, и проклятие. С одной стороны, они помогают ловить баги на ранних этапах, с другой — могут превратиться в настоящий ад, если написаны неправильно. Книга «Искусство юнит-тестирования с примерами на JavaScript» от Роя Ошерова и Владимира Хорикова — это глубокий, практический и местами даже философский взгляд на то, как писать тесты, которые действительно работают, а не создают дополнительные проблемы. И в этой статье вы не только узнаете о самой книге, но и мнение о ней от научного редактора российского издания — Дмитрия Колфилда.
Читать дальше →

Создание простого хука для работы с формами в React на основе `zod`

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

Создание простого хука для работы с формами в React на основе zod

В этой статье мы реализуем удобный хук useForm, который минимизирует ререндеры и упрощает работу с формами в React, используя FormData для сбора данных и zod для валидации. Рассмотрим разницу между контролируемыми и неконтролируемыми компонентами.

Читать далее

Создание анонимного чата в Telegram: Бот с MiniApp интерфейсом. Часть 2 — VueJS3 + Centrifugo с монетизацией приложения

Время на прочтение33 мин
Количество просмотров4.5K

В первой части мы построили бэкенд на FastAPI, Aiogram, Redis и Centrifugo, заложив основу для анонимного чата в Telegram. Теперь пришло время развернуть фронтенд и создать стильный и отзывчивый интерфейс с использованием VueJS 3 в формате Telegram MiniApp.

В этой статье мы:

Разработаем интерактивный UI с фильтрами поиска, анимациями загрузки и real-time чатом.
Настроим мгновенный обмен сообщениями через Centrifugo без лишних запросов к серверу.
Интегрируем монетизацию для заработка на рекламе в приложении.
Выполним деплой на удаленный сервер и подготовим проект к продакшену.

Если вы хотите создать быстрый, удобный и монетизируемый анонимный чат в Telegram, который работает без задержек и перезагрузок, — эта статья для вас!

Читать далее

Избавляемся от boilerplate в Angular: использование TypeScript-декораторов

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров700

Каждый Angular-разработчик хотя бы раз задумывался: "Почему я пишу так много однотипного кода?". Инъекция зависимостей, повторяющиеся методы логирования, одинаковая обработка событий — всё это напоминает вечную гонку с шаблонным кодом (boilerplate). Однако в арсенале Angular есть мощное средство для упрощения задач и автоматизации повторяющихся действий — TypeScript-декораторы. Декораторы — это быстрый способ добавить унифицированную функциональность к кодовой базе, сделав её чище, понятнее и поддерживаемой. В этой статье мы разберём, как с помощью декораторов избавляться от однообразных повторов, одновременно привнося гибкость и снижение количества ошибок.

Читать далее

Cohere Command — революция, которую мы пропустили

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров14K

🔪 Карусель триальных токенов под ребро облачному LLM провайдеру

Облачный LLM провайдер Cohere предоставляет бесплатно 20 запросов в минуту без проверки кредитной карты. Я просто не смог отказаться от задумки сделать веселую карусель.

Читать далее

Авто-генерация типизированных API контроллеров на клиенте из Swagger

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

Зачастую нам приходится описывать API-запросы или переписывать уже имеющиеся ввиду изменения каких-то DTO (Data Transfer Object) или параметров у запросов. Это вполне естественно для разработки, но часто оказывается скучным и однотипным процессом, не требующим размышлений или особых навыков. В этой статье я рассказываю, как автоматизировать всю эту историю.

Читать далее

Оркестрация чатов LLM моделей через Redis

Уровень сложностиСложный
Время на прочтение9 мин
Количество просмотров2.2K

🐝 Оркестрация чатов LLM через Redis

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

Читать далее

Как сделать мессенджер: GraphQL Subscriptions и Relay на практике

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

Подписки в GraphQL позволяют клиенту подписаться на изменения данных на сервере. Например, в чате с их помощью можно получать уведомления о сообщениях, их удалении или изменении. В отличие от обычных запросов, подписки работают асинхронно, поддерживая постоянное соединение через WebSocket. В этом случае сервер может в любое время послать запрос клиенту. В то же время для обычных запросов(queries), чтобы увидеть изменение данных, клиенту нужно запрашивать их заново каждый раз. А ещё с помощью GraphQL Subscriptions и библиотеки Relay можно создать собственный мессенджер.

Читать далее

До и после: оптимизация изображений для Lighthouse и не только

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

Привет, интернет! 

Я Антон Небыков, Frontend TechLead в ИдаПроджект.

Хочу поделиться опытом автоматизации отображения изображений на сайте, их оптимизацией и — как следствие — улучшением показателей в Lighthouse.

На первый взгляд, работа с изображениями сводится к простому добавлению элемента img и ссылки на изображение в атрибуте src. Но на практике все намного сложнее :) 

Погнали разбираться!

Читать далее

Выбор локальной LLM модели. Публикация на сайт с чатом

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

🐝 Выбор локальной LLM модели. Публикация на сайт с чатом.

В мире нейросетей - хайп. Не всегда заявления производителя соответствуют действительности, например, на бумаге DeepSeek R1 поддерживает русский язык, на деле не всё так гладко. Данная статья содержит подборку LLM моделей, хорошо работающих с русским языком и имеющих возможность tool calls - вызов внешних python/nodejs функций для интеграции в стороние сервисы

Читать далее

Рекомендуемые библиотеки для React

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров11K



React существует уже довольно давно, и за эти годы вокруг него выросла огромная экосистема библиотек. Разработчики, переходящие с других языков или фреймворков, часто испытывают трудности с выбором библиотек, необходимых для создания веб-приложений с помощью React.


React позволяет разработчикам создавать пользовательские интерфейсы (user interfaces, UI) на основе функциональных компонентов. Хотя он предоставляет встроенные решения, такие как хуки (hooks), для управления локальным состоянием, обработки побочных эффектов и оптимизации производительности, в конечном итоге все сводится к работе с функциями — как компонентами, так и хуками — для построения UI.


В этой статье мы рассмотрим основные библиотеки React на 2025 год. Эти библиотеки являются строительными блоками для разработки приложений. Независимо от того, новичок вы или опытный разработчик, эта шпаргалка поможет вам сориентироваться в обширной экосистеме React.


Читать дальше →

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

Асинхронные команды и запросы c @artstesh/postboy: упрощаем архитектуру приложений

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров384

Приветствую! Продолжаем разбирать возможности @artstesh/postboy и обсуждать, как сделать ваше приложение проще, а код элегантнее. Сегодня поговорим о том, что такое асинхронные команды и запросы, почему этот механизм так удобен, и как использовать его в реальных приложениях. Как всегда, всё покажу на живых примерах, чтобы можно было сразу применить на практике.

Читать далее

Первый шаг в мир RxJS: знакомство с Observables

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

Проблема многих новичков, впервые сталкивающихся с темой подписок, заключается в обилии тем и нюансов, связанных с этим направлением. Тонны статей, дискуссий, документаций на темы, аля «RxJS mergeMap vs switchMap vs concatMap vs exhaustMap» могут вызвать головную боль уже в первые пятнадцать минут. Потому первый мой совет: ограничьте список тем и осваиваемых инструментов до самого минимума, декомпозиция важна везде и всегда — слона надо есть по частям. Так начинающий учиться шахматам сначала разбирает каждую фигуру в отдельности, запоминает возможности и нюансы, постепенно переходя к глобальной стратегии игры. Поэтому давайте смахнем все фигуры с доски и оставим там только пешку.

Читать далее

TypeScript 7 в 10 раз быстрее: анонс нативного компилятора TSGO

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.4K

11 Марта вышел аннонс Typescript 7, в котором рассказали о разработке нового tsgo компилятора.

Андерс Хейлсберг объявил о следующем этапе в развитии Typescript, направленном на кардинальное повышение производительности.
Основная ценность Typescript — это удобный опыт разработки, с ростом кодовой базы эта ценность становится всё более очевидной. Но, как показала практика, текущая реализация часто не справляется с очень крупными проектами. Разработчики сталкиваются с долгим временем загрузки, медленным автокомплитом и проблемами с производительностью.

Нативный порт компилятора на Go - tsgo доступен в репозитории на GitHub - typescript-go. Уже сейчас его можно потестировать и попытаться собрать какой-нибудь проект, но пока реализовано 80% функционала языка. А завершить разработку tsgo обещают в пределах 2025 года.

Читать далее

System Design Interview. Шаблон прохождения собеседования этого этапа

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.2K

Недавно я собеседовался в Амазон и Майкрософт в офисы в Испании (так как я тут живу). Пока готовился много что понял, сейчас поделюсь.

Собеседование на проектирование систем.

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

Читать далее

Публикация пакета npm с ESM и TypeScript

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



За последние 2 года поддержка ESM в TypeScript, Node.js и браузерах сильно улучшилась. В этой статье я объясню мою современную настройку, которая является относительно простой по сравнению с тем, что нам приходилось делать раньше:


  • она предназначена для пакетов, которые могут пренебречь обратной совместимостью. Настройка хорошо работает для меня некоторое время — начиная с TS 4.7 (24.05.2022)
    • помогает то, что Node.js теперь поддерживает require(esm) — запрос библиотек ESM из модулей CommonJS
  • я использую только tsc, но упоминаю поддержку других инструментов в разделе "Компиляция TS с помощью других инструментов"

Обратная связь приветствуется: что вы делаете по-другому? Что может быть улучшено?


Пример пакета: в @rauschma/helpers используется настройка, описываемая в этой статье.

Читать дальше →

NEST.js — уродливый монстр или мощный энтерпрайз?

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров9.1K

Если, когда вы смотрите на NEST.js вас гнетёт необъяснимая тоска. Если вы не можете понять воодушевления и радости от использования декораторов. Если рассмотрение очередного NEST-инструмента вызывает лёгкое недоумение — не стесняйтесь, вы не одиноки.

NEST.js – это фреймворк для написания REST серверов под Node.js на языке TypeScript, который потом транспилируется в JavaScript. Он написан поверх библиотеки Express (или Fastify – можно выбрать) и привносит модные концепции – Inversion of Control, Dependency Injection и т. п. в мир JavaScript. Нередко описание этого инструмента сопровождается восторженным настроением. Как мне кажется, эта восторженность несколько преувеличена, сложность излишняя, а чудо-сила отсутствует. Некоторые неудобства вынудили нас отказаться от его использования после нескольких лет разработки.

Читать далее

Разбор интервью с автором TypeScript о портировании его на Go

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров21K

Анонсирован порт TypeScript на Go, который показывает двухкратное уменьшение использования памяти и десятикратное улучшение скорости работы!

В этой статье мы разберем в деталях часовое интервью с автором TypeScript Андерсом Хейлсбергом об этом портировании.

Чего не хватает для лучшей производительности node.js?

Читать далее