Из документации свежего Next
React extends fetch to provide automatic request deduping, and Next.js extends the fetch options object to allow each request to set its own caching and revalidating rules.
https://beta.nextjs.org/docs/data-fetching/fundamentals#the-fetch-api-and-async-components
Если вы понимаете, зачем они творят такое непотребство, а ещё лучше имеете под рукой ссылки на конкретные публичные обсуждения и PR — велком в комментарии. У Next к сожалению все внутренние PR ссылаются на Slack и Notion.
React extends fetch to provide automatic request deduping, and Next.js extends the fetch options object to allow each request to set its own caching and revalidating rules.
https://beta.nextjs.org/docs/data-fetching/fundamentals#the-fetch-api-and-async-components
Если вы понимаете, зачем они творят такое непотребство, а ещё лучше имеете под рукой ссылки на конкретные публичные обсуждения и PR — велком в комментарии. У Next к сожалению все внутренние PR ссылаются на Slack и Notion.
nextjs.org
Building Your Application: Data Fetching
Learn how to fetch, cache, revalidate, and mutate data with Next.js.
👍6🌚1
Forwarded from artalog (artalar)
next.js отличный продукт и я его рекомендовал всегда, даже если SSR не нужен: минимум ограничений, расширение конфига из коробки, апи-роуты для прототипирования. Сейчас для многих задач лучше подходит astro или vite, но некст все еще мой основной инструмент.
Next.js 13from $599 - отличный релиз, куча хороших нововведений (лично я давно ждал Layouts) и вы скорее всего обо всем этом слышали или скоро услышите, но вот вам небольшая подборка реализма:
https://news.1rj.ru/str/melikhov_dev/136
https://twitter.com/zachleat/status/1584995586918731776
https://twitter.com/_jessicasachs/status/1585095128703971329
https://twitter.com/lukemorales/status/1585080304410439680
https://twitter.com/ScriptedAlchemy/status/1585189789027880962
Next.js 13
https://news.1rj.ru/str/melikhov_dev/136
https://twitter.com/zachleat/status/1584995586918731776
https://twitter.com/_jessicasachs/status/1585095128703971329
https://twitter.com/lukemorales/status/1585080304410439680
https://twitter.com/ScriptedAlchemy/status/1585189789027880962
😁3👍2🤔2
Так, господин 🦜popuguy помог найти PR в Реакте.
https://github.com/facebook/react/pull/25516/files
UPD всё же очень жаль, что в PR не описана проблема и процесс принятия решения. Есть ощущение, что решали так, чтобы починилось у всех разом, без изменения кодовой базы. Хотя даже здесь мы видим «POST requests are not deduped so they have to be wrapped in cache() explicitly. »
https://github.com/facebook/react/pull/25516/files
UPD всё же очень жаль, что в PR не описана проблема и процесс принятия решения. Есть ощущение, что решали так, чтобы починилось у всех разом, без изменения кодовой базы. Хотя даже здесь мы видим «POST requests are not deduped so they have to be wrapped in cache() explicitly. »
🤡21🤔1
Закрывая сегодняшнюю тему — подозреваю, что в Реакте патчили fetch чтобы из коробки решить вот эту проблему https://news.1rj.ru/str/melikhov_dev/80 .
Решили только с fetch и только с get-запросами. POST всё равно придётся заворачивать в cache() руками.
И, наверное, простить (и понять) хоть как-то можно, API не сломано (но неявно меняется поведение). А вот в next, к сожалению, пошли дальше и пропатчили API, внедрив свои параметры за нэймспейсом ‘next’ (я в первый момент глядя на код подумал, что это миддлвара какая-то).
Решили только с fetch и только с get-запросами. POST всё равно придётся заворачивать в cache() руками.
И, наверное, простить (и понять) хоть как-то можно, API не сломано (но неявно меняется поведение). А вот в next, к сожалению, пошли дальше и пропатчили API, внедрив свои параметры за нэймспейсом ‘next’ (я в первый момент глядя на код подумал, что это миддлвара какая-то).
Telegram
melikhov.dev
Сегодня и Сергей Сова на бизнес-логику в хуках ругался и в патреоновом чатике JavaScript.Ninja вспомнили прекрасное — useEffect в React 18 срабатывает дважды, если вы в Strict Mode. Вот такая мотивация:
Так как в будущем мы собираемся в целях улучшения…
Так как в будущем мы собираемся в целях улучшения…
👍3
Вот засада, когда ненужная в общем-то, но такая невинная (на первый взгляд) утилита (я конечно про
Ишью вот
JetBrains Toolbox, а не про zsh) поджирает процессор.Ишью вот
Должен был это написать
На днях ходил к Ване Ботанову на интервью. Вышла чудовищно тяжёлая запись. Не спал ночь размышляя — сказал ли я именно то, что думал и за какие слова мне ещё прилетит. Время такое, что любое слово и действие находятся под лупой. Достаточно ли ты хороший? Достаточно ли ты осудил? А может, наоборот, поддержал?
С другой стороны, отрефлексировал максимально. Да к чёрту, сколько можно осуждать, сколько можно разрушать сообщество, проводя водораздел по факту отъезда / не отъезда, сколько можно делить частные компании на хорошие и плохие, просто по принципу их работы в юрисдикции той или иной страны и силе публичных заявлений.
Как сказали когда-то давным-давно мне мои друзья протестанты, которым я много и бескорыстно помогал — «Человек ты, Андрей, хороший, но всё равно попадёшь в ад». Важно не то, что ты действительно делаешь хорошего, важно вписываешься ли ты в рамки, выполнил ли ты базовую программу, после которой начинается твоя безупречность. Что ж, бог вам судья :)
Да, я остаюсь дома. Да, я никуда пока не планирую уезжать. Здесь мои родители, здесь любимые компании, которые делают дофига хорошего публично и не публично, и которым тоже сейчас нужна помощь и я могу эту помощь дать (привет, Джуг, привет, Яндекс). Здесь остаются люди, которым тоже нужна помощь и поддержка. Здесь друзья-волонтёры и люди, которым они помогают, здесь родной кошачий приют, которому сейчас невероятно тяжело.
Кто смог уехать — вы молодцы (без сарказма, это сильное и сложное решение). Кто остался — я остаюсь с вами и помогу, чем смогу. У нас ещё много работы которую, я верю, мы можем сделать. Кто продолжает удерживать разваливающиеся сообщества — вы красавчики. Кто составляет списки — мне с вами не по пути.
На днях ходил к Ване Ботанову на интервью. Вышла чудовищно тяжёлая запись. Не спал ночь размышляя — сказал ли я именно то, что думал и за какие слова мне ещё прилетит. Время такое, что любое слово и действие находятся под лупой. Достаточно ли ты хороший? Достаточно ли ты осудил? А может, наоборот, поддержал?
С другой стороны, отрефлексировал максимально. Да к чёрту, сколько можно осуждать, сколько можно разрушать сообщество, проводя водораздел по факту отъезда / не отъезда, сколько можно делить частные компании на хорошие и плохие, просто по принципу их работы в юрисдикции той или иной страны и силе публичных заявлений.
Как сказали когда-то давным-давно мне мои друзья протестанты, которым я много и бескорыстно помогал — «Человек ты, Андрей, хороший, но всё равно попадёшь в ад». Важно не то, что ты действительно делаешь хорошего, важно вписываешься ли ты в рамки, выполнил ли ты базовую программу, после которой начинается твоя безупречность. Что ж, бог вам судья :)
Да, я остаюсь дома. Да, я никуда пока не планирую уезжать. Здесь мои родители, здесь любимые компании, которые делают дофига хорошего публично и не публично, и которым тоже сейчас нужна помощь и я могу эту помощь дать (привет, Джуг, привет, Яндекс). Здесь остаются люди, которым тоже нужна помощь и поддержка. Здесь друзья-волонтёры и люди, которым они помогают, здесь родной кошачий приют, которому сейчас невероятно тяжело.
Кто смог уехать — вы молодцы (без сарказма, это сильное и сложное решение). Кто остался — я остаюсь с вами и помогу, чем смогу. У нас ещё много работы которую, я верю, мы можем сделать. Кто продолжает удерживать разваливающиеся сообщества — вы красавчики. Кто составляет списки — мне с вами не по пути.
❤92🕊41👍8🥰4👏3❤🔥1😢1💯1
Постримим с ребятами из GeekBoards про клавиатуры. Попробую в очередной раз объяснить ,что не так с Keychron и что с этим можно сделать.
10.11 в 20:00 по GMT+3
https://holyjs.ru/talks/d1ba8d146dac4d30a49e5f252e6a8d19/
10.11 в 20:00 по GMT+3
https://holyjs.ru/talks/d1ba8d146dac4d30a49e5f252e6a8d19/
HolyJS 2022 Autumn. Конференция для JavaScript‑разработчиков
GeekBoards x HolyJS: тактильный спешл | Доклад на HolyJS 2022 Autumn
Клавиатура «Мака» — идеальный рабочий инструмент? Зачем вообще отдельные клавиатуры в 2022? Хотите, чтобы весь офис слышал, как вы делаете перенос строки?
Поговорим об альтернативных возможностях набирать "Hello World!"
Поговорим об альтернативных возможностях набирать "Hello World!"
❤12🔥2❤🔥1🤔1
Вся эта шумиха с переездом с Твиттера на распределённый гипертекстовый векторный Mastodon напомнила мне про прекрасные времена Фидонета. Фидонет конечно был rulez 4ever, и никакая современная соцсеть не может сравниться с ним по вайбу (для меня). Если вы не застали (подозреваю, что старый тут только я), то вот вам краткий ликбез.
Для того, чтобы Фидонет работал не нужно было никаких этих ваших интернетов. Даже лучше, чтобы интернеты были дорогими и недосягаемыми. Вот что действительно было нужно, так это безлимитный домашний станционарный телефон, через который и было организовано соединение поинта (это вы) с нодой (это чувак, которому вы купили пиво за то, чтобы он вас подключил к своему узлу).
Вся сеть строилась на чистом энтузиазме. Ноды соглашались на вечно занятый ночью телефон (иногда поинты скидывались и ставили ноде вторую КРУГЛОСУТОЧНУЮ линию). Люди, имеющие доступ к дешёвому или бесплатному межгороду (или любой другой сети) поднимали хабы, и все вместе хабы образовывали бэкбон (хребет) сети, условие её выживания.
Фактически сеть могла работать даже на дискетах, привязанных к почтовым голубям — она была оффлайновой (да-да, FTN). Выглядело это так:
- Вечером вы включаете программу-мэйлер (например, T-Mail) которая начинает долбиться на номер ноды
- Дозвонившись на ноду мэйлер выкачивает пакет почты и закидывает его в эхо-процессор
- Эхо-процессор распаковывает почту и раскладывает по папочкам: личные сообщения и эхи. Эхо-конференции это продвестники форумов.
- Вы открываете редактор (например GoldED), читаете почту и отвечаете на что-то
- Эхо-процессор пакует почту, мэйлер пытается её отправить, вы отправляетесь спать, чтобы утром почитать, что же за великий срач случился в очередной эхе из-за вашего глупого сообщения, и не словили ли вы плюс из плюсомёта от модератора (три плюсика и бан)
Всю эту красоту убила банальная штука — в стране ввели повременную плату за станционарный телефон. Да, Фидо можно было запустить и поверх TCP/IP, но никому уже это было не нужно. Кончилась эпоха.
Для того, чтобы Фидонет работал не нужно было никаких этих ваших интернетов. Даже лучше, чтобы интернеты были дорогими и недосягаемыми. Вот что действительно было нужно, так это безлимитный домашний станционарный телефон, через который и было организовано соединение поинта (это вы) с нодой (это чувак, которому вы купили пиво за то, чтобы он вас подключил к своему узлу).
Вся сеть строилась на чистом энтузиазме. Ноды соглашались на вечно занятый ночью телефон (иногда поинты скидывались и ставили ноде вторую КРУГЛОСУТОЧНУЮ линию). Люди, имеющие доступ к дешёвому или бесплатному межгороду (или любой другой сети) поднимали хабы, и все вместе хабы образовывали бэкбон (хребет) сети, условие её выживания.
Фактически сеть могла работать даже на дискетах, привязанных к почтовым голубям — она была оффлайновой (да-да, FTN). Выглядело это так:
- Вечером вы включаете программу-мэйлер (например, T-Mail) которая начинает долбиться на номер ноды
- Дозвонившись на ноду мэйлер выкачивает пакет почты и закидывает его в эхо-процессор
- Эхо-процессор распаковывает почту и раскладывает по папочкам: личные сообщения и эхи. Эхо-конференции это продвестники форумов.
- Вы открываете редактор (например GoldED), читаете почту и отвечаете на что-то
- Эхо-процессор пакует почту, мэйлер пытается её отправить, вы отправляетесь спать, чтобы утром почитать, что же за великий срач случился в очередной эхе из-за вашего глупого сообщения, и не словили ли вы плюс из плюсомёта от модератора (три плюсика и бан)
Всю эту красоту убила банальная штука — в стране ввели повременную плату за станционарный телефон. Да, Фидо можно было запустить и поверх TCP/IP, но никому уже это было не нужно. Кончилась эпоха.
❤17💔17👍4⚡2🔥2
Такое дело, next.js наконец-то обогнал Create React App в качестве инструмента по умолчанию для React-разработчика. Да, конечно, есть Vite, есть Remix, у всех свои причины для выбора, но речь не об этом.
Речь о том, что давно пора закопать CRA. Это был хороший инструмент для старта обучения, но он никогда не был расчитан на долгую жизнь в продакшене. Может быть next и не лучшее решение, но это достойное решение.
Речь о том, что давно пора закопать CRA. Это был хороший инструмент для старта обучения, но он никогда не был расчитан на долгую жизнь в продакшене. Может быть next и не лучшее решение, но это достойное решение.
👍52
Сегодня презентую доклад — результат двухнедельного копания в облачных провайдерах. Все варианты деплоя node.js-приложения, цены, девопс во все поля. Как обычно выяснил по дороге, что я знаю, что ничего не знаю. Зоопарк тут просто бесконечный вскрывается, хватит на хороший пэйпер или даже маленькую книжку.
Главный вопрос — бесплатной трансляции не будет, два раза ездить на конференции с одним докладом я не люблю, а значит нужно думать, что делать с этим добром дальше. Сесть за статью? Записать видос? Что-то, да надо будет сделать.
Главный вопрос — бесплатной трансляции не будет, два раза ездить на конференции с одним докладом я не люблю, а значит нужно думать, что делать с этим добром дальше. Сесть за статью? Записать видос? Что-то, да надо будет сделать.
🔥49👍10
TIL FinOps
Financial Operations или Cloud Financial Operations. Ребята постарались вписать нормальную расшифровку, чтобы люди вроде меня не докапывались. Короче говоря, облака оказались такими гибкими в тарификации, что появились отдельные ребята, которые могут сесть с калькулятором и внятно ответить на вопрос — сколько денег мы заплатим вот за это облачное счастье и где можно срезать косты.
Financial Operations или Cloud Financial Operations. Ребята постарались вписать нормальную расшифровку, чтобы люди вроде меня не докапывались. Короче говоря, облака оказались такими гибкими в тарификации, что появились отдельные ребята, которые могут сесть с калькулятором и внятно ответить на вопрос — сколько денег мы заплатим вот за это облачное счастье и где можно срезать косты.
😁10💩1🥴1
Поспорили вчера с Сашей Шушуновым — нужно ли проращивать типы насквозь от базы данных до фронта? Саша говорит, что нужно. Кент Доддс говорит, что нужно. А я за маппинг в DTO. И дядя Боб за DTO (кто бы сомневался). Да, удобно, когда имена полей гарантированно совпадают, но как же часто я вижу, как по системе гуляет модель со всеми её optional полями и реляциями. И на месте использования люди давят опциональность через
За пределами Data Access Layer я не хочу знать о структуре базы данных. Я хочу работать с чистыми данными, я не хочу видеть здесь модель, обвешанную методами. Представление данных на клиенте вообще может не совпадать с представлением в БД (как минимум, мы любим в UI работать с денормальзованными данными). А уж идея средствами ORM менять структуру БД под схемы вводит меня в ступор. Да, DX будет шикарный, но данные — это самое ценное, что у нас есть. И я хочу пересекать границу между данными и представлением максимально аккуратно.
Старый я. И вредный.
! чтобы TS не ругался (а что, я точно знаю, что здесь поле не пустое). Так если поле не пустое, то пусть структура DTO это и описывает. Если подтянули данные через реляцию — пусть DTO это описывает. За пределами Data Access Layer я не хочу знать о структуре базы данных. Я хочу работать с чистыми данными, я не хочу видеть здесь модель, обвешанную методами. Представление данных на клиенте вообще может не совпадать с представлением в БД (как минимум, мы любим в UI работать с денормальзованными данными). А уж идея средствами ORM менять структуру БД под схемы вводит меня в ступор. Да, DX будет шикарный, но данные — это самое ценное, что у нас есть. И я хочу пересекать границу между данными и представлением максимально аккуратно.
Старый я. И вредный.
👍78🔥10⚡1👌1
Решил вопрос, что делать с докладом. Доделаю его до более лучшей версии и расскажу на YaTalks через недельку.
🔥29❤1
Вокруг только и разоговоров о tRPC как о «лёгкой» замене GraphQL. Ещё чуть чуть и наконец-то снова начнём писать RPC-вызовы руками, примотав к ним кодогенерацию sdk из OpenAPI в нужный нам язык. И кажется мне, что это и есть устойчивое решение на годы (в общем-то, и раньше с RPC было прекрасно жить, если ты контролируешь фронт и бэк/bff).
Спасибо @artalog за ссылочку
Спасибо @artalog за ссылочку
❤14🤔4😱1
TIL Фишфудинг
Если про догфудинг большая часть моих читателей в курсе (Eating your own dog food, пользуйтесь продуктами, которые вы разрабатываете), то про фишфудинг, думаю, слышали не многие. Сам узнал сегодня, как вы понимаете.
Фишфудинг — термин из глубин Гугла. Fishfooding is using an app or feature really early in its development before it's even really finished. Т.е. стараемся пользоваться своим продуктом как можно раньше, чтобы выявить проблемы до того, как на них наткнутся не то что пользователи, а даже сотрудники компании за пределами вашего отдела.
Интересно, что в Гугле понимают это так: фишфудинг — использовать прототип в команде, догфудинг — использовать прототип во всей компании. Это идёт несколько вразрез с классическим догфудингом, там всё же речь не только про прототипы, а про продукты в целом.
https://www.inc.com/bill-murphy-jr/google-spent-21-years-learning-how-to-release-new-products-heres-1-thing-it-always-does-first.html
Если про догфудинг большая часть моих читателей в курсе (Eating your own dog food, пользуйтесь продуктами, которые вы разрабатываете), то про фишфудинг, думаю, слышали не многие. Сам узнал сегодня, как вы понимаете.
Фишфудинг — термин из глубин Гугла. Fishfooding is using an app or feature really early in its development before it's even really finished. Т.е. стараемся пользоваться своим продуктом как можно раньше, чтобы выявить проблемы до того, как на них наткнутся не то что пользователи, а даже сотрудники компании за пределами вашего отдела.
Интересно, что в Гугле понимают это так: фишфудинг — использовать прототип в команде, догфудинг — использовать прототип во всей компании. Это идёт несколько вразрез с классическим догфудингом, там всё же речь не только про прототипы, а про продукты в целом.
https://www.inc.com/bill-murphy-jr/google-spent-21-years-learning-how-to-release-new-products-heres-1-thing-it-always-does-first.html
Inc.com
Google Spent 21 Years Learning How to Release New Products. Here's What It Always Does First
'If one company is amazing at this concept, it's Google,' an employee told me, completely unsolicited.
👍10