Новости 512 #238

В этом выпуске: релиз Firefox 116, Arc 1.0, security-релизы Node.js и релиз-кандидат TypeScript 5.2, а также полезные материалы по Node.js, написанию тестов и другие.

Всем привет, это «Новости 512» от CSSSR. В этом выпуске мы поговорим о релизе Firefox 116, security-релизах Node.js и релиз-кандидате TypeScript 5.2. В этом выпуске также будут полезные материалы по Node.js, написанию тестов и другие. В конце выпуска я уделю время релизу браузера Arc.

Несмотря на перенос, эпизод получился меньше, чем я планировал. В ближайшую неделю я планирую поработать с источниками и обязательно буду находить для вас больше интересных материалов. А пока заполните небольшой опрос о подкасте, который приложен к этому эпизоду. Спасибо.

Интересные публикации

В TypeScript 5.2 появится новое ключевое слово using, которое позволит явно управлять ресурсами. Проще говоря, ресурс — это что-то, что нужно ограниченное количество времени. Новый синтаксис позволит соединить получение ресурса и его инициализацию, а освобождение — с уничтожением объекта. Подобный механизм уже давно существует в C# — если вы на нём писали, то наверняка с этим сталкивались. Механизм может работать как синхронно, так и асинхронно. Хороший обзор нового синтаксиса и разбор с примерами кода в статье Ильи Позднякова на Хабре.

Продолжая тему TypeScript. Если вы ищете хороший обзор возможностей TypeScript или вас интересует конкретный вопрос, то вы можете обратить сможете внимание на The Concise TypeScript Book. Книга бесплатная и опенсорсная, покрывает вопросы от базовой настройки до продвинутых фич. Получилось лаконично и доступно. Взгляните — возможно, вы найдёте для себя что-то новое.

Следующие три материала о Node.js. Репозиторий с лучшими практиками Node.js от Йони Голдберга (Yoni Goldberg) получил обновление 2023. В нём вы найдёте лучшие архитектурные практики, паттерны обработки ошибок, тестирования и обеспечения безопасности. Там же вы найдёте разделы об использовании Node.js в production, с использованием Docker и производительности.

Как дополнение предлагаю вам ресурс Node.js Toolbox. Это ресурс, на котором собраны самые разные библиотеки для Node.js-экосистемы. Они разделены на категории, которых аж 45 штук. Если вы ищете какую-то библиотеку для конкретной задачи, ресурс выглядит как весьма неплохой навигатор. Наслаждайтесь.

Третий материал — список вопросов для собеседований Node.js-разработчиков. Автор списка — Тимур Шемсединов, которого вы можете знать по докладам, курсам и известному тематическому чату. Вопросы разделены на вопросы для прикладных и системных разработчиков. Прикладные — работающие над проектом, который моделирует прикладную область, то есть какой-то продукт, а системные — те, кто развивают саму платформу и инструменты для других разработчиков. В репозитории по 50 вопросов и для тех, и для других. Там же рекомендации к интервью и ссылки на курсы за авторством Тимура, по которым можно подготовить ответы на эти вопросы. Репа полезна также и для интервьюеров, потому что содержит рекомендации по проведению интервью.

Далее история ускорения одной React-таблицы. Жила-была таблица, в ней могло быть до 50 000 строк, и она использовала библиотеку TanStack. Когда включили функцию группировки таблиц, производительность стала сильно проседать. Оказалось, что в одном месте постоянно использовался spread-оператор, массив копировался много-много раз, и, конечно, производительность помахала ручкой. В итоге копирование заменили на обычный push. Подробнее о кейсе и его нюансах на Хабре.

Дмитрий Трофимов на Хабре поделился джедайскими принципами написания автотестов. В статье много категорий хороших практик. Код-стайл, покрытие тестами, распространение знаний и другие. Статья больше концептуальная, без примеров кода, но получилось очень круто. В разделах есть объяснение причины использования принципа, хорошие и плохие практики. Очень рекомендую вообще всем, кто хоть как-то пишет автотесты, начинает или продолжает. В конце концов, если бы джедаи правда писали хорошие автотесты, Энакин мог бы и не перейти на тёмную сторону.

В React слишком мало менеджеров состояния, поэтому вот вам статья ещё об одном. Он называется Zustand (читается как «цуштанд»). Игорь Агапов на Хабре рассказал о нём через небольшой пример его использования для реализации модалки. Он создаёт базовый проект и реализует модалочку с Zustang, а потом объясняет, как библиотека работает. Также доступен репозиторий с кодом примера.

Любите парсить какие-то штуки? Вот Варун Рамеш (Varun Ramesh) точно любит. Он заинтересовался парсингом текста и разными техниками. В итоге он применил парсеры в своëм текстовом квесте с текстовыми командами. В своëм блоге он рассказал о технике комбинации парсеров. Смысл в том, что ряд парсеров можно совместить разными способами, что он и демонстрирует в статье на примере текстового квеста. Это базовая статья о комбинаторах парсеров. Он планирует написать серию, где будет рассматривать более сложные вопросы.

Если вам нужно узнать настоящий размер какого-то пакета, вам может помочь pkg-size.dev. Достаточно вбить название пакета, и вы получите информацию о том, сколько это будет стоить вашему бандлу.

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

Новости релизов

Вышел Firefox 116. Теги <input> и <textarea> теперь поддерживают атрибут dirname, который позволяет сразу передавать на сервер направление текста. Был обновлён синтаксис CSS-свойства offset-path, а для доступности роль сделали image эквивалентной роли img. Для DevTools добавили поддержку кастомных выводов консоли, т. е. можно задать форматирование вывода в консоль. Кроме того, DevTools научились показывать контейнеры. Помимо этого, был устранëн ряд уязвимостей разной степени опасности.

Команда TypeScript объявила о выходе релиз-кандидата версии 5.2. В этом выпуске я уже упоминал синтаксис using и явное управление ресурсами. В новой версии появится поддержка метаданных декораторов. Это реализация нового пропозала для стандарта ES. Завезли поддержку анонимных и именованных элементов кортежей, упрощëнное использование функций объединений массивов, оптимизацию производительности проверки типов и другие небольшие нововведения. Мы ещё вернёмся к TS 5.2 во время релиза.

Август начался, а значит, пора накатить обновления безопасности Node.js. 9-го августа вышли обновления 16.20.2 LTS, 18.17.1 LTS и 20.5.1 Current. Было устранено 3 уязвимости высокого уровня опасности, 2 — среднего и 2 — низкого. Подробнее об уязвимостях в заметке об обновлении. Не забывайте вовремя обновляться.

bun в релизе версии 0.7.0 сделал большой скачок в совместимости с Node.js. Была представлена экспериментальная поддержка Vite, добавлены поддержка Worker, AsyncLocalStorage, флаг --smol для запуска bun в средах с маленьким объёмом памяти и другие изменения.

Deno тоже порадовал нас новым релизом. Версия 1.36 привнесла более гибкие настройки безопасности с новыми флагами --deny-. Теперь есть и больше опций для тестирования: рантайм теперь поддерживает API тестирования Node.js и больше форматеров для результатов тестов. Продолжается работа над совместимостью с Node.js и небольшими улучшениями для разработчиков. Больше подробностей в блоге Deno.

Фреймворк Astro 2.9 получил экспериментальную поддержку View Transition API. Напомню: это API для более простой и плавной анимации перехода DOM в разные состояния. Редиректы больше не экспериментальные, а анализатор скриптов стал немного умнее и оптимизирует импорты.

Доступна версия языка Go 1.21. В этой версии работает оптимизация после профилирования кода, прирост производительности разных программ составляет примерно 5-7%. В стандартную библиотеку добавили пакеты maps, log/slog, cmp и slices. Были представлены встроенные функции min, max и clear. Кстати, про встроенные функции в своем блоге писал Антон Жиянов, я приложу ссылку на его статью. Утилита go теперь обладает прямой и обратной совместимостями с разными версиями языка. Также команда разработки поработала над оптимизациями.

Вышло важное обновление Rust 1.71.1, в котором содержится устранение уязвимости менеджера зависимостей Cargo. Я приложу ссылку на подробности об уязвимости.

Другие новости

Некоторое время назад на горизонте появился новый браузер Arc. Arc обещает спасти нас от унылых браузеров, забустить работу и досуг, заботиться о приватности. Это браузер, который работает на Chromium и предоставляет вполне себе клёвые фичи. Например, разные рабочие пространства, классную панель закладок, твикер страниц, мольберт для коллаборации, блокировщик рекламы из коробки и другие. На бете браузер распространялся через инвайты. Вышла версия 1.0, и сейчас он доступен всем. Ну как сказать — условно всем. Пока только пользователям macOS 12.1 и выше. Если у вас винда или Linux — пока мимо, но версия для Windows в разработке. Мнений много: кто-то говорит, что это наконец-то браузер здорового человека, другие говорят, что это очередная «тема» для Chrome, пусть и очень функциональная. Если у вас мак, то вы уже можете попробовать. Лично я не очень впечатлился. Можно чекнуть новую Opera, посмотреть на Firefox или, в конце-концов, стараться максимально упрощать своё рабочее пространство, а не бесконечно усложнять. В описании вы найдёте обзор браузера и его возможностей.

На сегодня это всё. Ссылки, как обычно, приложены к эпизоду. До встречи в следующем выпуске.

Пишите нам и читайте

Telegram—канал CSSSR

Twitter CSSSR

Twitter новостей

Telegram ведущего

Twitter ведущего

Комментарии

Продолжая пользование данным Сайтом, вы даете свое согласие на сбор и обработку технической информации (cookies). Подробнее о cookies читайте вПолитике конфиденциальности.