• Как использовать DDD?

    @EvgeniiR
    https://github.com/EvgeniiR
    Пусть статья и комментарии будут разными агрегатами. У комментариев будет свой домен.

    Можно в контексте комментариев сделать свой класс статьи( Article ). Он даже не будет сущностью:
    class Article {
      private UUID id;
      
      private CommentsRepository comments;
      
      ...
      
      public void function addComment(commentData: commentData) {
        this.coments.add(new Comment(this.id, commentData));
      }
    }


    В контексте комментариев не обязательно нужна статья - нужен только её идентификатор.
    Также в контексте комментариев вовсе не нужны данные пользователя - только его идентификатор. Идентификаторы достаточно стабильная информация чтобы не бояться их шарить.

    И да, в данном случае мы имеем дело просто с декомпозицией системы, к реальному DDD это мало отношения имеет, потому что domain-driven-design, он domain-driven за счёт того что конексты обсуждаются с бизнесом, а не придумываются разработчиком, в данном случае мы просто берём оттуда немножко терминологии потому что она уже стала довольно общей.
    Ответ написан
    2 комментария
  • Как поднять несколько прокси серверов на одной машине?

    Ziptar
    @Ziptar
    Дилетант широкого профиля
    1. Как удобно - так и разруливайте. В общем случае провайдер просто маршрутизирует ваши ip к вам. Если есть какие-то отдельные заморочки с выделением адресов у конкретного провайдера - инструкции надо запрашивать у этого конкретного провайдера.
    2. Когда речь идёт о сетях - ограничений много не бывает ^^
    3. Провайдер покупает пул адресов у IANA и предоставляет их своим клиентам.
    4. Для начала, ваш домашний провайдер, скорее всего, шлёт вас ко всем чертям. А вообще да, множество адресов можно и через один шнур.
    Ответ написан
    Комментировать
  • Можно ли использовать видеокарту другого компа в этой же локальной сети?

    nidalee
    @nidalee
    Нет, только отправить задание просчета выходного файла на ПК.
    Ответ написан
    Комментировать
  • Можете дать пару ответов про Event Sourcing?

    Robur
    @Robur
    Знаю больше чем это необходимо
    1) решается по разному, в идеале - все созданные ивенты немутабельные и лежат в базе вечно. Это позволяет избежать кучи проблем. То есть при изменении надо создавать event v2. Но - это только на несовместимые изменение, добавление поля обычно можно сделать совместимым. Код который будет работать с этим полем будет работать должен учитывать что description может быть а может и нет. Старый код который работал без description - будет работать как работал и останется без изменений.

    Чаще всего достаточно добавить новые ивенты для новых вещей. Например раньше были аггрегаты без description, теперь появилось это поле, это значит что появились какие-то операции над этим полем и вы можете добавить ивент DescriptionAdded вместо того чтобы менять event создания.
    Однако я встречал статьи о том что люди переписывали историю ивентов для поддержки нового формата - возможно в каких-то случаях это действительно более оптимально. Не делал, подводных камней не знаю.

    2) создавать "исправляющие" ивенты. например ваш баг добавил всем к дню рождения лишний день при создании пользователей - создаете еще ивенты которые отнимают этот день.

    3) Зависиот от реализации стора, но читать все ивенты из стора чтобы их пофильтровать в памяти в любом случае подход так себе. Реальное приложение при таком подходе загнется крайне быстро.
    Для таких вещей используются проекции - когда из ивентов вы строите нужную модель в какой-то удобной форме и делаете запросы туда.

    например храните в SQL список todo на текущий момент, со всеми ивентами и просто делаете select * from todo.
    ну или хотя бы делаете таблицу со всеми create ивентами чтобы читать не 50 миллионов и фильтровать а сразу получить список аггрегатов одним запросом.
    Тут eventual consisntency встает в полный рост.
    Ответ написан
    2 комментария
  • Как развернуть криптовалюту на azure/сервер?

    @HiMiC
    Покупаешь VDS/VPS не менее 2gb оперативки
    размер HDD(SSD) больше с запасом чем: Blockchain Size (Dogecoin database size) = 38.28 GB

    Потом устанавливаешь по инструкции: https://github.com/dogecoin/dogecoin/blob/master/d...
    Дожидаешься синхронизации блокчейна
    Подключаешься к RPC API заданному в конфиге и управляешь своим кошельком
    Ответ написан
    Комментировать
  • Concurrency в работе с кэшем?

    2ord
    @2ord
    Не специалист по concurrency, однако считаю, что само изменение баланса не стоит выполнять конкурентно.
    Думаю, стоит класть задачи по изменению баланса в очередь и чтобы у очереди было множество параллельных обработчиков. Таким образом, за каждое изменения баланса будет отвечать лишь один обработчик.
    Ответ написан
    Комментировать
  • Можете оценить уровень кода?

    ApeCoder
    @ApeCoder
    Я бы попросил привести тесты к виду, в котором требования в ТЗ. Например как подписаться на rss фид после чего загрузить его содержимое. Соответствии проверить со айтемы попали в фид. Тесты просто проверяют на null возвращаемое значение.

    Я, честно говоря, не понял, может проглядел, где код конверсии rss к общему виду и что надо сделать, чтобы добавить другой формат.

    Есть место исключение перехватывается и ничего с ним не делается
    Ответ написан
    2 комментария
  • Как подружить C# и Java?

    @justslipknot
    Ответ написан
    Комментировать
  • Онлайн курсы, как начать?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    1) есть, куча сервисов для вебинаров
    2) https://vimeo.com/ondemand/startselling

    Но Вы допускаете ошибку, думая что те кто ищут курсы, планируют их купить. Большинство качают с торента.

    Чем Вас не устраивает монетизация от youtube? Можно в довесок patreon.
    Есть каналы по данной тематики с доходом в $10k+ в год (только с рекламы youtube без других средств монетизации видео). Не думаю, что без значительных вложений в рекламу, на курсах можно поднять больше.

    Дайте ссылку на канал свой.
    Ответ написан
  • Как заполнить резюме?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    1. Нет пруфов. У вас блок с местами работы пуст. Ссылку на портфолио на фриланс бирже / на гитхаб, да просто ссылки на проекты, в которых вы участвовали.
    2. Не дублируйте информацию
    3. Следующее в мусорку:
    в данный момент изучаю ASP .NET MVC.

    Использую шаблоны проектирования...

    Есть опыт работы с файлами: JSON, XML, INI, CSV

    Вот серьезно, вы для них парсеры пишите, или генераторы, или walker или что-то еще?
    мне очень приятно в ней работать с использованием MVVM.

    Ну как бы всем немного побоку, что вам там приятно)) С точки зрения работодателя вы - человек, приносящий прибыль.

    4. Вот это расписывайте подробно, что где и как
    Проекты были разные: парсеры, боты, анализаторы данных, работа с данными, контролы, работа с изображениями (распознание).


    5. Ну нэнада так!
    ну а в данный моменты делаю сайт
    Ответ написан
    5 комментариев
  • Разработка сервера под игру, с чего начать?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Есть к примеру игра GTA SA я так понимаю сторонние разработчики сделали клиент

    Не совсем так. Любая многопользовательская игра состоит из двух частей - клиентской и серверной, и они не работают друг без друга (бывают бессерверные игры, но и в таких случаях обычно один из клиентов становится сервером, так работает и в Doom/Quake/UT). В GTA и клиент, и сервер сделали Rockstar Games, а не отдельные разработчики. И даже - больше, Rockstar Games постарались сделать так, чтобы спрятать протокол взаимодействия - чтобы хакеры и крякеры не взламывали игру, получая игровые преимущества неигровыми способами. "Сделать сервер GTA", с которым заработает клиент GTA, не получится, по крайней мере, цена такой разработки будет сопоставима с ценой работы над GTA (которая стоила десятки миллионов долларов).

    То, что может сторонний разработчик, это сделать моды для готового сервера, используя те инструменты, которые разработчик предложил, либо пытаясь "грабить" протокол взаимодействия. Моды бывают серверными и клиентскими, и возможны только в том случае, если у вас есть доступ к компьютеру, на котором запущен сервер и клиент (клиент у вас всегда есть, так и делают большинство модов).

    К примеру сделать сервер майнкрафт не состовляет проблем.

    Майнкрафт заметно проще, чем GTA. Хотя бы потому, что майнкрафт сделал один человек, а GTA сделали десятки программистов. И вот для майнкрафта можно сделать свой сервер,а не мод (хотя и моды к нему тоже есть). Как пример, отличная статья.

    Скачал, настроил, запустил

    "Скачал, настроил, запустил" - это не "разработка сервера", это взял то, что уже разработал кто-то.

    P.S. Всё написанное - имхо. Я не любитель GTA и не знаю рынка неофициальных серверов GTA, только знаю, что такие есть (вроде как). Но лично я считаю, что вряд ли кто-то сможет написать сервер, если не будет либо его исходников (украсть), либо разработчики сделают инструменты для разработки модов.
    Ответ написан
    2 комментария