Интересные публикации
Если помните, не так давно прошел Я.Субботник, на котором было представлено несколько докладов. В блоге Яндекса появилась расшифровка одного из них — доклада Александра Николаичева о продвинутых дженериках в TypeScript. Дженерики в TS — это типы, которые зависят от других типов. Александр начинает с базового синтаксиса и постепенно двигается к продвинутым кейсам применения дженериков.
На Хабре вышла статья о проблемах Express.js и фреймворке Fastify.js. В ней рассказывается о том, чем плох Express.js и почему появилась необходимость в других бекенд-фреймворках для Node.js, а также об исторических попытках преодоления недостатков Express.js. Сам автор статьи пользуется Nest.js, но предлагает Fastify как хорошую альтернативу и демонстрирует примеры его применения. К статье прилагается репозиторий с кодом.
В блоге GitHub появилась статья о веб-компонентах — о том, как компания их использует и как устроена их разработка. Кристьян Оддссон (Kristján Oddsson) рассказал об инструментах, линтерах и практиках. GitHub пару лет назад отказался от jQuery, и с того времени были разработаны фреймворк ViewComponent и библиотека Catalyst, предназначенные для создания независимых веб-компонентов и упрощения их разработки. Веб-компоненты в GitHub используются для широкого спектра задач — от валидации форм до ввода с автокомплитом, а 17 из них open-source, их может использовать любой желающий.
Тайлер Уильямс (Tyler Williams) в блоге Gitlab рассказал о несколько другом опыте использования веб-компонентов. Была задача сделать блог компании более презентабельным, это оказалось сложно, потому что дизайн-система конфликтовала со старыми стилями. Было решено инкапсулировать стили в веб-компонент и создать кастомный компонент. Если компонент не инициализируется, то пост всё равно будет доступен, просто без стилей. В итоге команде удалось инкрементально подружить блог и дизайн-систему. Отмечаются и недостатки: усложнение сборки постов блога, перенос части рендеринга на клиент и молодость веб-компонентов как технологии.
Следующие 2 материала посвящены Angular. Первый попроще и касается ленивой загрузки модулей в Angular. Арджав Дейв (Arjav Dave) на примере двух модулей показывает простейшую реализацию, проверку того, что ленивая загрузка сработала, и рассказывает о случаях, когда это особенно полезно.
Второй материал — посложнее — за авторством Арека Наво (Arek Nawo) о функциональном реактивном программировании с RxJS. Арек рассказывает о концепте и самой библиотеке, об Observables (горячих и холодных), подписках, часто используемых операторах, обработке ошибок и не только.
Cypress — это фреймворк для end-to-end тестирования, а недавно вышла его 7 мажорная версия. Хуссейн Ариф (Hussain Arif) написал вводный гайд по использованию Cypress. Хуссейн рассказывает о самом фреймворке, о том, когда его стоит применять и как начать тестировать с Cypress, а также делится полезными приемами. Доступен и перевод на Хабре.
Мишель Баркер (Michelle Barker) показывает, как создать эффект луча фонарика, следующего за курсором. Мишель создает дубликат контента, части которого раскрываются в местоположении курсора. Она использует динамические CSS-маски с кастомными CSS-свойствами вместе с JS-библиотекой для анимации Greensock. Доступен и готовый пример, а в самой статье есть пошаговая реализация фичи.
Завершает рубрику Тобиас Гюнтер (Tobias Günther) — сооснователь git-клиента Git Tower. В своей статье об устранении ошибок при работе с git он затрагивает команды restore, revert и reset. Автор рассматривает отмену изменений в файле, перемещение к определенному состоянию проекта, правки в сообщении к коммиту и другие кейсы, в которых эти команды полезны. Также Тобиас советует короткие видео и шпаргалку по этому вопросу, которые можно получить бесплатно за подписку на рассылку Git Tower. Для компании это, конечно, маркетинговая история, но, возможно, вы найдёте в шпаргалке или видео полезные приемы.
Новости релизов
В блоге Bootstrap появился анонс стабильного релиза Bootstrap 5. Создатель фреймворка Марк Отто (Mark Otto) рассказал об изменениях: Bootstrap больше не поддерживает IE, команда полностью отказалась от jQuery, появилось много новых компонентов, а ряд старых был обновлен. Кроме того, нас ждет доработанная сетка, поддержка RTL, новые утилиты и API утилит. Как и положено в случае мажорного релиза, доступен гайд по миграции.
Команда V8 объявила о релизе версии движка 9.1. Оператор in теперь работает с приватными полями, а top-level await по умолчанию включен. Обе фичи раньше были за флагом. Кроме того, добавили парочку оптимизаций.
Вышла версия Node.js 16.1.0. Основное изменение небольшое: метод fileHandle.read() теперь может работать без параметров и не возвращать ошибку. Также были представлены незначительные дополнения по коду, документации и тестам.
Небольшим обновлением 88.0.1 отметился Firefox. В нём были устранены 2 уязвимости, одна из которых была критической. Также было исправлено несколько багов.
Microsoft Edge для Linux дошёл до стадии бета-версии. Бета уже доступна для скачивания, её можно опробовать. Соответственно, стабильная версия также не за горами, но точных сроков пока нет.
Пара новостей от фреймворков. Django и Ruby on Rails выпустили security-релизы с устранением уязвимостей. Подробности — в официальных блогах фреймворков.
Другие новости
В прошлом выпуске мы говорили о релизе Safari 14.1. К сожалению, в этой версии был обнаружен серьезный регресс. Джейк Арчибальд (Jake Archibald) обратил внимание на проблему localStorage: оказалось, что каждая вкладка читает свой собственный экземпляр хранилища, а не делит общий с другими вкладками. Это нарушает взаимодействие между вкладками Safari, потому что более современный механизм взаимодействия между вкладками BroadcastChannel в нем не реализован, а вместо него используется полифилл, который из-за этой проблемы не будет работать. Apple оперативно внесла исправление, но когда оно попадет к конечным пользователям — вопрос открытый. Джейк предлагает временное решение: использовать IndexedDB для хранения данных, а Service Workers — для обмена данными между вкладками.
Microsoft присоединилась к Bytecode Alliance. Напомню, это некоммерческая организация, цель которой — развитие безопасности программного обеспечения с использованием стандартов WebAssembly и WASI. Для Bytecode Alliance это хорошие новости, присоединение еще одного «кита» может существенно помочь их деятельности.
Завершается история с патчерами ядра Linux из университета Миннесоты. В итоге исследователям пришлось отозвать статью и выступление на конференции касательно этих патчей и публично раскрыть хронологию событий. Также был выполнен еще ряд требований, но возможность участия в разработке ядра Linux команде Университета Миннесоты вернут.