Искал чем почистить свою убунту, нашел такую утилиту https://www.bleachbit.org/ мб кому пригодится, эффективно вычищает всякие кеши, и прочий мусор, освободил 150гб :)
P.S. комрады в комментах посоветовали подобное для Мака - omnidisksweeper https://www.omnigroup.com/more
P.S. комрады в комментах посоветовали подобное для Мака - omnidisksweeper https://www.omnigroup.com/more
👍10
Helm чарты и удаленное API Kubernetes
Столкнулся с такой проблемой, что в хелм чартах были старые версии API. И если кластер их уже не поддерживает, то здесь только удалять релиз и накатывать новую версию. При этом удаление становиться проблемой, так как API то не поддерживается... Замкнутый круг.
Но сегодня, я нашел такую штуку https://github.com/helm/helm-mapkubeapis которая позволяет обновить helm релиз метадату и пофиксить deprecated или removed API!
Спасибо этому комменту https://github.com/helm/helm/issues/11513#issuecomment-1404101041
#helm #kubernetes #api
Столкнулся с такой проблемой, что в хелм чартах были старые версии API. И если кластер их уже не поддерживает, то здесь только удалять релиз и накатывать новую версию. При этом удаление становиться проблемой, так как API то не поддерживается... Замкнутый круг.
Error: unable to build kubernetes objects from current release manifest: resource mapping not found for name: "blocks" namespace: "" from "": no matches for kind "Ingress" in version "networking.k8s.io/v1beta1"В первый раз я руками чистил релизы, удалял все секреты, деплои, сервисы и т.д. Манкей джоб кароч.
ensure CRDs are installed first
Но сегодня, я нашел такую штуку https://github.com/helm/helm-mapkubeapis которая позволяет обновить helm релиз метадату и пофиксить deprecated или removed API!
Спасибо этому комменту https://github.com/helm/helm/issues/11513#issuecomment-1404101041
#helm #kubernetes #api
GitHub
GitHub - helm/helm-mapkubeapis: This is a Helm plugin which map deprecated or removed Kubernetes APIs in a release to supported…
This is a Helm plugin which map deprecated or removed Kubernetes APIs in a release to supported APIs - helm/helm-mapkubeapis
👍4
Перевожу home на NVME диск, просто офигел сколько файлов хранится в node_modules в проектах. А за 3 года существования моей убунту проектов накопилось под сотню... В общем начал руками удалять node_modules, но быстро забил на это дело, нашел такую утилиту https://github.com/voidcosmos/npkill где можно прям в визуальном режиме удалять node_modules
В общем пакетов было под 20Gb, а у вас сколько? :)
#node #clean
В общем пакетов было под 20Gb, а у вас сколько? :)
#node #clean
GitHub
GitHub - voidcosmos/npkill: List any node_modules 📦 dir in your system and how heavy they are. You can then select which ones you…
List any node_modules 📦 dir in your system and how heavy they are. You can then select which ones you want to erase to free up space 🧹 - voidcosmos/npkill
👍5😁1
Стартап
Значит рассказываю про стартап, в который я недавно искал людей.
Спойлер: еще есть шанс залететьи в течении 2 лет стать долларовым миллионером (на полном серьезе).
О проекте:
Это https://facelink.cc/ - NoCode платформа для создания видеоворонок, новый способ создать сайт в современном видео формате, это как Tilda+TikTok.
Это реально востребованный продукт, который уже имеет платящих клиентов и заявки от инвесторов.
Его создали основатели MakeTornado (https://www.maketornado.com/) и CallbackHunter, реально крутые ребята, которые реально шарят в венчуре, финансах и бизнесе, и имеют опыт работы в инвест комитетах.
Текущая версия — это MVP и она имеет определенные недостатки, которые не позволяют дать взрывной рост и работать с клиентами корпоративного уровня и масштабироваться до мира.
По-этому сейчас мы расширяем и укомплектовываем команду и делаем highload версию сервиса.
Мы отказались от Elm и делаем фронт на React!
Про стек расскажу:
Back: микросервисы на nestjs, graphql (сейчас переезжаем на tRPC), kafka, redis
Front: React, Typenoscript
- Все это в монорепе на turbo
- Билдиться в Gitlab
- Инфра в кубере с использованием GitOps техник с FluxCD
Cейчас нам нужен крутой React разраб с амбициями гангстера, который понимает, что на работе он не разбогатеет за всю жизнь. И ему не жалко 15-20 часов своего драгоценного времени. Который может пилить фичи просто основываясь на пользовательских историях без детального описания. Который понял, что уперся в потолок и хочет не просто немного подняться, а пробить егок хуям собачьим.
Вот примеры как это работает в живую:
Виджет на сайте:
1. https://geotermo.com
2. https://profg.fit/
3. https://www.fuseservice.com
Как видео-сайт:
4. https://facelink.cc/sgvs7zsyw/
5. https://facelink.cc/6adgsvj38/
6. https://facelink.cc/k777iasww/
7. https://facelink.cc/w5bpdxxwn/
8. https://facelink.cc/p31bxbxmt/
Как инструмент сбора видео-отзывов:
9. https://facelink.cc/hdysetqwh/
10. https://facelink.cc/wdvcgzdo7/
Этот продукт ждут большие бизнесы и блогеры-миллионики. Такой шанс дается очень редко.
Пиши мне в ЛС @bearlogin
#стартап #врывайся
Значит рассказываю про стартап, в который я недавно искал людей.
Спойлер: еще есть шанс залететь
Это https://facelink.cc/ - NoCode платформа для создания видеоворонок, новый способ создать сайт в современном видео формате, это как Tilda+TikTok.
Это реально востребованный продукт, который уже имеет платящих клиентов и заявки от инвесторов.
Его создали основатели MakeTornado (https://www.maketornado.com/) и CallbackHunter, реально крутые ребята, которые реально шарят в венчуре, финансах и бизнесе, и имеют опыт работы в инвест комитетах.
Текущая версия — это MVP и она имеет определенные недостатки, которые не позволяют дать взрывной рост и работать с клиентами корпоративного уровня и масштабироваться до мира.
По-этому сейчас мы расширяем и укомплектовываем команду и делаем highload версию сервиса.
Мы отказались от Elm и делаем фронт на React!
Про стек расскажу:
Back: микросервисы на nestjs, graphql (сейчас переезжаем на tRPC), kafka, redis
Front: React, Typenoscript
- Все это в монорепе на turbo
- Билдиться в Gitlab
- Инфра в кубере с использованием GitOps техник с FluxCD
Cейчас нам нужен крутой React разраб с амбициями гангстера, который понимает, что на работе он не разбогатеет за всю жизнь. И ему не жалко 15-20 часов своего драгоценного времени. Который может пилить фичи просто основываясь на пользовательских историях без детального описания. Который понял, что уперся в потолок и хочет не просто немного подняться, а пробить его
Виджет на сайте:
1. https://geotermo.com
2. https://profg.fit/
3. https://www.fuseservice.com
Как видео-сайт:
4. https://facelink.cc/sgvs7zsyw/
5. https://facelink.cc/6adgsvj38/
6. https://facelink.cc/k777iasww/
7. https://facelink.cc/w5bpdxxwn/
8. https://facelink.cc/p31bxbxmt/
Как инструмент сбора видео-отзывов:
9. https://facelink.cc/hdysetqwh/
10. https://facelink.cc/wdvcgzdo7/
Этот продукт ждут большие бизнесы и блогеры-миллионики. Такой шанс дается очень редко.
Пиши мне в ЛС @bearlogin
#стартап #врывайся
🔥10😁4👍1
😁4
Автоматическое обновление Chrome в Ubuntu
Чот надоело руками обновлять, а не обновлять не получается — чуть что, сразу авторизации везде слетают и прочие оказии...
1. Редактируем файл
#ubuntu #advices
Чот надоело руками обновлять, а не обновлять не получается — чуть что, сразу авторизации везде слетают и прочие оказии...
1. Редактируем файл
sudo nano /etc/apt/sources.list.d/google-chrome.list2. Добавляем туда эту строку
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main3. Скачиваем и добавляем ключ
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo tee /usr/share/keyrings/google-linux-signing-keyring.gpg >/dev/null4. Обновляем список пакетов
sudo apt update5. Устанавливаем Chrome
sudo apt install google-chrome-stableТеперь хром должен обновляться автоматически, но если нет, то посмотрите в сторону unattended-upgrades
#ubuntu #advices
👍1
Что нового в 20 ноде
Из интересного - нативный тест раннер вышел в стейбл, и можно добавлять разрешения на запуск скриптов
https://www.sitepoint.com/node-js-20-new/
#nodejs
Из интересного - нативный тест раннер вышел в стейбл, и можно добавлять разрешения на запуск скриптов
https://www.sitepoint.com/node-js-20-new/
#nodejs
SitePoint
What’s New in Node.js 20
Node.js 20 was released in April 2023. Learn about the new options available to developers with the world's most-used JavaScript runtime.
👍1
Вакансия - Вуй мидл фронт
Мои друзья из https://www.hellride.ru/ ищут middle-frontend разработчика на Vue3.
На беке крутится Laravel. Сам вуй сидит в Laravel Mix.
По скилам - нужна верстка и разработка фронта, навык рефакторинга.
По деньгам - 150-200к рублей. Фултайм, ремоут.
Будет восхитительно, если вы товарищ-фуллстек с опытом работы в Ларе.
Нужно будет развивать основной сайт магазина, а так же другие грядущие проекты компании.
По формату сотрудничества - ИП или самозанятость в идеале, но есть варианты и с оформлением в штат. Есть еще тема с оформлением в IT компанию, но нужно будет подробней тему обсуждать.
Собсно кидайте резюмешки мне в ЛС @bearlogin, а дальше уже направлюна светлый путь.
#vue #вакансия
Мои друзья из https://www.hellride.ru/ ищут middle-frontend разработчика на Vue3.
На беке крутится Laravel. Сам вуй сидит в Laravel Mix.
По скилам - нужна верстка и разработка фронта, навык рефакторинга.
По деньгам - 150-200к рублей. Фултайм, ремоут.
Будет восхитительно, если вы товарищ-фуллстек с опытом работы в Ларе.
Нужно будет развивать основной сайт магазина, а так же другие грядущие проекты компании.
По формату сотрудничества - ИП или самозанятость в идеале, но есть варианты и с оформлением в штат. Есть еще тема с оформлением в IT компанию, но нужно будет подробней тему обсуждать.
Собсно кидайте резюмешки мне в ЛС @bearlogin, а дальше уже направлю
#vue #вакансия
Hellride.ru
Трюковые самокаты: купить трюковой самокат в Москве | Цены трюковых самокатов в интернет магазине Hellride
Если вы хотите купить трюковой самокат, заказать с доставкой детали для самоката, одежду или обувь - вы попали по адресу! Хелрайд - крупнейший скутершоп в России. Мы доставляем не только самики для начинающих, но и трюковые самокаты для продвинутых райдеров…
🔥4👍1
Forwarded from artalog (artalar)
Просто напоминалочка, строки в ЖС могут течь: https://habr.com/ru/articles/449368/
Если интересно как оно под капотом работает, то это rope или что-то похожее, вот понятный коментарий в сурсах V8.
Если интересно как оно под капотом работает, то это rope или что-то похожее, вот понятный коментарий в сурсах V8.
Хабр
Нужно ли чистить строки в JavaScript?
Что? Строки могут быть «грязными»? Да, могут. //.....Какой-то код console.log(typeof str); // string console.log(str.length); // 15 console.log(str); // "ччччччччччччччч" Вы думаете, в этом примере...
🔥6
Быстрый вызов docker ID
Только сегодня узнал фичу, что можно обращаться к контейнеру только по уникальной части ID.
Допустим у нас есть вывод команды ps
#docker #advices #devops
Только сегодня узнал фичу, что можно обращаться к контейнеру только по уникальной части ID.
Допустим у нас есть вывод команды ps
❯ docker ps --format 'table {{.ID}}\t{{.Image}}'
CONTAINER ID IMAGE
514019ccaaff confluentinc/cp-kafka:7.3.0
1d3f566badfa confluentinc/cp-zookeeper:7.3.0
0d300e19077b redis
037b7ad33544 provectuslabs/kafka-ui
dc04138cf5b9 minio/minio:RELEASE.2021-07-30T00-02-00Z
Я хочу посмотреть логи контейнера 514019ccaaffМне достаточно указать только уникальную часть ID, в данном случае хватит даже "5"
docker logs 5При этому у меня 2 контейнера с ведущим нулем, по этому чтобы почитать логи редис, мне нужно уже 2 символа - 0d
#docker #advices #devops
🔥18👍6
Как уменьшить размера образа Docker
1. Используйте маленький базовый образ, например alpine
2. Собирайте в multistage build, чтобы в финальный образ попадали только дистрибутивы
3. В финальных образах используйте distro-less базовые образы, например gcr.io/distroless/nodejs
4. Объединяйте установку зависимостей в одну команду через && и очищайте кеш в ней же
6. Не используйте chown рекурсивно, используйте
8. Утилиты для оптимизации
https://github.com/slimtoolkit/slim
https://github.com/wagoodman/dive
Статьи по теме:
https://www.augmentedmind.de/2022/02/06/optimize-docker-image-size/
https://devopscube.com/reduce-docker-image-size/
1. Используйте маленький базовый образ, например alpine
2. Собирайте в multistage build, чтобы в финальный образ попадали только дистрибутивы
3. В финальных образах используйте distro-less базовые образы, например gcr.io/distroless/nodejs
4. Объединяйте установку зависимостей в одну команду через && и очищайте кеш в ней же
&& apt-get clean && rm -rf /var/lib/apt/lists/*5. При установке зависимостей используйте
--no-install-recommendsили аналоги
6. Не используйте chown рекурсивно, используйте
COPY --chown=7. Используйте .dockerignore файл
8. Утилиты для оптимизации
https://github.com/slimtoolkit/slim
https://github.com/wagoodman/dive
Статьи по теме:
https://www.augmentedmind.de/2022/02/06/optimize-docker-image-size/
https://devopscube.com/reduce-docker-image-size/
🔥8👍2
Масштабирование вебсокет приложений
Неплохая статья, как скейлить websocket приложения.
Спойлер - если сокет клиента подключен к конкретному инстансу на который попал запрос, отправляем сообщение ему напрямую. Если нет - кидаем в PubSub Redis, и инстанс, на котором есть этот клиент получит сообщение и отправит данные клиенту)
Подробней тут
https://shrihariprakash.medium.com/scaling-node-js-chat-apps-to-the-moon-6bc64dd3f638
#backend #redis #websockets
Неплохая статья, как скейлить websocket приложения.
Спойлер - если сокет клиента подключен к конкретному инстансу на который попал запрос, отправляем сообщение ему напрямую. Если нет - кидаем в PubSub Redis, и инстанс, на котором есть этот клиент получит сообщение и отправит данные клиенту)
Подробней тут
https://shrihariprakash.medium.com/scaling-node-js-chat-apps-to-the-moon-6bc64dd3f638
#backend #redis #websockets
Medium
Scaling Node.js Chat Apps to the Moon!
Scaling is not always hard. It seems hard because most times, getting started examples teach you code that doesn’t scale. Let’s build a…
👍4
Dockerd грузит процессор на 100%
Столкнулись сегодня с такой напастью — внезапно начал тормозить сайт. Расследование показало, что dockerd грузит все ядра, при том, что контейнеры жрут мало. Дело оказалось в логах докера.
Нашли такой пост https://forums.docker.com/t/dockerd-using-100-cpu/94962
Помогло переместить логи и перезапустить dockerd
#docker #dockerd #high_cpu_load
Столкнулись сегодня с такой напастью — внезапно начал тормозить сайт. Расследование показало, что dockerd грузит все ядра, при том, что контейнеры жрут мало. Дело оказалось в логах докера.
Нашли такой пост https://forums.docker.com/t/dockerd-using-100-cpu/94962
Помогло переместить логи и перезапустить dockerd
#docker #dockerd #high_cpu_load
👍11
Акция невиданной щедрости!
Так как я на этой неделепрокрастинирую работу горю желанием обучать — стартую акцию на личные консультации - 3500 2000р за час консультации до конца рабочей недели!
Помогу по следующим областям:
- фронту
- беку
- девопсу
- карьерным штукам
- поиску работы
- тестовым заданиям
- рабочим задачам
- ну или можем за жизнь поговорить)
P.S. Верну денег, если не смогу помочь, но пока такой опцией никто не пользовался :)
P.P.S Отзывы тут можно почитать https://solvery.io/ru/mentor/bearlogin
Пишете в ЛС @bearlogin описание проблемы, запланируем созвон ;)
#акция #ментор #менторюзаеду
Так как я на этой неделе
Помогу по следующим областям:
- фронту
- беку
- девопсу
- карьерным штукам
- поиску работы
- тестовым заданиям
- рабочим задачам
- ну или можем за жизнь поговорить)
P.S. Верну денег, если не смогу помочь, но пока такой опцией никто не пользовался :)
P.P.S Отзывы тут можно почитать https://solvery.io/ru/mentor/bearlogin
Пишете в ЛС @bearlogin описание проблемы, запланируем созвон ;)
#акция #ментор #менторюзаеду
Solvery.io
Андрей Луговской — наставник на Solvery.io
Помогу прокачать навыки: JavaScript, React, Next.Js, Nuxt.js, Redux, RxJs, Node.js, TypeScript, Jest, Java, DevOps, Docker, Бэкенд, Spring, Microservices, Vue.js, GitlabCI, Redux Saga, Kubernetes, GraphQL, Фронтенд, NestJS
👍7😁1
Большие PR
Каждому, кто делает ревью, нет-нет, да прилетают от некоторых молчаливых товарищей монструозные PR в тысячи строк и пару сотней файлов :)
Что вы делаете в таких случаях? И какие практики и методы используете, чтобы такого не было?
Каждому, кто делает ревью, нет-нет, да прилетают от некоторых молчаливых товарищей монструозные PR в тысячи строк и пару сотней файлов :)
Что вы делаете в таких случаях? И какие практики и методы используете, чтобы такого не было?
Continuous Delivery vs Continuous Deployment
Каверзный вопрос на собеседовании — «в чем отличие между Continuous Deployment и Continuous Delivery?»
Так вот, основное отличие в том, что при delivery измения автоматически попадают на stage и test окружение, а релиз на продакшн запускается руками.
В Continuous Deployment все происходит без вашего участия, если предыдущая часть пайплайна отработала, запускается следующая.
По-этому когда в следующий раз попросите devops сделать ci\cd (или это вы devops и вас просят), сразу уточните, какой CD :)
А какой Continuousты сегодня используется на вашем проекте?
Статьи по теме:
https://www.puppet.com/blog/continuous-delivery-vs-deployment
https://doam.ru/difference_between_continuous_delivery_and_continuous_deployment/
#cicd #devops
Каверзный вопрос на собеседовании — «в чем отличие между Continuous Deployment и Continuous Delivery?»
Так вот, основное отличие в том, что при delivery измения автоматически попадают на stage и test окружение, а релиз на продакшн запускается руками.
В Continuous Deployment все происходит без вашего участия, если предыдущая часть пайплайна отработала, запускается следующая.
По-этому когда в следующий раз попросите devops сделать ci\cd (или это вы devops и вас просят), сразу уточните, какой CD :)
А какой Continuous
Статьи по теме:
https://www.puppet.com/blog/continuous-delivery-vs-deployment
https://doam.ru/difference_between_continuous_delivery_and_continuous_deployment/
#cicd #devops
👍10
React useReducer
Я вижу много кода и часто замечаю, что useReducer незаслуженно обходят вниманием, предпочитая решать все через useState.
Чаще всего это происходит потому, что люди либо не знают про такой хук, либо слышали, но никогда не использовали.
При этом useReducer позволяет писать более читабельный и элегантный код для работы с стейтом компонента. Особенно хорош для сложной логики, но бывает и полезен для простых задач: булевые переключатели, формы и т.д.
Сравните два примера:
Или пример с объектами:
#frontend #react #hooks #state
Я вижу много кода и часто замечаю, что useReducer незаслуженно обходят вниманием, предпочитая решать все через useState.
Чаще всего это происходит потому, что люди либо не знают про такой хук, либо слышали, но никогда не использовали.
При этом useReducer позволяет писать более читабельный и элегантный код для работы с стейтом компонента. Особенно хорош для сложной логики, но бывает и полезен для простых задач: булевые переключатели, формы и т.д.
Сравните два примера:
const [isEnabled, setIsEnabled] = useState(false);С useReducer мы отделяем логику от отображения и делаем код более семантичным.
<button onClick={setIsEnabled(!isEnabled)}>Click Me</button>
...
const [isEnabled, toggle] = useReducer((state) => !state, false);
<button onClick={toggle}>Click Me</button>
Или пример с объектами:
const [user, setUser] = useState({});
return (
<input
onChange={(e) =>
setUser((old) => ({ ...old, name: e.target.value }))
}
value="user.name"
placeholder={"name"}
name={"name"}
/>
);
И вариант с useReducer:const [user, updateUser] = useReducer((oldData, newData) => ({...oldData, ...newData}), {})
return (
<input
onChange={(e) =>
updateUser({ name: e.target.value })
}
value="user.name"
placeholder={"name"}
name={"name"}
/>
);
Сделал сэндбокс поиграться https://codesandbox.io/s/laughing-aryabhata-c9w89m?file=/src/App.js#frontend #react #hooks #state
CodeSandbox
laughing-aryabhata-c9w89m - CodeSandbox
laughing-aryabhata-c9w89m by m.bearlogin using loader-utils, react, react-dom, react-noscripts
👍6🔥6😢1
Совет дня: Говорите коллегам не "Что за говно вы сделали?!!", а "Вам есть что здесь улучшить..."
#советдня #менеджмент
#советдня #менеджмент
👍15
nuxtjs/proxy модуль
Если при работе с nuxt 2 у вас возникнет желание использовать вот это https://github.com/nuxt-community/proxy-module на проде, просто НЕ ДЕЛАЙТЕ ЭТОГО!
Конечно, если вам нужны внезапные проблемы с нагрузкой, дисконнекты и прочие радости жизни, или просто скучно живется, то вперед :)
Если вам нужен reverse-proxy, то используйте для этого что-то нормальное, типа nginx или traefik.
P.S. Вы вполне можете его использовать при разработке, но лучше сразу dev окружение создавать с учетом проксирования запросов внешним инструментом.
#nuxt #frontend #proxy
Если при работе с nuxt 2 у вас возникнет желание использовать вот это https://github.com/nuxt-community/proxy-module на проде, просто НЕ ДЕЛАЙТЕ ЭТОГО!
Конечно, если вам нужны внезапные проблемы с нагрузкой, дисконнекты и прочие радости жизни, или просто скучно живется, то вперед :)
Если вам нужен reverse-proxy, то используйте для этого что-то нормальное, типа nginx или traefik.
P.S. Вы вполне можете его использовать при разработке, но лучше сразу dev окружение создавать с учетом проксирования запросов внешним инструментом.
#nuxt #frontend #proxy
GitHub
GitHub - nuxt-community/proxy-module: The one-liner node.js http-proxy middleware solution for Nuxt 2 using http-proxy-middleware
The one-liner node.js http-proxy middleware solution for Nuxt 2 using http-proxy-middleware - nuxt-community/proxy-module
👍5
Undo\Redo
Возникла задача придумать решение для реализации undo\redo для данных в Event Sourcing.
Для тех кто не в курсе, Event Sourcing — это архитектурный паттерн, когда мы храним все события, произошедшие с аггрегатом и собираем его состояние применяя эти события последовательно.
Плюс еще момент — события - immutable, т.е. мы не можем их изменять, удалять.
В итоге остановился на решении с стеком Undo.
1. При undo добавляем в стек события, при redo - удаляем из него.
2. Результирующим будет список событий за вычетом добавленных в список Undo.
3. Если порождается новое событие и при этом стек undo не пустой, то сохраняем событие отсечки, которое уже не может откатываться.
Набросал прототип https://codesandbox.io/s/stoic-tdd-lldrp9?file=/src/App.js:495-588
Что думаете? Есть ли какой то кейс, который я не учел?
#eventsourcing #architecture #undoredo
Возникла задача придумать решение для реализации undo\redo для данных в Event Sourcing.
Для тех кто не в курсе, Event Sourcing — это архитектурный паттерн, когда мы храним все события, произошедшие с аггрегатом и собираем его состояние применяя эти события последовательно.
Плюс еще момент — события - immutable, т.е. мы не можем их изменять, удалять.
В итоге остановился на решении с стеком Undo.
1. При undo добавляем в стек события, при redo - удаляем из него.
2. Результирующим будет список событий за вычетом добавленных в список Undo.
3. Если порождается новое событие и при этом стек undo не пустой, то сохраняем событие отсечки, которое уже не может откатываться.
Набросал прототип https://codesandbox.io/s/stoic-tdd-lldrp9?file=/src/App.js:495-588
Что думаете? Есть ли какой то кейс, который я не учел?
#eventsourcing #architecture #undoredo
CodeSandbox
stoic-tdd-lldrp9 - CodeSandbox
stoic-tdd-lldrp9 by m.bearlogin using loader-utils, react, react-dom, react-noscripts
🔥2