Первый выпуск подкаста «Сова говорит...» о проработке продукта.
https://podcast.sova.dev/episodes/1-0-product-development
https://podcast.sova.dev/episodes/1-0-product-development
Как же меня сейчас разбомбило!
Итак, почему CRA это отвратительная штука:
- невозможно просто так подключить babel плагины
- заставляет юзать свой eslint-config-react-app, и env ESLINT_EXTEND
- вокруг него есть десятки расширителей rewired, customize-cra, craco…. и всё это работает не очень хорошо и имеет проблемы с обновлениями CRA
- он насильно исправляет tsconfig при запуске (WTF?)
- подключить postcss плагин уже проблема
- env переменные обязаны начинаться с REACT_APP_
Я думаю вы сможете накидать ещё десятки комментариев о проблемах с CRA. Но у меня весь процесс “БЫСТРОГО” старта выглядит так:
1. yarn create react-app my-app
2. исправить все косяки CRA (3-4 коммита)
3. писать немного код
4. понять, что нехватает расширения
5. пытаться жить с craco/rewired+customize-cra
6. получить какой-то баг при обновлении
7. сделать eject и исправить всё что нужно руками
8. переписать все конфиги
Итого, просто на мучения с CRA в сумме уходит несколько рабочих дней и 2000±500 строк изменений. Это неправильно. Такую систему невозможно называть УДОБНОЙ или УПРОЩАЮЩЕЙ. Оно даже для старта ничего не упрощает.
Зачем было навязывать свои еслинт плагины?
В чем проблема сделать как Razzle? Он решает одну задачу — конфигурирует webpack для SSR, и делает её очень хорошо. При этом позволяя легко кастомизировать и расширять любую часть, что бабель, что вебпак, что энвы, что еслинт.
Но авторы CRA это дичайшие вахтеры, навязали десятки спорных решений, и называют это хорошим решением для новичка. Притом новичок не может использовать инструменты вроде eslint и postcss по документации этих инструментов, CRA ломает использование инструментов.
Так не должно быть. Я собираю голоса на создание нормального инструмента для бутстрапинга react приложений. Пишите в комментариях всё, что думаете про CRA и его проблемы. Какие плюсы лично вам нравятся в CRA и их нужно перенести в адекватную реализацию?
Итак, почему CRA это отвратительная штука:
- невозможно просто так подключить babel плагины
- заставляет юзать свой eslint-config-react-app, и env ESLINT_EXTEND
- вокруг него есть десятки расширителей rewired, customize-cra, craco…. и всё это работает не очень хорошо и имеет проблемы с обновлениями CRA
- он насильно исправляет tsconfig при запуске (WTF?)
- подключить postcss плагин уже проблема
- env переменные обязаны начинаться с REACT_APP_
Я думаю вы сможете накидать ещё десятки комментариев о проблемах с CRA. Но у меня весь процесс “БЫСТРОГО” старта выглядит так:
1. yarn create react-app my-app
2. исправить все косяки CRA (3-4 коммита)
3. писать немного код
4. понять, что нехватает расширения
5. пытаться жить с craco/rewired+customize-cra
6. получить какой-то баг при обновлении
7. сделать eject и исправить всё что нужно руками
8. переписать все конфиги
Итого, просто на мучения с CRA в сумме уходит несколько рабочих дней и 2000±500 строк изменений. Это неправильно. Такую систему невозможно называть УДОБНОЙ или УПРОЩАЮЩЕЙ. Оно даже для старта ничего не упрощает.
Зачем было навязывать свои еслинт плагины?
В чем проблема сделать как Razzle? Он решает одну задачу — конфигурирует webpack для SSR, и делает её очень хорошо. При этом позволяя легко кастомизировать и расширять любую часть, что бабель, что вебпак, что энвы, что еслинт.
Но авторы CRA это дичайшие вахтеры, навязали десятки спорных решений, и называют это хорошим решением для новичка. Притом новичок не может использовать инструменты вроде eslint и postcss по документации этих инструментов, CRA ломает использование инструментов.
Так не должно быть. Я собираю голоса на создание нормального инструмента для бутстрапинга react приложений. Пишите в комментариях всё, что думаете про CRA и его проблемы. Какие плюсы лично вам нравятся в CRA и их нужно перенести в адекватную реализацию?
Forwarded from Монада Кедавра (🚀🔬 🚀🔬🚀🔬)
обзор производительности веб-фреймворков в реальных условиях.
исследование показателей react, vue и angular для множества реальных приложений по ряду метрик:
• размер js файлов (angular позади всех)
• время, потраченное на выполнение жс кода (в отстающих, как ни странно, react, то есть он способствует написанию компактного, но тяжёлого для выполнения кода)
• разрыв в производительности между мобильными устройствами и десктопами
бонусом указана степень популярности фреймворков — от пятисот тысяч сайтов на react до скромных двадцати тысяч у angular
на мой взгляд, подобный подход с массовой оценкой итоговых результатов — полноценных приложений — гораздо честнее, чем микробенчмарки в тепличных условиях: какая разница, насколько быстр сам фреймворк, если он формирует медленную экосистему? это признак того, что часть работы неявно перекладывается на код приложений, к примеру вынуждая тратить силы на борьбу с пресловутыми ререндерами
отдельно примечателен методичный подход к обработке статистики: перцентили лучше отражают распределение в реальности, чем медианы или, что ещё хуже, средние значения, чем часто грешат бенчмарки
потому что производительность — это спектр значений
https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/
исследование показателей react, vue и angular для множества реальных приложений по ряду метрик:
• размер js файлов (angular позади всех)
• время, потраченное на выполнение жс кода (в отстающих, как ни странно, react, то есть он способствует написанию компактного, но тяжёлого для выполнения кода)
• разрыв в производительности между мобильными устройствами и десктопами
бонусом указана степень популярности фреймворков — от пятисот тысяч сайтов на react до скромных двадцати тысяч у angular
на мой взгляд, подобный подход с массовой оценкой итоговых результатов — полноценных приложений — гораздо честнее, чем микробенчмарки в тепличных условиях: какая разница, насколько быстр сам фреймворк, если он формирует медленную экосистему? это признак того, что часть работы неявно перекладывается на код приложений, к примеру вынуждая тратить силы на борьбу с пресловутыми ререндерами
отдельно примечателен методичный подход к обработке статистики: перцентили лучше отражают распределение в реальности, чем медианы или, что ещё хуже, средние значения, чем часто грешат бенчмарки
потому что производительность — это спектр значений
https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/
Timkadlec
The Cost of Javascript Frameworks - Web Performance Consulting | TimKadlec.com
Несколько интересных статей про Rust:
Что делает Rust универсальным языком — https://habr.com/ru/post/504622/
Передача намерений — https://habr.com/ru/post/326896/
Парсите, а не валидируйте — https://habr.com/ru/post/498042/
Что делает Rust универсальным языком — https://habr.com/ru/post/504622/
Передача намерений — https://habr.com/ru/post/326896/
Парсите, а не валидируйте — https://habr.com/ru/post/498042/
ESLint Overrides
Заметил, что часто требуется настроить ESLint для разных директорий по разному. Иногда, вообще нужно выключить некоторые правила в отдельных директориях (например, tests).
Не так давно в eslint config завезли параметр overrides. Позволяет переопределить правила для определенных файлов или директорий.
Выглядит так:
- Вместо
-
-
Примеры
Включить JEST окружение для тестов:
Включить плагин и конфиг для моделей:
Документация
Пример конфига из моего проекта
Заметил, что часто требуется настроить ESLint для разных директорий по разному. Иногда, вообще нужно выключить некоторые правила в отдельных директориях (например, tests).
Не так давно в eslint config завезли параметр overrides. Позволяет переопределить правила для определенных файлов или директорий.
Выглядит так:
{
overrides: [
{
files: [“PATTERN”, “ANOTHER”], excludedFiles: “EXCLUDE”,
...CONFIG,
}
]
}- Вместо
PATTERN и ANOTHER можно вписывать relative glob patterns выбирающие файлы, к которым применяются правила описанные в CONFIG.-
CONFIG это буквально такой же конфиг как и обычный eslint конфиг.-
excludedFiles опциональный параметр, позволяет выкинуть некоторые файлы из выбранных раннее.Примеры
Включить JEST окружение для тестов:
{
files: [“**/*.test.ts”, “**/*.test.tsx”, “tests/**.ts”, “tests/**.tsx”],
env: { jest: true },
}Включить плагин и конфиг для моделей:
{
files: [“**/model.ts”],
plugins: [“@company-name/eslint-plugin-model”],
extends: [
“plugin:@company-name/eslint-plugin-model/recommended”,
],
}Документация
Пример конфига из моего проекта
Несколько лет я ищу инструмент для качественного планирования жизни. То ли я лентяй, то ли инструменты не подходят под мой ритм. В моем ритме жизни нет ничего необычного, я — ленивый ждун. Жду пока всё, чего я хочу случится.
Каждый раз, как я собираюсь с силами и усаживаюсь планировать свои действия, создание контента, разработку личных проектов, я подбираю подходящий инструмент планирования. И в первые дни всё огненно. Но дальше, я продалбываюсь и инструмент не позволяет мне автоматизировать подобные вещи. Почему нельзя передвинуть задачу, срок исполнения которой истек вчера, на следующий день?
Я хочу, чтобы инструмент помогал мне, уменьшал мою боль от ручного контролирования каждой задачи. Не сделал задачу? — ок, передвинь автоматом на завтра. Погляди какой приоритет у задач, сдвинь срок исполнения менее важных задач. Если я оценил задачу и указал длительность в часах, умести её в сводобные промежутки в календаре, или же скажи мне, что эту задачу невозможно выполнить сразу, и необходимо разбивать на части.
Я начинал свои потуги планирования с разных инструментов: Trello, Productivity, Jira, Yandex.Tracker, Things3 и т.п. И везде одна и та же проблема — тупость. Они не могут подсказать как выполнить мои задачи, они не могут сами двигать сроки, подсказать какие задачи срочные и уместить их в свободное время. Это всё трекеры задач, а не менеджеры.
Сегодня снова услышал про Airtable. У него есть крутейшая апишечка и штука вроде блоков, которая позволяет автоматизировать работу с задачами. Airtable это такой Excel + Trello на мощнейших стероидах. Для табличек можно выбирать различные вьюхи, вроде календаря и канбана, разные отображения строк и колонок. Насколько я понял, есть продвинутая автоматизация. no-code во все поля. Надеюсь мне повезет и этот инструмент поможет мне планировать ровно так как мне нравится.
Как вы планируете свою жизнь? И вообще, нужно ли это?
Каждый раз, как я собираюсь с силами и усаживаюсь планировать свои действия, создание контента, разработку личных проектов, я подбираю подходящий инструмент планирования. И в первые дни всё огненно. Но дальше, я продалбываюсь и инструмент не позволяет мне автоматизировать подобные вещи. Почему нельзя передвинуть задачу, срок исполнения которой истек вчера, на следующий день?
Я хочу, чтобы инструмент помогал мне, уменьшал мою боль от ручного контролирования каждой задачи. Не сделал задачу? — ок, передвинь автоматом на завтра. Погляди какой приоритет у задач, сдвинь срок исполнения менее важных задач. Если я оценил задачу и указал длительность в часах, умести её в сводобные промежутки в календаре, или же скажи мне, что эту задачу невозможно выполнить сразу, и необходимо разбивать на части.
Я начинал свои потуги планирования с разных инструментов: Trello, Productivity, Jira, Yandex.Tracker, Things3 и т.п. И везде одна и та же проблема — тупость. Они не могут подсказать как выполнить мои задачи, они не могут сами двигать сроки, подсказать какие задачи срочные и уместить их в свободное время. Это всё трекеры задач, а не менеджеры.
Сегодня снова услышал про Airtable. У него есть крутейшая апишечка и штука вроде блоков, которая позволяет автоматизировать работу с задачами. Airtable это такой Excel + Trello на мощнейших стероидах. Для табличек можно выбирать различные вьюхи, вроде календаря и канбана, разные отображения строк и колонок. Насколько я понял, есть продвинутая автоматизация. no-code во все поля. Надеюсь мне повезет и этот инструмент поможет мне планировать ровно так как мне нравится.
Как вы планируете свою жизнь? И вообще, нужно ли это?
Тем временем я решил немного рассказать о FeatureSlices. Но на крайне непривычной для меня платформе.
В течение недели буду выкладывать посты по теме. Ну и прикладывать к тексту совершенно рандомные фотки и картинки из айфона.
https://www.instagram.com/p/CBOVF2LK_OY/?igshid=r153a0q0jqmg
В течение недели буду выкладывать посты по теме. Ну и прикладывать к тексту совершенно рандомные фотки и картинки из айфона.
https://www.instagram.com/p/CBOVF2LK_OY/?igshid=r153a0q0jqmg
Как я планирую
Ощущение, что мне нужен сервис реализущий услуги секретарши и органайзера вместе. Чтобы лучше понять мою боль, расскажу как я сейчас планирую свою работу и личные проекты в Things.
У меня есть две секции для проектов Work и Personal.
В Work у меня есть проект с названием компании — REDMADROBOT. Это что-то вроде беклога, здесь размещаются все поступающие для меня задачи, в том числе задачи создать задачи команде в JIRA.
Задачи разбиты на секции по проектами и тимлидским обязанностям. Также задачи в каждой секции помечены одноименным тегом. Секции помогают разделить задачи при просмотре общего списка в проекте, а теги создают фильтры в виде табов, а также помогают увидеть к чему относится задача, после переноса в другой проект.
Каждое воскресенье в секции Work появляется повторяющийся проект «Рабочая неделя». Это конкретный план на каждую неделю. Я стараюсь заполнять его в воскресенье вечером или же утром в понедельник. Проект разделен на секции по методу Эйзенхауэра https://t.iss.one/sergeysova/32: «Важно и Срочно», «Важно и Не Срочно», «Не Важно и Срочно», «Не Важно и Не Срочно». Могу как-нибудь расписать подробно как я понимаю этот метод разделения задач.
В этот проект попадают задачи из проекта REDMADROBOT. Здесь же я ставлю задачам время исполнения и дедлайны. Задачи на сегодня появляются в отдельной секции в Things, а также на часах. Задачи у которых срок исполнения будет завтра-послезавтра, появляются в секции Upcoming.
Такая же схема с секцией Personal. Но там у меня больше проектов, ибо есть планирование на весь 2020 год (которое похерилось по всем известным причинам <на самом деле не поэтому>), различные идеи, которые я только собираюсь реализовать, проекты в разработке и у них тоже есть свои внутренние задачи. Также генерируется еженедельный проект «План на неделю» с такой же структурой.
Задачи стараюсь описывать следуя этим принципам:
* Каждая задача должна быть маленькой, чтобы её можно было легко удерживать в памяти.
* Если задача большая, она помечается тегом “Декомпозировать” и разбивается на подзадачи.
* Задачи должны быть хорошо описаны. Для чего я вообще её делаю, откуда она ко мне пришла, кто ожидает её исполнения, какова цель задачи, какие-то детали которые нужно знать перед выполнением.
* В личных задачах описываю свою мотивацию в момент создания задачи, что изменится в моей жизни с выполнением этой задачи, а также что будет если я не выполню эту задачу.
В идеале для меня начинать день с просмотра жизненных целей, годового плана, целей недели, и задач на сегодня-завтра. Поправить план на сегодня. Осознать настрой на то, чего я хочу достичь и в итоге просто уснуть (нееет). Вечером проглядеть, что выполнено, убедиться, что день прошел не зря, ну или я хотя бы развлекся. В конце недели провести некую ретроспективу и убедиться, что я приблизился к жизненым целям, и годовой план мне приносит хоть какую-то пользу.
Но пока что я ощущаю себя раздолбаем. Часто забываю про трекер задач, смотрю, что у меня 4 задачи с прошедшим сроком выполнения, приходится садиться и сдвигать все задачи недели, некоторые убирать в беклог. Иногда приходится двигать вручную задачи из годового планирования. И вот эта вся ручная работа раздражает до безумия. Из-за этого совсем отпадает желание заниматься планированием.
Как с этим справляются другие люди?
Ощущение, что мне нужен сервис реализущий услуги секретарши и органайзера вместе. Чтобы лучше понять мою боль, расскажу как я сейчас планирую свою работу и личные проекты в Things.
У меня есть две секции для проектов Work и Personal.
В Work у меня есть проект с названием компании — REDMADROBOT. Это что-то вроде беклога, здесь размещаются все поступающие для меня задачи, в том числе задачи создать задачи команде в JIRA.
Задачи разбиты на секции по проектами и тимлидским обязанностям. Также задачи в каждой секции помечены одноименным тегом. Секции помогают разделить задачи при просмотре общего списка в проекте, а теги создают фильтры в виде табов, а также помогают увидеть к чему относится задача, после переноса в другой проект.
Каждое воскресенье в секции Work появляется повторяющийся проект «Рабочая неделя». Это конкретный план на каждую неделю. Я стараюсь заполнять его в воскресенье вечером или же утром в понедельник. Проект разделен на секции по методу Эйзенхауэра https://t.iss.one/sergeysova/32: «Важно и Срочно», «Важно и Не Срочно», «Не Важно и Срочно», «Не Важно и Не Срочно». Могу как-нибудь расписать подробно как я понимаю этот метод разделения задач.
В этот проект попадают задачи из проекта REDMADROBOT. Здесь же я ставлю задачам время исполнения и дедлайны. Задачи на сегодня появляются в отдельной секции в Things, а также на часах. Задачи у которых срок исполнения будет завтра-послезавтра, появляются в секции Upcoming.
Такая же схема с секцией Personal. Но там у меня больше проектов, ибо есть планирование на весь 2020 год (которое похерилось по всем известным причинам <на самом деле не поэтому>), различные идеи, которые я только собираюсь реализовать, проекты в разработке и у них тоже есть свои внутренние задачи. Также генерируется еженедельный проект «План на неделю» с такой же структурой.
Задачи стараюсь описывать следуя этим принципам:
* Каждая задача должна быть маленькой, чтобы её можно было легко удерживать в памяти.
* Если задача большая, она помечается тегом “Декомпозировать” и разбивается на подзадачи.
* Задачи должны быть хорошо описаны. Для чего я вообще её делаю, откуда она ко мне пришла, кто ожидает её исполнения, какова цель задачи, какие-то детали которые нужно знать перед выполнением.
* В личных задачах описываю свою мотивацию в момент создания задачи, что изменится в моей жизни с выполнением этой задачи, а также что будет если я не выполню эту задачу.
В идеале для меня начинать день с просмотра жизненных целей, годового плана, целей недели, и задач на сегодня-завтра. Поправить план на сегодня. Осознать настрой на то, чего я хочу достичь и в итоге просто уснуть (нееет). Вечером проглядеть, что выполнено, убедиться, что день прошел не зря, ну или я хотя бы развлекся. В конце недели провести некую ретроспективу и убедиться, что я приблизился к жизненым целям, и годовой план мне приносит хоть какую-то пользу.
Но пока что я ощущаю себя раздолбаем. Часто забываю про трекер задач, смотрю, что у меня 4 задачи с прошедшим сроком выполнения, приходится садиться и сдвигать все задачи недели, некоторые убирать в беклог. Иногда приходится двигать вручную задачи из годового планирования. И вот эта вся ручная работа раздражает до безумия. Из-за этого совсем отпадает желание заниматься планированием.
Как с этим справляются другие люди?
Telegram
Сова пишет… 🎄
Сегодня снова начал думать о правильном распределении свободного времени. Есть много разных методик, но я хочу снова попробовать матрицу Эйзенхауэра.
❤1👍1
Продолжаю тему FeatureSlices. Скоро полетят примеры.
https://www.instagram.com/p/CBQ7nZFqVTj/?igshid=c54psp7z8tbk
https://www.instagram.com/p/CBQ7nZFqVTj/?igshid=c54psp7z8tbk
Instagram
🦉
Основная цель методологии FeatureSlices — упростить добавление нового кода и изменение существующего. Первое, что я стремлюсь сделать в любом проекте, это определить опасный и безопасный код. Опасный код — это такие строки в вашем проекте, изменение которых…
Всё таки React изживает себя. Интересно, когда он совсем остановится в развитии, и потребует рефакторинга? А может нужно будет рефакторить основную идею?
Давайте проясним. React еще долго будет на рынке. Это как php, все понимают, что он говно. Но свои задачи решает хорошо, на рынке много специалистов, много готовых продуктов на нем.
Но сам React, как творение инженеров, как продукт с пачкой технических ограничений, уже подошел к границе своих возможностей. Ограничения мешают ему развиваться дальше.
Так со всеми техническими продуктами. Главное во время это заметить и не бояться поменять стек. Кто-то на Elm уходит, а кто-то на новую эффективную новинку
Но сам React, как творение инженеров, как продукт с пачкой технических ограничений, уже подошел к границе своих возможностей. Ограничения мешают ему развиваться дальше.
Так со всеми техническими продуктами. Главное во время это заметить и не бояться поменять стек. Кто-то на Elm уходит, а кто-то на новую эффективную новинку
Продолжаю постить в инстаграм мои откровения о FeatureSlices
Стараюсь писать посты на будущее, чтобы не было простоев. Начинаю получать удовольствие от ведения блога.
https://www.instagram.com/p/CBXwYNfqa10/
Стараюсь писать посты на будущее, чтобы не было простоев. Начинаю получать удовольствие от ведения блога.
https://www.instagram.com/p/CBXwYNfqa10/