Интересные публикации
Томас Штайнер (Thomas Steiner) на web.dev знакомит читателей с использованием Streams API. Разбираются конкретно ReadableStream, WritableStream и TransformStream и механизмы их работы, приводятся понятные примеры использования. Стримы могут пригодится для работы с файлами, сжатия данных и создания интерфейсов, которые загружаются до завершения обработки данных.
Как уменьшить количество рендеров в React? Сегодня от среднестатистического разработчика вы, скорее всего, сразу услышите: «Мемоизировать!». А Дэн Абрамов в своем блоге напоминает о том, что можно и даже нужно оптимизировать количество рендеров до использования memo() и useMemo(). Дэн говорит о двух базовых техниках: разделении компонента на stateful- и stateless-части и передаче stateless-компонентов через пропсы в stateful-компоненты. При ререндере stateful-компонента переданный через пропс компонент не будет ререндериться. На самом деле это, скорее, про более рациональное применение компонентного подхода. Дэн отмечает, что это не замена memo(), но простые логические оптимизации на ранних этапах помогут оптимизировать компоненты в дальнейшем.
Продолжим об оптимизациях. Вышла статья Дага Силларса (Doug Sillars) на SmashingMagazine об оптимизации видео. Как вы знаете, видео — самый большой контент в вебе, и на десктопной версии сайта на скорости 1 гигабит в секунду это самое видео работает великолепно. Но мы живём в реальном мире — с телефонами, 3g и прочими препятствиями, — и как раз об этом статья Дага. Он рассказывает, как подобрать оптимальные качество и размер видео для самых разных условий.
Ренат Саматов из ДомКлик рассказал на Хабре о мониторинге Node.js-приложений и Application Performance Management, или APM. В статье он приводит категории метрик, например, использование процессора, памяти, статистики по запросам и ответам, информации о процессах Node.js и другие. Статья вводная и посвящена тому, за какими показателями стоит следить. Автор обещает продолжение с методами мониторинга.
В прошлом выпуске мы говорили о том, почему некоторые могут не хотеть пользоваться Tailwind CSS. В этом хочу обратить ваше внимание на курс Саймона Врахлиотиса (Simon Vrachliotis) по Tailwind CSS. Курс называется «с нуля до продакшена», охватывает все основные концепции фреймворка по нарастающей и, возможно, вам понравится.
Далее я упомяну книгу и один конспект книги. Доктор Аксель Раушмайер (Dr. Axel Rauschmayer) выпустил новый труд «Tackling TypeScript». Книгу можно разделить на две части. В первой — основы и быстрый старт с TypeScript, во второй в деталях описываются важные фичи языка и раскрываются нюансы их использования. Книгу можно как купить, так и бесплатно использовать HTML-версию. Если по какой-то причине у вас не получилось освоить TS, но вы очень хотели, возможно, эта книга вам зайдёт.
Александр Беспоясов опубликовал в своем блоге конспект книги Чарльза Петцольда «Код. Тайный язык информатики». Эта книга — культовая в Computer Science мире и, как говорит в предисловии сам Чарльз, посвящена работе компьютера — от транзисторов до информации на мониторах. Конспект большой и состоит из двух частей. Первая — о двоичном коде, электрических и логических цепях. Вторая — о памяти, хранении информации, процессоре и создании примитивного компьютера с вводом-выводом. Это вам не классы собачек и котиков в книгах про ООП, стоит уделить внимание как минимум конспекту, а потом, возможно, и самой книге.
Новости релизов
Состоялся релиз Firefox 86. Теперь поддерживается псевдокласс :autofill для полей форм. Для удобства отладки iframe в DevTools появилась возможность выбора контекста отладки. В бете Firefox появилась поддержка CSS-функции image-set() для создания отзывчивых изображений на уровне CSS. В этой версии вслед за Apple команда Firefox продолжает бороться за приватность данных пользователей и представила State Partitioning — фичу, которая усложняет отслеживание пользователей за счет разделения cookies. Разделение происходит с использованием дополнительного ключа для cookies. Об этом команда Mozilla написала отдельную статью в своем блоге.
Вышел Tor 10.0.12. Для всех целевых платформ обновили ключевые компоненты, в частности, инструментарий Tor — до новой стабильной версии 0.4.5.6. Также обновили версию Firefox. Конечно же, подъехали и security-обновления.
Далее февральские security-релизы Node.js. Обновлённые версии: 10.24.0, 12.21.0, 14.16.0 и 15.10.0. Самая опасная из устраненных уязвимостей, помеченная как критическая, позволяла организовать DDoS-атаку при использовании HTTP/2 и большом количестве соединений с unknownProtocol. Также были устранены еще 2 уязвимости. Подробнее обо всех уязвимостях можно узнать в блоге Node.js. Не забывайте обновляться.
Полноценный релиз TypeScript 4.2 состоялся. Псевдонимы типов сохраняются, остаточные элементы теперь могут быть в любом месте кортежей, оператор in теперь проверяется более строго, а для сигнатур конструкторов появился модификатор abstract. Появились новые флаги компилятора --explainFiles и --noPropertyAccessFromIndexSignature. Полный changelog — в официальном блоге TypeScript, и, вроде как, уже можно обновляться.
Доступен Babel 7.13.0. Целевую версию можно теперь указать один раз, добавили поддержку TypeScript 4.2 и улучшили поддержку Flow. Опцию useESModules пометили как устаревшую, Babel теперь сам автоматически определит формат модулей, useESModules окончательно уберут в Babel 8. Есть ещё несколько изменений и дополнений, полный список — в release notes.
Вышел оптимизатор svg SVGO 2.0. Конфигурацию можно описывать в виде JSON, размер пакета был уменьшен, CLI был обновлён, Node API теперь синхронный, также появился официальный ES-бандл для использования инструментами в браузере.
Также отмечу релизы Deno 1.7.4 — хочу как-нибудь потрогать, но руки не доходят, — и дистрибутива для пентестеров Kali Linux 2021.1.
Другие новости
Мне подумалось, что если есть фитоняшки, то наверное, существуют и питоняшки. К чему это я? Языку Python исполнилось 30 лет, с чем я вас и поздравляю. Он был создан Гвидо ван Россумом и назван в честь комедийной группы Monty Python. Язык задумывалось сделать простым и не зависящим от платформы. Основными принципами при разработки языка были: «лучшее — враг хорошего», «заимствуй лучшие фичи других языков», «срезай углы, когда это возможно» и другие. Получилось или нет — решать вам, а я считаю, что язык пришёл к успеху. Конечно, как и у любого другого языка, у него есть плюсы и минусы. Тем не менее, он занимает серьезное место в индустрии разработки ПО и вебе в частности и ежегодно карабкается выше и выше в рейтингах языков программирования.