Интересные публикации
Тим Кадлец (Tim Kadlec) написал статью об измерении потребления оперативной памяти веб-приложениями. Он отмечает, что это слабо исследованная область, и рассказывает, как можно получить информацию о потреблении памяти JavaScript и DOM при помощи API Performance Observer и его части measureUserAgentSpecificMemory. Тим приводит примеры и проводит небольшой синтетический тест, а также делится своими выводами о взаимосвязи потребления памяти и метрик производительности.
Дипал Джаясекара (Deepal Jayasekara) выложил статью о стримах в Node.js. Он рассказывает о стримах чтения и записи, дюплексных стримах и стримах трансформации. В статье есть кейсы их применения и иллюстрированные примеры.
Вышел перевод статьи Тодда Гарднера (Todd H. Gardner) об оптимизации изображений для улучшения производительности. Гайд покрывает выбор формата, работу с разрешениями и качеством изображений, а также ленивую загрузку и встроенные изображения. По каждому пункту есть пример и ссылки на полезные материалы и инструменты.
В блоге V8 появилась небольшая статья-эксплейнер об Import Assertions. Напомню, что в Chrome 91 уже доступны Import Assertions и JSON-модули. Проблема в том, что при импорте JSON потенциально небезопасно надеяться только на MIME-тип, потому что в ответе может быть JavaScript, и тогда полученный код будет исполнен, а скрипт потенциально может содержать вредоносный код. Эту проблему и решают Import Assertions. Фича важная, потому что открывает перспективу и для других видов модулей, например, CSS или WebAssembly. Больше о фиче можно также прочитать в статье Акселя Раушмайера.
Кевин Кройцер (Kevin Kreuzer) в своем блоге на Medium опубликовал статью о том, что нужно знать, чтобы претендовать на позицию Angular-разработчика. Он даёт короткий обзор компонентов фреймворка и вещей, которыми нужно владеть. Среди них базовые концепции фреймворка, RxJS, популярные библиотеки, ленивая загрузка и другие.
Время от времени в выпусках новостей попадались статьи разработчиков Тинькофф о переходе на микрофронтенды, а теперь на Хабре вышла статья, которая описывает переход Тинькофф Бизнес на микрофронтенды за шесть лет. В 2015 году это было одно большое приложение на AngularJS, затем случился переход на Angular 2 и разрастание нескольких приложений, а потом переход на сотню микрофронтендов. Естественно, команда столкнулась с большим количеством проблем, это привело к созданию менеджера фреймов, потом к отказу от iframe, а в конечном итоге к разработке своего решения microzord. Библиотека пока в альфе, но репозиторий уже доступен на гитхабе.
Сет Фалко (Seth Falco) на freecodecamp рассказал об одной фиче, про которую я раньше и не слышал. Это JavaScript-закладки, или букмарклеты — закладки браузера, которые вместо открытия веб-страницы исполняют JavaScript-код. В статье он делится кейсами применения и примерами, механизмом распространения и рассказывает, как это соотносится с приватностью и Content Security Policy. Фича поддерживается в Chrome и Firefox.
Следующий материал для тех, кто интересуется доступностью. Оттоматиас Пеура (Ottomatias Peura) предложил альтернативный подход к разработке голосовых интерфейсов. Он назвал его прямым голосовым взаимодействием. Суть предложения в том, что, по его мнению, стоит отказаться от голосовых ответов пользователю и сделать их графическими. Это позволит ускорить взаимодействие и сократит количество ошибок.
Ещё один материал о доступности. Карина Чоу (Karina Chow) поделилась своими мыслями о том, как внедрить доступность в процесс разработки. Она предлагает ставить цели по доступности, добавить специализированные линтеры, создать рабочую группу по доступности внутри команды и постепенно принимать установку разработки с учетом доступности.
Завершает рубрику юмористический обзор языка Rust с точки зрения JavaScript. Пересказать не получится, но могу сказать, что получилось довольно забавно. Вы можете найти обзор неоднозначным, однако посмотреть можно. Есть также перевод на Хабре.
Новости релизов
Доступна версия Rust 1.53.0. Была стабилизирована ещё одна порция методов API, элементы массивов теперь можно перебирать по значениям, также массивы теперь можно передавать в методы, которые принимают итераторы. Кроме того, логическая операция «или» теперь может применяться в любой части шаблона.
ESLint отметился обновлением 7.29. В классе ESLint появился метод getRulesMetaForResults(), который возвращает мета-информацию правил в результате линтинга. Этот метод призван заменить метод getRules() устаревшего класса CLIEngine, соответственно, все интеграции с ESLint нужно перевести на новый метод. Тест-кейсы RuleTester теперь поддерживают необязательное логическое свойство only, которое позволяет прогонять один тест-кейс в изоляции для упрощения дебаггинга.
PHP-фреймворки также отметились небольшими обновлениями: вышли CakePHP 3.10.0 и Laravel 8.47.0.
Также отмечу релизы SQLite 3.36.0 и корректирующее обновление Debian 10.10.
Другие новости
Opera прекратила поддержку Opera VPN в России. Это произошло на фоне того, что Роскомнадзор начал процесс его блокировки. Кроме того, началась блокировка ещё одного VPN. Компания приняла решение самостоятельно заранее прекратить поддерживать его на территории РФ, видимо, чтобы избежать более серьезного конфликта. Пока непонятно, начнется ли блокировка других сервисов и что из этого всего получится.