Выкидывайте redux! На сцену выходит zedux!
https://omnistac.github.io/zedux/blog/zedux-is-this-the-one
https://omnistac.github.io/zedux/blog/zedux-is-this-the-one
Forwarded from melikhov.dev
В поезде прочитал интересные размышления от François Zaninotto — Is React Having An Angular.js Moment?
Франсуа задаётся вопросом, не подошёл ли Реакт к той же точке, в которую однажды упёрся Ангуляр, когда вторая версия оказалась полностью переписанной с использованием других парадигм. В итоге, многие разработчики не стали переписывать свои приложения на новую версию, вместо этого просто сменив фреймворк.
И вот у нас React предлагает поменять парадигму и перейти на Server Components. И это опасное место.
Теперь наши компоненты уже не просто рисуют отображение по состоянию. Они становятся сложнее. Теперь прямо в компонентах мы можем использовать
Вообще
CSS-in-JS решения тоже пока не работают в серверных компонентах. (Тут я конечно немного радуюсь, что «классические» решения всё так же хороши).
С отладкой тоже пока не очень, но тут наверное допилят (должны допилить!).
Экосистемы для RSC просто нет. Знакомые нам либы не работают (react-query, swr, react-hook-form и т.д.). Короче, всё, что на хуках.
Если они нам нужны, то мы должны заворачивать всё в обёртки с
Почти всё сломано. А ещё и контекст отобрали, как теперь лёгкий DI пилить?
И запросы на сервер странные. Формат намеренно не документирован.
Разработчикам SPA всё это не нравится. Они обеспокоены. Для SSR они готовы брать другие решения. Почему Реакт отговаривает от SPA? Почему официальная документация рекомендует Next, а Next рекомендует RSC? Может быть это способ помочь Vercel заработать на React? Ведь для RSC нужен бэкенд, а бэкенд нужно где-то запускать.
Но отвечая на заглавный вопрос проходит ли React свой «момент Angular» автор говорит — нет, не проходит. Потому что мы всё ещё можем писать «по-старому». Без Server Components.
Но в то же время пользователи теперь вынуждены выбирать между старым рабочим решением и новым сияющим активно рекламируемым. И это опасно. Между двух альтернатив выбора может возникнуть третья — иной фреймворк. И вот тут React вполне может нанести вред своему сообществу. Зачем мне RSC, с той же долей риска я могу перейти на Solid или ещё куда-нибудь.
В заключении Франсуа призывает команды React и Next одуматься и притушить рекламный поток для RSC. Не выпячивать это решение как противовес «классике» и единственное возможное будущее, чтобы не навредить экосистеме React.
Франсуа задаётся вопросом, не подошёл ли Реакт к той же точке, в которую однажды упёрся Ангуляр, когда вторая версия оказалась полностью переписанной с использованием других парадигм. В итоге, многие разработчики не стали переписывать свои приложения на новую версию, вместо этого просто сменив фреймворк.
И вот у нас React предлагает поменять парадигму и перейти на Server Components. И это опасное место.
Теперь наши компоненты уже не просто рисуют отображение по состоянию. Они становятся сложнее. Теперь прямо в компонентах мы можем использовать
fetch
не заворачивая его useEffect
. И это не браузерный fetch
, это патченая его версия. Зачем патченая? Для того, чтобы бороться с лишним ре-фетчем данных и обложить всё кешами из коробки. А кешировать забрасывая данные в контекст мы больше не можем — нет в серверных компонентах контекста.Вообще
useState
, useContext
и useEffect
— все они не работают. Мы можем их включить, используя use client
, но это теперь не поведение по умолчанию. CSS-in-JS решения тоже пока не работают в серверных компонентах. (Тут я конечно немного радуюсь, что «классические» решения всё так же хороши).
С отладкой тоже пока не очень, но тут наверное допилят (должны допилить!).
Экосистемы для RSC просто нет. Знакомые нам либы не работают (react-query, swr, react-hook-form и т.д.). Короче, всё, что на хуках.
Если они нам нужны, то мы должны заворачивать всё в обёртки с
use client
. Почти всё сломано. А ещё и контекст отобрали, как теперь лёгкий DI пилить?
И запросы на сервер странные. Формат намеренно не документирован.
Разработчикам SPA всё это не нравится. Они обеспокоены. Для SSR они готовы брать другие решения. Почему Реакт отговаривает от SPA? Почему официальная документация рекомендует Next, а Next рекомендует RSC? Может быть это способ помочь Vercel заработать на React? Ведь для RSC нужен бэкенд, а бэкенд нужно где-то запускать.
Но отвечая на заглавный вопрос проходит ли React свой «момент Angular» автор говорит — нет, не проходит. Потому что мы всё ещё можем писать «по-старому». Без Server Components.
Но в то же время пользователи теперь вынуждены выбирать между старым рабочим решением и новым сияющим активно рекламируемым. И это опасно. Между двух альтернатив выбора может возникнуть третья — иной фреймворк. И вот тут React вполне может нанести вред своему сообществу. Зачем мне RSC, с той же долей риска я могу перейти на Solid или ещё куда-нибудь.
В заключении Франсуа призывает команды React и Next одуматься и притушить рекламный поток для RSC. Не выпячивать это решение как противовес «классике» и единственное возможное будущее, чтобы не навредить экосистеме React.
Marmelab
Is React Having An Angular.js Moment?
React Server Components, while innovative, risk causing division in the React community due to their potential to undermine Single-Page App architecture.
Роутер в Nextjs
Изначально этот роутер создавался как простая и понятная альтернатива классическому роутеру, где нужно руками согласовать Path и компонент.
Но спустя время я хочу заявить, что стало в разы сложнее:
притом, что есть еще
Но я вижу в проектах еще и директории именующиеся со скобками
Недавно, я потратил минут 20 на попытки выяснить, почему я не могу сделать
А теперь, я вижу, что не только у меня возникают такие ощущения. Вот эта статья набирает популярность, где понятным языком, с помощью визуализации другие разработчики объясняют как работает роутер.
Не значит ли это, что идея файлового роутинга не прошла проверку временем и является полностью провальной?
https://www.builder.io/blog/layouts-in-nextjs-13-visual
Изначально этот роутер создавался как простая и понятная альтернатива классическому роутеру, где нужно руками согласовать Path и компонент.
Но спустя время я хочу заявить, что стало в разы сложнее:
pages/shop/[foo]/[...bar]
притом, что есть еще
pages/another/[[...catch]]
.Но я вижу в проектах еще и директории именующиеся со скобками
/(some)/
и даже /@example/
.Недавно, я потратил минут 20 на попытки выяснить, почему я не могу сделать
pages/api.mdx
, притом, что вываливалась максимально невнятная ошибка.А теперь, я вижу, что не только у меня возникают такие ощущения. Вот эта статья набирает популярность, где понятным языком, с помощью визуализации другие разработчики объясняют как работает роутер.
Не значит ли это, что идея файлового роутинга не прошла проверку временем и является полностью провальной?
https://www.builder.io/blog/layouts-in-nextjs-13-visual
Builder.io
A Visual Guide to Layouts in Next.js 14
Master Next.js 14 layouts with this visual guide to the layout.tsx file. Explore simple app layouts and nested layouts in route folders.
Если говорить о бенчмарках, я нашел неплохой пример того, как нужно делать бенчи.
Весьма показательно количество бенчей, методология замеров, а также детальное описание подхода.
https://github.com/dmonad/crdt-benchmarks
Просто рядовое напоминание, что бенчмаркинг это сложная наука!
Весьма показательно количество бенчей, методология замеров, а также детальное описание подхода.
https://github.com/dmonad/crdt-benchmarks
Просто рядовое напоминание, что бенчмаркинг это сложная наука!
GitHub
GitHub - dmonad/crdt-benchmarks: A collection of CRDT benchmarks
A collection of CRDT benchmarks. Contribute to dmonad/crdt-benchmarks development by creating an account on GitHub.
Forwarded from Alina Ganeeva
Первая ART.СХОДКА MEETUP в Greenpoint! 🎉 15 июля в субботу
Уютное мероприятие с тремя спикерами, тремя лекциями, тремя выставками, аукционом и коктейлями 🥰
Творческое трио из:
• Таня.Вино - people of print member, artist, illustrator, designer. Расскажет про страх чистого листа.
• Ваня Березкин - известный fashion-photographer, 12 лет в индустрии, 6 из которых, фотографировал для GQ Russia
• Лиза Ольшанская - visual artist, art teacher. Работала в Британской школе дизайна и других творческих студиях. Расскажет про современный текстиль и вышивку
Места ограничены, цена билета 5000 amd, в цену входит коктейль🍸 Приобрести можно на кассе Greenpoint, либо через Директ
*Ребята, особенно творческих профессий, приходите. Будет насыщенно🤓
Уютное мероприятие с тремя спикерами, тремя лекциями, тремя выставками, аукционом и коктейлями 🥰
Творческое трио из:
• Таня.Вино - people of print member, artist, illustrator, designer. Расскажет про страх чистого листа.
• Ваня Березкин - известный fashion-photographer, 12 лет в индустрии, 6 из которых, фотографировал для GQ Russia
• Лиза Ольшанская - visual artist, art teacher. Работала в Британской школе дизайна и других творческих студиях. Расскажет про современный текстиль и вышивку
Места ограничены, цена билета 5000 amd, в цену входит коктейль
*Ребята, особенно творческих профессий, приходите. Будет насыщенно
Please open Telegram to view this post
VIEW IN TELEGRAM
Моё любимое кафе в Ереване организует митап.
Дизайн, фотография, текстиль, визуал.
Уже в эту субботу!
Дизайн, фотография, текстиль, визуал.
Уже в эту субботу!
Интересный взгляд на ИИ
Сначала статья показалась мне слишком банальным страхом. Но вчитавшись, я получил новый источник размышлений
Сначала статья показалась мне слишком банальным страхом. Но вчитавшись, я получил новый источник размышлений
LessWrong на русском
Поставить разработку ИИ на паузу не достаточно. Нам надо остановить её полностью
Сегодня вышло [открытое письмо](https://futureoflife.org/open-letter/pause-giant-ai-experiments/), призывающее «все ИИ-лаборатории немедленно приостановить обучение ИИ-систем мощнее, чем GPT-4, хотя бы на 6 месяцев». Этот шестимесячный мораторий был бы лучше…
Forwarded from Заметки про React (Ilmir Shaikhutdinov)
Передозировка useMemo
Разработчики склонны злоупотреблять useMemo и даже не могут адекватно объяснить, почему они это делают. В своем блоге Эдвин Антонов поделился мнением по поводу того, когда стоит использовать useMemo. Если кратко:
- Сначала профилируйте, потом оптимизируйте. Профилируйте сначала производительность, чтобы выявить узкие места, а потом оптимизируйте компонент.
- Мемоизируйте только дорогостоящие операции. Например, вложенные циклы, рекурсивные операции, преобразование большого объема данных или сложные математические вычисления.
- Следите за тем, чтобы зависимости useMemo были точными.
https://edvins.io/usememo-overdose
Разработчики склонны злоупотреблять useMemo и даже не могут адекватно объяснить, почему они это делают. В своем блоге Эдвин Антонов поделился мнением по поводу того, когда стоит использовать useMemo. Если кратко:
- Сначала профилируйте, потом оптимизируйте. Профилируйте сначала производительность, чтобы выявить узкие места, а потом оптимизируйте компонент.
- Мемоизируйте только дорогостоящие операции. Например, вложенные циклы, рекурсивные операции, преобразование большого объема данных или сложные математические вычисления.
- Следите за тем, чтобы зависимости useMemo были точными.
https://edvins.io/usememo-overdose
edvins.io
useMemo overdose
When overuse of useMemo hook becomes a problem
This media is not supported in your browser
VIEW IN TELEGRAM
Да. Я снова собираюсь смотреть
Невероятно понятные ошибки от Nextjs.
Вот что это вообще значит и как пофиксить, учитывая, что
Вот что это вообще значит и как пофиксить, учитывая, что
import()
у меня нигде в коде нетForwarded from Андруша пишет код
У меня есть привычка немного волонтёрить в чатах с новичками, потому что бывает такое, что мне самому нужна помощь по работе.
Но проблема в том, что 99%(оценочное суждение) вопросов выглядят как: "я вот написал код, он должен работать, но не работает". И почему-то люди не умеют обрабатывать такие ситуации.
Поэтому вот вам инструкция, как решать такие проблемы:
1. найдите 100% рабочий по вашему мнению кусок кода, который можно безболезненно удалить из программы
2. Удаляйте его
3. Смотрите результат.
Если программа стала работать как вы ожидаете, то проблема в удалённом вами фрагменте. Постарайтесь вынести этот кусок кода в отдельный модуль и возвращайтесь к пункту 1.
Если программа продолжает работать не так как вы ожидаете, то значит, что непонятка осталась в неудалённом коде. Возвращайтесь к пункту 1 и продолжайте пока не найдёте проблему.
В итоге после этого цикла у вас есть маленький кусочек кода, в котором есть проблема.
Если вы поняли в чём проблема, то супер. Исправляйте её, покрывайте тестами, так как другие люди не хуже и не лучше вас. Помогите им в будущем. Плюс PR станет читать куда проще.
Если вы не понимаете в чём проблема, то выносите этот пример в какую-нибудь песочницу, к примеру, в http://jsfiddle.net и только ПОСЛЕ этого идите в чат за помощью.
Ваши скриншоты огромного полотна редко когда помогают найти проблему. А вот код, с которым можно поиграться и поэкспериментировать - вполне.
Как говорится: формулирование проблемы - это половина решения проблемы.
Но проблема в том, что 99%(оценочное суждение) вопросов выглядят как: "я вот написал код, он должен работать, но не работает". И почему-то люди не умеют обрабатывать такие ситуации.
Поэтому вот вам инструкция, как решать такие проблемы:
1. найдите 100% рабочий по вашему мнению кусок кода, который можно безболезненно удалить из программы
2. Удаляйте его
3. Смотрите результат.
Если программа стала работать как вы ожидаете, то проблема в удалённом вами фрагменте. Постарайтесь вынести этот кусок кода в отдельный модуль и возвращайтесь к пункту 1.
Если программа продолжает работать не так как вы ожидаете, то значит, что непонятка осталась в неудалённом коде. Возвращайтесь к пункту 1 и продолжайте пока не найдёте проблему.
В итоге после этого цикла у вас есть маленький кусочек кода, в котором есть проблема.
Если вы поняли в чём проблема, то супер. Исправляйте её, покрывайте тестами, так как другие люди не хуже и не лучше вас. Помогите им в будущем. Плюс PR станет читать куда проще.
Если вы не понимаете в чём проблема, то выносите этот пример в какую-нибудь песочницу, к примеру, в http://jsfiddle.net и только ПОСЛЕ этого идите в чат за помощью.
Ваши скриншоты огромного полотна редко когда помогают найти проблему. А вот код, с которым можно поиграться и поэкспериментировать - вполне.
Как говорится: формулирование проблемы - это половина решения проблемы.
jsfiddle.net
JSFiddle - Code Playground
JSFiddle - Test your JavaScript, CSS, HTML or CoffeeScript online with JSFiddle.