• Корректно ли использовать глобальные зависимости с конфигами и логгером?

    @galliard
    Самая правильная архетектура - это та, которую легко поддерживать. Если внедрение логгера тебя утомляет, а глобальная функция - нет, то используй глобальную функцию.
    Ответ написан
    Комментировать
  • Как передать ивент из одного компонента в другой?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Если говорить именно о передаче событий, то гуглите, что такое шина событий. Но вообще, стоит подумать, а правда ли оно вам надо. Возможно, ваша задача может быть решена иначе:

    Первый компонент - внутри emit, снаружи обработчик события.

    Второй компонент - внутри watch на параметр, снаружи привязка значения этого параметра (значение обновляется в обработчике события первого компонента); или, внутри метод, снаружи ref (вызываете метод в обработчике события первого компонента).
    Ответ написан
    Комментировать
  • Как подключить статический .js файл к разметке vue.js?

    @iljaGolubev
    Не совсем понятно, что в этих js файлах, когда они должны выполниться, доступны ли по url в браузере, как "собирается" приложение...

    если url {domain}/assets/js/{file}.js доступен, можно подключать в index.html

    если нет,
    Можно так webpack dynamic-expressions-in-import
    или так vite dynamic-import
    Ответ написан
    Комментировать
  • Как замокать зависимость в pytest?

    i229194964
    @i229194964
    Веб разработчик
    import pytest
    from unittest import mock
    
    class B:
        def __init__(self, db_connection):
            self.__db_connection = db_connection
    
    class A:
        def __init__(self, b: B):
            self.__b = b
    
        def do_something(self) -> None:
            pass
    
    @pytest.fixture(scope="module")
    def mock_b(mocker):
        mocker.patch('path.to.B')  # Здесь 'path.to.B' - это путь к классу B, который нужно замокать
        return B(mock.MagicMock())  # Возвращаем экземпляр класса B с мок-объектом для db_connection
    Ответ написан
    Комментировать
  • Как переслать сообщения из одной очереди в другую?

    @yarkin
    1) Если "не получается обработать" это котролируемый процесс, то можно использовать команды basic.reject или basic.nack с флагом requeue=true, чтобы сообщение попало обратно в рабочую очередь.
    2) Можно использовать тот же механизм DLX на очереди с ошибками вместе, например, с TTL. Сообщение попадает в очередь ошибок, лежит там, папример, 10 минут, а потом обратно перекидывается в рабочую очередь.
    Ответ написан
    Комментировать
  • Какие существуют источники информации с хорошими практиками advanced уровня по Go?

    @dcaraxes
    meme engineer
    На самом деле много хороих ресурсов есть. Из них отмечу следующие:
    YouTube -канал Николая Тузова https://www.youtube.com/@nikolay_tuzov, много качественно разобранных тем про устройство структур данных языка, GoGetPodcast, в которых частенько фигурирует Даниил Подольский, автор статьи https://habr.com/ru/company/oleg-bunin/blog/521582/

    Книга Михаила Цукалоса - https://www.piter.com/collection/all/product/golan...

    Style-guide с best practices от Uber - https://github.com/uber-go/guide
    Ответ написан
    Комментировать
  • Как сохранить объект на весь срок жизни приложения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Безотносительно фреймворков. В любом приложении есть точка входа. Enty point. Или еще ее называет main - функция. Вот добавь туда конструирование объекта объекта и все.
    Ответ написан
    Комментировать
  • Как правильно создать глобальный контейнер?

    @GofMan33333
    Вы можете создать класс, который будет хранить состояние ресурсов и предоставлять к нему доступ через свойства или методы. Вам может потребоваться реализовать синглтон-паттерн, чтобы обеспечить, что экземпляр этого класса существует только в одном экземпляре на всем протяжении существования приложения. Также вам может потребоваться защитить состояние ресурсов от неправильного использования, реализовав некоторые методы для доступа к ресурсам.

    В качестве примера:

    from threading import Lock
    
    class ResourceContainer:
        _instance = None
        _lock = Lock()
    
        def __new__(cls):
            with cls._lock:
                if cls._instance is None:
                    cls._instance = super().__new__(cls)
            return cls._instance
    
        def __init__(self):
            self._db_connection = None
            self._message_broker_connection = None
            self._config = {}
    
        def get_db_connection(self):
            return self._db_connection
    
        def set_db_connection(self, connection):
            self._db_connection = connection
    
        def get_message_broker_connection(self):
            return self._message_broker_connection
    
        def set_message_broker_connection(self, connection):
            self._message_broker_connection = connection
    
        def get_config(self):
            return self._config
    
        def set_config(self, config):
            self._config = config


    В этом примере создается класс ResourceContainer, который реализует синглтон-паттерн с помощью метода __new__ и мьютекса _lock. Он хранит состояние ресурсов (подключение к БД, подключение к брокеру сообщений, конфигурация) и предоставляет к ним доступ через методы get_* и set_*.

    Другие модули или функции могут получить доступ к экземпляру ResourceContainer так:

    def foo():
        container = ResourceContainer()
        db_conn = container.get_db_connection()
        # use db_conn
    
    def bar():
        container = ResourceContainer()
        config = container.get_config()
        # use config


    Обратите внимание, что каждый раз при вызове ResourceContainer() будет возвращаться один и тот же экземпляр, таким образом состояние ресурсов будет сохраняться на всем протяжении существования приложения.
    Ответ написан
    Комментировать
  • Нормально ли объединять сущности по паттернам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да можно. Но обычно объединение идет по модулям приложения. Это упрощает процесс релиза. Например если меняется что-то в модуле работы с физ-лицами - то в релиз должен пойти в лучшем случае 1 артифакт. В худшем случае тебе придется релизить сразу все модули а это хлопотно.
    Ответ написан
    Комментировать
  • Нормально ли объединять сущности по паттернам?

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    По домену, внутри домена по паттернам.
    Shop
    -- Factory
    -- -- ...
    -- Proxy
    -- -- ...
    Messenger
    -- Factory
    -- -- ...


    Хотя, конечно есть паттерны которые лежат вне доменной области, например, Адаптер. Он должен находиться на отдельном слое.
    Ответ написан
    7 комментариев
  • Нормально ли создавать множество очередей на один и тот же ивент?

    @yarkin
    Да, нормально, очередь запускается для потребителя (пула потребителей). Для публикующей стороны создаются обменники.
    Ответ написан
    Комментировать
  • Почему анонимная функция не замыкается на лексическое окружения метода класса?

    ddv88
    @ddv88
    Binance Futures
    Вкратце.
    downloadAll (links) {
            let _this = this;
            for (const link of links) {
                setTimeout(function() { _this.printer(link) }, 1000); 
            }
    Ответ написан
    Комментировать
  • Почему анонимная функция не замыкается на лексическое окружения метода класса?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Вы не нашли, видимо, потому, что намудрили с терминологией.
    А так в любом учебнике написано, что в «обычной» функции this резолвится на этапе вызова, а к стрелочной прибивается гвоздями из контекста на этапе её определения.
    В общем: this ведёт себя особым образом и на него принципы замыкания не распространяются.
    Ответ написан
    5 комментариев
  • Зачем программисту работать на кого-то?

    В жизни всё просто... мечта, ресурсы, корабль, плывешь.

    0) Нет мечты - не трать время, читай пункт 4
    1) Есть мечта, нет корабля, есть ресурсы - покупаешь, строишь, набираешь команду.
    2) Ресурсы ограничены - гребешь на лодке сам. Ресурсы пополняешь из халявных источников или подфрилансиваешь по-пути. Заражаешь мечтой других, желательно с ресурсами... но и дополнительные руки в лодке тоже лишними не будут ))
    3) Ресурсов нет или грести на лодке медленно и долго... устраиваешься работать на корабль, который везёт к мечте кого-то другого, но примерно в том же направлении. Заодно набираешься опыта, смотришь как всё устроено, копишь ресурсы, ищешь единомышленников. Как только курсы кардинально разошлись - переходишь на другой. Если скопились достаточные ресурсы, переходишь на пункт 1. Если попутные корабли закончились, переходишь на пункт 2.

    4) Нет мечты... плаваешь в свое удовольствие, куда везут. Заработал - отложил на будущую мечту или старость, остальное спустил в порту... или спустил всё и поплыл дальше )))
    Ответ написан
    Комментировать
  • Как определить, в какой ситуации оптимальнее использовать подзапросы, а не соединения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут нечего думать. Смотрите что показывает explain plan и меряйте время отклика.

    SQL как язык - это чистая теория. То есть известен результат но неизвестно каким способом конкретная dbms его достигает. Операция explain будет зависеть от выбора dbms (Oracle, Postgres e.t.c) и будет по разному показывать реализацию алгоритма выборки для каждого select.

    Спрогнозировать как будет выглядеть план сложно. Даже разные версии Oracle к примеру могут показать разный план на одном тексте запроса.
    Ответ написан
    Комментировать
  • Использование staticmethod в Python это плохая практика?

    aryeh
    @aryeh
    Молод (душой) и приятен в общении :-)
    в такой ситуации статический метод предпочтительнее глобальной функции. имхо.
    Ответ написан
    Комментировать
  • Использование staticmethod в Python это плохая практика?

    iggor-markin
    @iggor-markin
    Python Developer
    Вы не задаёте вопросов в этой заметке, поэтому просто прокомментирую. Зло — это когда программист делает какие-то вещи необдуманно. От балды. У вас же есть задача и вы решаете её доступным, понятным и удобным способом. Главная мысль уже описана вами же:
    существуют ситуации, когда в бизнес-логике возникает необходимость
    Ответ написан
    Комментировать
  • Почему Equals не сравнивает объекты?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    По умолчанию Equals сравнивает по ссылкам. По тому даже сравнение абсолютно идентичных, но разных объектов в результате даст false.

    Чтобы это изменить, тебе нужно самостоятельно переопределить метод Equals в классах Client, Organization, и Person.
    Ответ написан
    Комментировать
  • Насколько актуально создание сайтов под продажу ссылок?

    Grinvind
    @Grinvind
    Помогаю увеличивать трафик с поисковых систем
    Если под бурж, то имеет смысл. Бирж немного, но они есть. С ценами можно ознакомиться, например, здесь https://collaborator.pro/
    Ответ написан
    Комментировать