Size: a a a

Сова пишет…

2021 October 22
Сова пишет…
Единственный способ быстро установить react-router со всем необходимым
источник
2021 November 09
Сова пишет…
Ребята, возвращаю вам сочнейшую подборку, которая должна была выйти ещё неделю назад.

https://news.sova.dev/issues/6-816047
источник
2021 November 10
Сова пишет…
Ребят, это началось
источник
2021 November 13
Сова пишет…
Мне одному кажется, что такой способ демонстрации экрана впринципе не может быть удобным?
источник
2021 November 19
Сова пишет…
По мотивам обсуждения статьи про критерии реактивности, я записал выпуск подкаста "Под куполом" — Почему бенчмарки лгут.

anchor.fm/under-a-dome/episodes/ep-e18l0hg

Все платформы, где можно послушать здесь:
podcast.ru/1553479345
источник
Сова пишет…
Вопрос-наброс. Я токсичный?
Анонимный опрос
28%
Да, слишком
48%
Иногда
24%
Нет
Проголосовало: 225
источник
Сова пишет…
Если ещё не подписаны на меня в твиттере, подпишитесь)

twitter.com/_sergeysova
источник
Сова пишет…
В react-router@v6 нельзя управлять роутером за пределами React контекста.

Источник: github.com/remix-run/react-router/issues/8264

Ryan Florence предлагает вызывать все необходимые действия через useEffect и useNavigate. То есть вернуть контроль внутрь React. Всё было не так плохо, если бы не полная невозможность передать контроль СТМ в режиме SSR, ведь там useEffect не выполняется.

И как справедливо было отмечено, проблему это не решает вообще никаким образом.
источник
Сова пишет…
Аналогичное issue просто закрывается  с предложением передать метод navigate внутрь вашего СТМ.

Но я не смог найти этот метод в API Reference.

А в гайде по серверному рендерингу, написано только краткое: вот неполный список вещей которые вам нужно обрабатывать — стратегии загрузки данных.

Лично для меня это выглядит как издевательство и полное отсутствие заботы о своих пользователях.
источник
Сова пишет…
Если посмотреть на API базового роутера, конечно вы не увидите здесь history.

А всё потому, что разработчики распилили обычный history на несколько объектов. Теперь history реализует интерфейс Navigator, который в свою очередь можно описать как-то так:

export declare type Navigator =
 Omit<History,
   | "action"

   | "location"
   | "back"
   | "forward"
   | "listen"
   | "block">;

А нашел я это поискав по исходникам

На самом деле обращаться можно, но придется реализовать свой BrowserRouter, например вот так:
https://gist.github.com/longdog/aab331660652b397415b7ebae8b77a5d

Но! Придется учитывать особенности работы react18 с его concurrent mode и strict effects, о чем я ещё напишу (как сам разберусь), но человеку без опыта эта задача может оказаться просто непосильной.
источник
Сова пишет…
К чему я всё это вообще писал?
Я хотел показать на примере (и это уже не в первый раз), как можно сделать больно множеству людей сразу.

Давайте рассмотрим правильный способ выпускать мажорные версии популярных библиотек и сразу разберемся почему это правильный способ, а не просто моё мнение.

Вброс:
1. Все новые фичи должны выпускаться в минорных релизах.
2. Мажорные релизы должны только удалять устаревшие фичи, помеченные таковыми 2 мажорных релиза назад.

Обоснование:
Давайте рассмотрим самый обычный релизный цикл без следования этим двум правилам:
1.0 — вводим фичу A
1.1 — вводим фичу Б
2.0 — удаляем фичу А
2.1 — вводим фичу Д (чтобы не путать с алфавитом ABC)

Теперь, пользователи библиотеки вынуждены переписать своё приложение на новое API, чтобы получить фичу Д.
А если версия 1.x больше не поддерживается, то они обязаны это сделать, чтобы получать обновления безопасности.
А если библиотека имеет peerDependencies, то они также обязаны, чтобы обновлять другие свои зависимости.
Если библиотека серьезно ломает совместимость (как react-router много раз), то рефакторинг может серьезно затянуться и тем самым остановив получение обновлений безопасности, вынуждая использовать костыли, вроде yarn resolutions.

Как правильно:
А теперь, что будет если следовать этому правилу:
1.0 — вводим фичу А
1.1 — вводим фичу Б
2.0 — вводим фичу Д (которая по сути должна заменять фичу А) и депрекейтим фичу А
3.0 — удаляем фичу А

Теперь у потребителей библиотеки есть целых ДВА мажорных релиза, чтобы обновиться и при этом не терять обновления безопасности. Да, это сделает больнее разработчикам библиотеки, но если библиотека популярная, придется уважать своих пользователей и не превращать их жизнь в ад обновления зависимостей.

В сложных библиотеках/фреймворках есть roadmap и migration guide, который частично снижает боль. На мой взгляд, 2 мажорных релиза, один из которых вешает депрекейты это отличный компромисс между полной обратной совместимостью java и react-router.

Я должен отметить, что новые фичи обязаны не перекрещиваться своим API со всеми существующими ДО этого API в предыдущих версиях, иначе получится проблема обновления через несколько версий:

Пользователь был на версии 1 в которой метод назывался navigate и принимал 2 аргумента.
В версии 2, метод задепрекейтили и удалили в версии 3.
А уже в 4 версии добавили метод с названием navigate, но с другим смыслом и набором аргументов.

Если пользователь будет обновляться с 1 версии сразу на 4, то он может попасть в ситуацию, когда метод navigate в javascript не бросает исключений, он просто тихо и спокойно работает, но работает совершенно не правильно.

За инсайт спасибо @ZeroBias

Любите своих пользователей 🧡
источник
2021 November 20
Сова пишет…
Я слегка упоролся и решил выложить весь список актуальных проектов и своих выступлений

https://projects.sova.dev

А ещё, во вторник подъедет новый выпуск 307 пакетов!
источник
2021 November 22
Сова пишет…
А пока мы ждем новый подкаст с моим участием, проходите почитать полезнейшие статьи и проекты, которые я собрал для вас.

В этот раз много статей про Rust, но JavaScript разработчикам не стоит расслабляться!

https://news.sova.dev/issues/7-850973
источник
2021 November 23
Сова пишет…
Как использовать effector вместе с gqty/gqless

https://dev.to/effector/using-gqty-with-effector-2m16
источник
Сова пишет…
Пресвятые пакеты! Это произошло
Заваривайте себе жс покрепче и проведите ближайший час с удовольствием.

Всё равно айтишники работать в 12:00 начинают.

https://www.youtube.com/watch?v=QtsH31LD79c
YouTube
307 пакетов: Про личный бренд, комьюнити и DevRel
Поговорили с Сергеем Совой о персональном бренде, обмазались новыми фичами, обсудили комьюнити вне комьюнити, а также узнали, кто на самом деле автор эффектора.

У микрофона:
Ваня — джаваскриптизёр, которого забанил Сергей Сова
Саша — бэкендер без своего YouTube-канала

В гостях:
Сергей Сова — опенсёрсер-растафил, блогер, подкастер, везде и всюду

****
Таймкоды:
0:00 В этом выпуске вы увидите
1:23 Ради чего вот это вот всё?
2:57 «Метод утёнка»
3:41 Почему у Саши нет YT-канала
6:37 Кто такой Сова и кто в итоге автор «эффектора»
8:51 Комьюнити – место, где растёт персональный бренд (PB)
13:44 Цели персонального бренда Совы
17:10 Всегда ли правильно «обмазываться» новыми фичами
19:50 Почему Саша не хочет во фронтенд
22:36 Польза комьюнити для каждого?
27:25 PB как средство достижения личных целей через комьюнити
31:41 Продвижение технологий через комьюнити
36:36 Чем помогает PB при устройстве на работу
37:52 Как создать PB и не выгореть
40:51 Обычный день Совы
42:51 Сова объясняет Ване как прекратить фрустрировать…
источник
2021 November 27
Сова пишет…
А давно Google Flights пишет сколько кг выбросов произведет самолет?
источник
Сова пишет…
источник
Сова пишет…
аааааа
источник
Сова пишет…
Кто из подписчиков живёт в Европе?
Или собирается поехать весной?
Анонимный опрос
16%
Я живу в Европе
8%
Собираюсь в поездку весной
14%
Собираюсь в поездку в другое время
63%
Не живу в Европе
Проголосовало: 241
источник
2021 November 29
Сова пишет…
Гитхаб оказывается умеет показывать diff картинок.
Конечно, не так красиво как например тот же percy.io
источник