Интересные публикации
Окончательный список фич ES2021, которые выйдут в 2021 году, наконец был утверждён. И первый материал этого выпуска — их обзор от Джонатана Филдинга (Jonathan Fielding) на Medium. Какие возможности появятся в новой версии стандарта: метод String.prototype.replace(), оператор логического присваивания, метод Promise.any(), приватные методы и поля классов и разделители для числовых литералов.
«Десять TypeScript-привычек от которых стоит отказаться» — именно так назвал свою статью Даниэль Бартоломэ (Daniel Bartholomae). Автор выбрал интересную подачу: в некоторых пунктах он не только рассказывает, почему так не нужно делать, но и почему, собственно, мы выбираем такой неправильный способ. Конечно, дальше он объясняет, как сделать более корректно. Например, как не использовать any там, где это не абсолютно необходимо, или as any в тестах, или как стоит поступать с опциональными свойствами. Как я уже говорил, всего 10 пунктов.
Наверняка вы все видели модный глобус на главной странице GitHub. Разработчики решили рассказать о нем в 5 статьях, но пока доступно только 3. Первая статья посвящена непосредственно разработке глобуса, вторая — статистике, которая на нём отображается, и её сбору, третья статья — о том, как всё это чудо было оптимизировано для оптимальной производительности. Кейс в целом достаточно интересный: шарик сделали на WebGL с three.js, данные взяли из своей же базы, для производительности страницу профилировали, поработали с изображениями и анимациями. На первый взгляд, звучит просто, но на самом деле было много нюансов. Например, как выбрать лучшие данные из репозиториев и данные о пользователях для глобуса и при этом соблюсти приватность? Или как оптимизировать работу глобуса на WebGL? Обо всех этих нюансах — на страницах статей.
Дмитрий Павлютин написал в своём блоге заметку о том, чем отличаются ноды или узлы DOM-дерева и элементы DOM-дерева. Разницу можно сформулировать коротко: элемент — это один из типов узлов или нод DOM-дерева. Более подробное объяснение с примерами кода и выводом типов — в статье Дмитрия.
Джейк Арчибальд (Jake Archibald) и Сурма (Surma) на YouTube недавно обсудили способы синхронизации данных между вкладками браузера. Обсуждали window.postMessage, EventSource, Web Locks, storage event, BroadcastChannel, Service worker clients API и IDB observer. Разбирали не только подходы, по преимуществам и недостаткам тоже компактно прошлись.
Небольшой сюрприз для бэкенд-разработчиков от Netflix. И это не сериал. Инженеры Netflix выпустили библиотеку для GraphQL, основанную на Spring Boot. Библиотека называется DGL и позволяет быстро собрать полноценный GraphQL-сервер с кучей фич из коробки: загрузкой файлов, поддержкой Federation, генерацией кода, подписками и другими плюшки.
Далее расшифровка доклада Андрея Мелихова «Энтерпрайз, который выжил». Внутри вас ждет сказочное повествование об энтерпрайзе, и почему его всё-таки не стоит бояться. Сказка — о проблемах, а вторая часть, более объёмная, — как раз о решении проблем и о том, почему важно их решать. Что можно изменить в процессах, и как это должно помочь? Как уменьшить цену ошибки? Что делать с автоматизацией? На эти и другие вопросы Андрей старается ответить в своем докладе.
Завершает рубрику статья Томоми Имуры (Tomomi Imura) и Дэйзи Шоссе (Daisy Chaussee) на SmashingMagazine. Она посвящена созданию приложений для Microsoft Teams или портированию уже существующих в директорию расширений мессенджера.
Новости релизов
После релиза npm 7.5.0 команда проекта объявила об общей доступности 7-ой версии пакетного менеджера. Это значит, что теперь стабильная версия npm — не 6, а 7, и если вам по какой-то причине нужно установить шестую версию — необходимо это явно указать при установке. В конечном итоге в npm стало в два раза меньше зависимостей, покрытие кода тестами увеличилось до 95%, выросла и производительность. Новые фичи 7-ой версии — это workspaces, автоматическая установка peer dependencies, package.json v2 и поддержка yarn.lock. Не обошлось и без ломающих изменений, с ними подробно можно ознакомиться в анонсе версии 7.0.0.
Следующий релиз — Node.js 15.8.0. Основное нововведение — апгрейд версии npm до той самой версии 7.5.0, что дает возможность использовать команду npm diff. Также были представлены несколько минорных фиксов.
Еще одна критическая уязвимость была исправлена в Chrome 88. Детали пока не раскрывают, известно, что уязвимость позволяла обойти все уровни защиты браузера и выполнить произвольный код за пределами sandbox-окружения. Также известно, что уязвимость связана с реализацией Payments API. Заодно выпустили еще 5 исправлений уязвимостей, 4 из которых признаны опасными.
Следующий релиз — AssemblyScript 0.18.0. Этот язык представляет из себя более строгую версия TypeScript, который компилируется в WebAssembly. В этом релизе обновили рантайм и сборщик мусора.
Вышел esbuild 0.8.38. Напомню, это сборщик для JS/TS проектов, написанный на языке GO, который отличается невероятной скоростью. Главное нововведение — появление watch-режима. Инструмент выглядит многообещающе. Кстати, например, Snowpack 3 использует для сборки именно его.
Вышел ESLint 7.19. В этой версии правило no-shadow стало более информативным, правило no-extra-parens теперь лучше проверяет циклы for-in и for-of при наличии let, а правило space-infix-ops теперь проверяет тернарный оператор тщательнее. Также была обновлена документация и исправлено несколько багов.
Отмечу еще два релиза: lighttpd 1.4.59, в котором теперь по-умолчанию включен HTTP/2, и утилита curl 7.75.0, в которой появилась возможность заменить бэкенд для обработки HTTP и был добавлен экспериментальный бэкенд Hyper, написанный на Rust.
Другие новости
В блоге Angular появилось объявление о прекращении поддержки AngularJS, также известного как Angular 1. Поддержка прекратится 31 декабря 2021 года. До этого времени ещё будут выходить патчи и security-обновления. Что можно сделать после: мигрировать на Angular, либо остаться на Angular 1 и воспользоваться поддержкой за деньги от независимой команды XLTS. XLTS планирует поддерживать версию Angular 1.8 до 2026 года, а дальше ориентироваться на спрос клиентов. Что же, доброго пути, Angular 1, и надеюсь, вы не работаете на проекте, где придётся дальше поддерживать его за деньги.
Был опубликован официальный роадмап развития Microsoft Edge. В роадмапе можно найти не только предполагаемые фичи, статусы и версии, в которых они появятся, но и примерные даты выхода этих версий браузера.
Apple собирается включить Private Click Measurement по умолчанию в Safari. Apple выступила с этой инициативой ещё в 2019 году, с тех пор она активно обсуждалась в комитете приватности W3C и недавно получила текущее название Private Click Measurement. По идее это позволит рекламодателям отслеживать клики без нарушения приватности пользователей. Для продвижения фичи и принятия ее как стандарт требуется, чтобы ещё хотя бы один браузер реализовал подход у себя. Сейчас Apple ведет переговоры об этом с другими браузерами. Возможно, это такой ход в сфере рекламного трафика, а может быть, действительно добрые намерения. Посмотрим, как будет развиваться эта инициатива.