Получи случайную криптовалюту за регистрацию!

BEARlogin Dev

Логотип телеграм канала @bearlogin_dev — BEARlogin Dev B
Логотип телеграм канала @bearlogin_dev — BEARlogin Dev
Адрес канала: @bearlogin_dev
Категории: Технологии
Язык: Русский
Количество подписчиков: 655
Описание канала:

Мой блог, в основном пишу про разработку, но бывает и личное. Теги Vue, JS, TypeScript, NodeJS, Nest.Js, Docker, Kubernetes, React, Angular, архитектура
Консультирую по вопросам развития в IT
CTO
@bearlogin

Рейтинги и Отзывы

4.00

2 отзыва

Оценить канал bearlogin_dev и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

0

3 звезд

1

2 звезд

0

1 звезд

0


Последние сообщения

2021-09-29 16:35:12 Анемичная vs богатая модель

В DDD есть понятие модель предметной области. Она отражает модель реального мира и может быть двух видов:
анемичная, это когда модель содержит только структуру данных и богатая - модель содержит бизнес логику, которая мапится с моделью реального мира.

Долгое время я использовал только анемичные модели и считал это правильным, а бизнес логику реализовывал в сервисах. Но погружаясь глубже в концепцию DDD, осознал, что богатая модель - это очень полезная и мощная штука. Так как позволяет по коду понять поведение и свойства модели в реальном мире, а не искать по сервисам.

Сервисы в данном случае превращаются в оркестраторы, которые реализуют use cases.

Покажу на простом примере.

class Order {
shipment: IShipment
pay: IPayment
basket: Basket

constructor(shipment:IShipment, payment:IPayment, basket: Basket) {
this.shipment = shipment
this.payment = payment
this.basket = basket
}


pay() {
this.payment.pay()
}

ship() {
this.shipment.ship()
}
}


class CreateAndPayOrderUseCase {
handle(basket: Basket) {
const order = new Order(
ShipmentFactory::create('DHL'),
basket,
PaymentFactory::create('Stripe')
)
order.pay()
}
}

Таким образом мы видим, что заказ может оплачен и доставлен.

А какую модель выбираете вы?

#архитектура #ddd
37 viewsedited  13:35
Открыть/Комментировать
2021-09-22 16:52:08 Выгорание

Заметил, что даже если ты знаешь все про выгорание, его причины и как с ним справляться, то все равно выгоришь, если есть склонность.

К сожалению у нас нет шкалы в углу экрана "моя энергия" и мы обращаемся с ней, как с кредитной картой - пока есть средства, ты расходуешь не задумываясь. А проблемы начинаются, когда силы внезапно заканчиваются. И их нет даже на то, чтобы отдохнуть. Так как наполняющий реальный отдых и залипание в сериал сильно отличаются по своей эффективности.

Даже если ты работаешь по помидорам, у тебя есть план на день, и на неделю. У тебя на столе лежат "Джедайские техники" и "Сделай это завтра", все равно возникнет такой момент, когда ты скажешь себе "да я вроде не устал, да и знаю как решить эту задачу, не буду прерываться, потом отдохну".

И вот ты уже делаешь коммиты в 3 часа ночи субботы...

Мне справляться с выгоранием помогает психотерапевт, запланированный отдых, и перечитать курс от ТЖ https://journal.tinkoff.ru/pro/burnout/ А как вы справляетесь с этой напастью?
56 viewsedited  13:52
Открыть/Комментировать
2021-09-21 16:02:43 На злобу дня

Мне вот интересно, неужели при текущем уровне технологий Вконтакте не могут отслеживать пользователей, которые фоткаются с оружием и пишут посты, что всех убьют? Или это ок? Или это только работает с оскорблением чувств верующих и власти?
55 views13:02
Открыть/Комментировать
2021-09-04 14:12:13 Self-hosted runners

Обычно в облачных CI\CD есть возможность запускать процессы на self-hosted runners. Это когда ты на любой машине запускаешь образ для определенного сервиса и на нем выполняются определенные шаги pipeline. Это полезно, когда для сборки требуются специфические ресурсы - например GPU, или просто очень мощный процессор. Или когда в проекте очень часто идут билды и просто дорого оплачивать build minutes, так как обычно сервисы не списывают минуты за запуск на вашей машине.

Например в bitbucket pipelines только недавно появились self-hosted runners. https://bitbucket.org/blog/pipelines-runners Пока пощупал на сборке Vue проекта. По скорости сборки выигрыша нет. Планирую сделать запуск selenium тестов на машине с GPU.
83 views11:12
Открыть/Комментировать
2021-08-23 17:08:04 Docker stack и replicated 0/1

Если при деплое стака сервис никак не поднимается, то начать стоит с команды
docker service ls

Так мы увидим сколько реплик есть у сервиса:

back_swoole replicated 0/1

Затем нужно посмотреть список тасок самого сервиса, c флагом —no-trunc для того чтобы увидеть полный текст ошибки.

docker service ps —no-trunc back_swoole

Rejected 2 seconds ago "No such image: back-swoole-05067e0d@sha256:b33e2b25583f4149711e875c7f83b550184e53d01fd640850140563679283d0b"

В данном конкретном случае у нас отвалилась авторизация в docker hub и docker не смог спулить образ :) А слетела она потому что на диске кончилось место. Вот такая вот курица в яйце...
92 viewsedited  14:08
Открыть/Комментировать
2021-08-19 14:32:50 Error: ENOENT: no such file or directory, stat '/vmlinuz.old'

В один прекрасный день, день стал не таким прекрасным, когда я получил эту ошибку при сборке проекта.

Привычный rm -rf node_modules не спасал. Я дико злился и много гуглил, пока не пролистал логи сборки вверх.

This dependency was not found:
* bowser in ./node_modules/my_awesome_package/src/compositions/useBrowser.js

То есть проблема была в том, что в пакете не были установлены зависимости, так как он подключался локально для разработки.

Окей, гугл, но при чем тут /vmzlinuz.old?
Собсно дело в том, что node_js ищет зависимости аж до system root
https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders
А vmlinuz - Linux kernel executable
https://s905060.gitbooks.io/site-reliability-engineer-handbook/content/anatomy_of_the_initrd_and_vmlinuz.html

Судя по гуглу, народ бывает тратит по 2 дня на решение этой задачи, потому что ошибка очень сильно расширяет область поиска с проекта до ядра системы.

А какие были у вас проблемы, решение которых оказывалось не в той области, где вы думали?
96 viewsedited  11:32
Открыть/Комментировать
2021-08-18 12:45:15 Многоуровневая передача свойств в Vue.js

Избегайте передачи свойств вложенным компонентам.
Подумайте о том несчастном джуне, который будет дебажить ваш код.
Если одни и те же данные нужны в больше чем одном компоненте, лучше использовать локальный или глобальный стейт - vuex, или composition api

Подробней тут https://bearlogin.notion.site/Vue-3020c1ff6f404768aa9cadd55f6451f7

#vuejs #советы
68 views09:45
Открыть/Комментировать
2021-08-17 14:30:55
DI и абстракции

При использовании DI будет лучшим выбором определение зависимостей через интерфейсы. Тогда Вам не придется менять код, который использует зависимости.

Например в Nest.JS это можно сделать через Non-class-based provider tokens.

И если у вас поменялась реализация, то будет достаточно просто поменять зависимость в декораторе модуля
#nestjs #di #советы
68 views11:30
Открыть/Комментировать
2021-08-16 19:01:00
Киллер фича Vue Devtools и IDE

Хочу поделится крутым возможностями которую я недавно обнаружил в Vue Devtools

По умолчанию есть возможность из dev tools перейти прямо к Dom компонента в инспекторе Chrome, что уже очень удобно при отладке разметки и стилей. <> Inspect DOM

Но есть еще более восхитительная возможность переходить в код компонента из браузера прямо в IDE. Можно настроить любой редактор (у меня получилось с VSCode и PHPStorm, другие не пробовал)

Обычно работает из коробки в vue-cli, nuxt, но если нет читайте этот док https://devtools.vuejs.org/guide/open-in-editor.html

Так же эта кнопка появляется только если вы выбираете ваш компонент, а не компонент из Vuetify например.

#vue #devtools #советы
67 viewsedited  16:01
Открыть/Комментировать