Задать вопрос
  • VS code конфлик плагинов под разные проекты?

    @0nkery
    Создайте workspace, сохраните, зайдите на страницу плагина и отключите его для конкретного workspace'а.

    5fa3af95dfcef209934866.jpeg
    Ответ написан
    Комментировать
  • Как сделать микросервисы из вебсокетов?

    @0nkery
    Да, желательно, чтобы у вас была одна точка входа в систему, потому что нормальная настройка вебсокет-шлюза займет немало времени, да и это будет полезно, если вы вдруг решите изменить архитектуру -- добавить сервис C, к примеру. Ваш клиент эти тонкости волновать не должны (в общем случае).

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

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

    Ну и подумайте еще раз -- а так ли нужны вам отдельные сервисы? Может быть, лучше обойтись монолитом?
    Ответ написан
    Комментировать
  • Что меняется в контейнере при использовании docker container create -ti?

    @0nkery
    Туда пробрасывается ввод/вывод из терминала, что позволяет пользоваться шеллом внутри контейнера например.

    По 1 пункту -- контейнер не остановится, пока процесс в нем не остановится.
    По 2 пункту. Необязательно bash -- это может быть любой другой шелл. Команды attach и exec можно выполнять и без предварительного указания ключей -ti.
    Ответ написан
  • Async в async. Есть ли ущерб производительности?

    @0nkery
    Смотря о какой конкретной реализации идет речь. Обычно нет, потому что все это оправляется некому планировщику, который разруливает выполнение подзадач. К тому же, если у вас одна задача внутри другой, это значит, что они просто находятся в зависимости друг от друга, а значит, для планировщика будут просто последовательностью А[внутри] -> А[снаружи].
    Ответ написан
    1 комментарий
  • Есть ли какая-то хорошая практика по интеграции функциональности из независимых библиотек для последующего использования?

    @0nkery
    Вы можете использовать общую шину, подключить туда две сущности: Licensing и Service, а между ними поставить сущность, которая знает о событии LicenceChanged и знает, что при этом событии нужно перезапустить сервисы, а так же, как именно это можно сделать (обращается к Service). Если обращаться к Service по той же шине, то в ситуации, когда Service недоступен (не подключен например), ничего происходить и не будет -- то есть, не надо будет явно обрабатывать кейс с отсутствием Service внутри сущности-обвязки.

    Плюс такого решения -- обвязка не зависит от кода конкретных реализаций License и Service. Строковую типизацию вы можете и не делать, если шина умеет в разные типы сообщений так или иначе -- в крайнем случае, хотя бы сериализацию для событий какую-то можно придумать. К тому же события все равно несут какую-то информацию помимо названия, так что какая-то структура этих событий не помешает. Но здесь я уже увлекся, ибо никаких таких вводных не было. :)

    Я рассуждаю в рамках акторной системы, где такие сценарии мне обдумывать проще, но кажется, что и в C# внутри какого-то другого подхода это реализуемо. :)
    Ответ написан
    Комментировать
  • Что использовать для создания консольного меню средствами терминала?

    @0nkery
    Если хотите программируемое поведение, посмотрите на ncurses -- всякие обвязки на нее есть на разные языки типа Python.
    Ответ написан
    Комментировать
  • Микросервисы при разработке сервера?

    @0nkery
    1. Да, через тот же RabbitMQ вы можете организовать общение ваших микросервисов. Особенно RabbitMQ будет полезен в случае, если вы сможете избежать большого количества прямых запросов к отдельным микросервисам, а сможете представить потоки данных в виде событий и их обработчиков.
    2. Да, будет запущен в отдельном процессе. Это можно назвать параллельными вычислениями. :) Ну и вообще в линуксе разница между отдельным системным процессом и отдельным потоком (thread'ом) внутри одного системного процесса размыта (отличаются у них фактически только параметры создания -- есть ли общая память с какими-то другими потоками исполнения).
    3. Не знаком, но знаю, что многие компании убегают с ноды, потому что не хватает производительности или запутанная модель исполнения.

    Ну и вообще, если вы переживаете насчет производительности, попробуйте что-нибудь более производительное, чем нода: Erlang/Elixir, Go, .NET и так далее.

    Так же попробуйте сначала написать монолитный прототип, а от него плясать в построении микросервисов -- так вы сможете четче понять свою предметную область, данные в ней и операции над ними. А микросервисы -- это скорее средство разделения ответственности в больших командах, чем способ увеличить производительность. В большинстве случаев, думаю, производительность от таких вот микросервисов только падает.
    Ответ написан
    Комментировать
  • Как получить курс валюты за указанную дату?

    @0nkery
    GOOGLEFINANCE("Currency:USDRUB"; "price"; ДАТА(2014;1;1); ДАТА(2014;12;31); "DAILY")
    GOOGLEFINANCE("Currency:USDRUB"; "price"; СЕГОДНЯ()-30; СЕГОДНЯ())
    Ответ написан
    Комментировать
  • Связать телеграмм бота со своим аккаунтом?

    @0nkery
    Бот должен быть в чате, куда ему нужно пересылать сообщения, и иметь разрешение на отправку сообщений. Дальше ваши пользователи присылают боту названия фильмов, код бота так или иначе отбирает нужные сообщения, а дальше пересылает их в нужный чат.

    Если речь о просмотре сообщений в существующем чате, то нужно боту разрешить доступ к ним, а дальше процедура одинаковая.
    Ответ написан
    Комментировать