Всем привет, это «Новости 512» от CSSSR. В этом выпуске мы поговорим о релизе Angular 17 и его «омоложении», .NET 8, об архитектуре хранения сообщений Discord, причинах нелюбви к Next.js и тонкостях Unicode. Также мы коснемся разработки Figma-плагинов, WebAuthn и применении esbuild на проде вместо Webpack. В конце мы посмотрим на парочку казусов, связанных с ChatGPT.
А ещё, кажется, астрологи объявили неделю подборок, потому что в интересных публикациях в этот раз их очень много.
Интересные публикации
Когда-то давно популярный сервис Discord начинался как маленькое приложение, которое использовало MongoDB для хранения данных. Время шло, и в 2017 году сервис хранил уже миллиард сообщений. Тогда команда Discord мигрировала на Cassandra. 5 лет ребята спали спокойно, и настало время перемен. Сейчас в Discord уже более триллиона сообщений и начались проблемы с производительностью. О том, как эта проблема решалась, рассказал в блоге Discord Бо Ингрэм (Bo Ingram). Если коротко, то базы мигрировали на ScyllaDB, а для данных написали специальные сервисы на Rust, которые помогали безопасно-конкурентно работать с данными. В итоге Discord не посыпался даже во время финала чемпионата мира по футболу. Также в статье приведена статистика после этих архитектурных изменений. Очень интересно.
Буквально в прошлом выпуске мы говорили о релизе Next.js 14. Один из популярных членов сообщества разработчиков Кент Додс написал статью о том, почему он не будет использовать Next.js. На самом деле он задаёт резонные вопросы: почему фичи не такие стабильные, почему внутри так много магии, почему не очень поддерживаются веб-стандарты, а пишутся свои костыли и другие. Кроме того, его беспокоит сильная зависимость фреймворка от Vercel: в команде работает много бывших разработчиков React, и это скудно сказывается на внимании к нуждам пользователей. Ответ, конечно, простой: Vercel хочет зарабатывать деньги и уверенно завязывает фреймворк на свою инфраструктуру. Если вы не хотите с этим разбираться в будущем — ищите альтернативу. Сам Кент, к слову, какое-то время работал в Remix (не обращайте внимания на его отсылки к нему), но в целом вопросы и правда резонные.
Дмитрий Казаков на Хабре решил рассказать о том, можно ли уже использовать на проде esbuild вместо Webpack. Скажу сразу, Дмитрию на 95% удалось использовать esbuild вместо Webpack. Кое-где ему нужно было дописать плагин, было много функций из коробки, а основная фишка в том, что сама конфигурация значительно проще, чем в Webpack, но в итоге есть нюанс. К сожалению, есть и проблемы, например с асинхронными импортами и чанкованием, конвертацией кода под старые браузеры и часто несовместимых коммьюнити-плагинов. В итоге он решил, что для полноценных приложений пока не время, но, возможно, уже скоро. Больше подробностей — на Хабре.
Далее видео о том, почему signals
лучше хуков. Сигналы привносят оптимальную производительность, эргономичность и простоту для разработчиков, а также простую интеграцию с фреймворками. В видео речь идёт о @preact/signals
, сигналы сравниваются с хуками, а потом приложение плавно переводится с хуков на сигналы. Продолжительность видео — минут 15, а внутри довольно просто объясняются сигналы.
Следующий материал от Юрия Михина из Злых Марсиан. Он посвящён применению алгоритмов в разработке Figma-плагина Polychrome. Плагин позволяет выбрать в Figma элемент и показывает его контрастность относительно фона. Ребятам пришлось поломать голову над поиском нужного элемента и подстричь деревья. В целом это интересный кейс создания плагина с клёвыми нюансами, например объясняется, почему плагин может зафризить страницу и что с этим можно сделать.
Мы давненько не говорили про технологию WebAuthn, которая предоставляет более безопасный метод аутентификации по сравнению, например, с теми же SMS. Сергей Учаев опубликовал на Хабре небольшой пример веб-приложения с использованием технологии. Демка умеет регистрировать пользователя и имитирует аутентификацию. Получилась лаконичная инструкция с небольшой теоретической вводной.
Что вы знаете о Unicode? Вы уверены, что достаточно? Вот вам прекрасный шанс проверить себя и подтянуть знания. Никита Прокопов в своей статье погружает читателей в чудесный мир кодов символов, объясняет, что там по кодировкам, почему это всё важно для чистого английского языка и как вам теперь жить с этими знаниями. Серьёзно, если вы думаете, что знаете о Unicode достаточно, — просто прочитайте.
А теперь те самые подборки, о которых я говорил в начале, — уверен, что вы найдёте для себя что-то интересное. Их, кстати, сегодня действительно больше, чем отдельных статей.
Первая подборка — о манипуляциях с DOM на чистом JS. Если вы забыли, как это выглядит, или вам изредка нужно это делать, то это прекрасная шпаргалочка. Внутри разделение манипуляций на базовый, средний и продвинутый уровни, а также раздел с полезными подсказками.
Что может пойти не так во время git rebase
? Много чего. Джулия Эванс (Julia Evans) спросила об этом в Mastodon и получила аж 14 проблем, которые могут возникнуть при этой операции. Она постаралась описать каждую и добавила полезные советы. Даже если вы rebase-ниндзя, думаю, стоит ознакомиться.
Теперь подборка легковесных JS-фреймворков. Она ориентирована на Django-разработчиков. Всего там 12 позиций — вы встретите там и HTMX, и Alpine.js, и Turbo.
Далее две подборки от Лирана Тала (Liran Tal), который много пишет о Node.js и его экосистеме. Первая подборка посвящена лучшим практикам при разработке CLI-приложений, а вторая — лучшим практикам безопасности Node.js.
Сколько техник дебаггинга в браузере вы знаете? Алан Норбауер (Alan Norbauer) насчитал аж 67, которые можно выделить, и поделился с нами. Там довольно много неочевидных фич и есть прекрасное разделение по категориям.
Еще одна подборка касается собесов. В этой статье собраны редкие темы, которые разделены на разные категории. Автор собирал их по своим друзьям и из своего опыта. Получилось неплохо, стоит заглянуть.
Завершают рубрику плейлисты с JetBrains JavaScript Day 2023 и Node.js Collab Summit 2023.
Новости релизов
Angular съел молодильное яблочко ребрендинга и вышел версией 17. В новую версию добавили встроенный в шаблоны контроль потока выполнения. Оказалось, что у многих разработчиков проблемы с синтаксисом директив типа *ngFor
и других, поэтому был разработан более понятный, интуитивный синтаксис — я приложу к выпуску ссылку на его обзор на YouTube. Продолжились работы над внедрением реактивности на основе сигналов, пока их только выпустили из статуса developer preview
. Для новых проектов теперь по умолчанию используются Vite и esbuild, что есть хорошо и прекрасно сказывается на скоростях сборки. На основании этих нововведений уже ведётся работа над новыми фичами, подробнее об этом — в анонсе.
Немного о ребрендинге. Ребята сделали новый, красивый логотип. Выпустили свеженький сайт, поработали над документацией, добавили новую песочницу, в которой можно попробовать фреймворк. Также был обновлён официальный вводный курс по Angular, и выглядит он на первый взгляд неплохо. Насколько я понимаю, ребята хотят «омолодить» фреймворк в плане целевой аудитории пользователей и привлечь к использованию Angular больше разработчиков. Начинание хорошее, я пока не уверен, но посмотрим, что из этого получится. Заглядывайте на сайт, лично мне понравился.
Другой крупный релиз — это релиз .NET 8. Это следующая LTS-версия платформы для разработки от Microsoft. Напомню, что это собирательное название всего стека технологий Microsoft для разработки. С этим релизом анонсировали .NET Aspire — стек для построения нативно-облачных приложений, упрощённые возможности использования ИИ в приложениях, улучшения для стека разработки кроссплатформенных приложений и Blazor для фулл-стек ASP.NET-проектов. Были, конечно, представлены оптимизации производительности, а также новая, 12-я, версия языка C# с большим количеством синтаксических плюшек для разработчиков. Больше подробностей — в блоге .NET.
Поговорим про рантаймы. В Deno 1.38 добавили генератор HTML-документации. Была добавлена поддержка HMR или hot module replacement
(давно пора), а также экспериментальная поддержка npm
. Кроме того, теперь Deno трансформирует JSX во много раз быстрее для серверного рендеринга. Больше подробностей — в release notes.
Продолжают один за другим выходить патчи Bun с багфиксами. Я буду останавливаться только на более интересных. Например, в релизе v1.0.13 была добавлена поддержка Vite 5 и Rollup 4, а также модуля node:http2
. Хорошая новость в том, что в патчах количество багов исчисляется уже не сотнями.
Также отмечу релиз Node.js 21.2.0.
Prettier 3.1 порадовал нас новым экспериментальным форматированием тернарников, а также поддержкой нового синтаксиса встроенного в шаблоны контроля потока выполнения Angular 17.
В Astro 3.5 добавили экспериментальную интернационализацию роутов, улучшения префетчинга, поддержку форм для View Transitions
, а также экспериментальный билд-кэш коллекций контента. Подробнее о релизе — в блоге Astro.
Закроют рубрику фреймворк для создания HTML-презентаций reveal.js 5.0, а также релизы TypeScript 5.3 RC и Ember 5.4.
Другие новости
Прошла GitHub Universe 2023. На ежегодной презентации рассказали о том, что GitHub как платформа при помощи Copilot эволюционирует в заряженную ИИ-платформу для разработчиков. Это разработка при помощи Copilot, безопасность на базе ИИ, интеграции с другими продуктами, например IDE от JetBrains. Больше подробностей — по ссылке в описании.
GitHub также выпустили и ежегодный отчёт Octoverse о состоянии open-source. В этом году было замечено огромное количество экспериментов разработчиков с генеративными ИИ; некоторые проекты, написанные с их применением, даже стали одними из самых популярных в этом году. Был отмечен большой рост сообщества разработчиков в Индии. Также 2023 год стал годом, в котором было больше всего разработчиков, первый раз участвовавших в open-source разработке. Посмотрите, это небольшая заметка с короткой видео-презентацией. Ссылку я также приложу к выпуску.
Ох уж эти работники с ChatGPT. Бразильский судья находится под следствием. Слуга закона вынес вердикт, ссылаясь на правовой прецедент, который ему подсказал ChatGPT. А прецедента этого никогда не было, такие вот дела. А значит, и вердикт оказался невалидный. Вот так Skynet подставил судью. Но есть и более здравые ребята. Например, один судья из Колумбии ещё год назад высказался за применение ChatGPT в работе судов и судебной системы, но только для оптимизации ручного труда, с перепроверкой и коррекцией со стороны людей. Более логичный подход. Мораль простая: на ChatGPT надейся, а сам не плошай.
И последнее на сегодня, косвенно тоже о ChatGPT. Тонны шуток о том, что ChatGPT оставит кого-то без работы, пополнились ещё одной. Из OpenAI уволили Сэма Альтмана (собственно, сооснователя), и актуальная шутка на сегодня о том, что ChatGPT оставил без работы как раз его. Это, конечно же, шутка. Следом за ним потянулись другой сооснователь, ведущие исследователи и так далее, а в итоге их всех, скорее всего, приютит Microsoft. Больше подробностей — по ссылке, целая Санта-Барбара.