Задать вопрос
  • По какому принципу работает момент живого соединения в WS?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    За счет чего в WS поддерживается постоянное соединение

    Используют PING-PONG запросы
    скорость работы по WS увеличивается только за счет того, что у нас пропадают рукопожатия?

    Теоретически - да, но судя по бенчмаркам - не особо это и влияет
    Ответ написан
    Комментировать
  • Можно ли в c++ помечать код метками?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Если это нативный C++ - нет. В нем нет такого синтаксиса.
    Если это CLI/C++ (яп для .net), то да
    Ответ написан
    7 комментариев
  • Где можно применить hexagonal architecture?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Чистая архитектура - это просто идея, а не готовая архитектура. Гексагональная - частный случай чистой.
    В блоге Роберта Мартина первыми строками идет:
    Over the last several years we’ve seen a whole range of ideas regarding the architecture of systems. These include:

    Hexagonal Architecture (a.k.a. Ports and Adapters) by Alistair Cockburn and adopted by Steve Freeman, and Nat Pryce in their wonderful book Growing Object Oriented Software
    Onion Architecture by Jeffrey Palermo
    Screaming Architecture from a blog of mine last year
    DCI from James Coplien, and Trygve Reenskaug.
    BCE by Ivar Jacobson from his book Object Oriented Software Engineering: A Use-Case Driven Approach
    Ответ написан
    1 комментарий
  • Ошибка при использование бота?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В файле
    C:\Users\vetements\Desktop\xdesantiago\misc\plugin\KinoPoiskFree.py
    на 9 строке у тебя есть код rt=a.find('a')['href'][:-6] - скорее всего ты ищешь все ссылки и хочешь получить 6 последних из найденных тэгов, которые хранишь в переменной a.
    Загвоздка в том, что ничего в ней не хранится (т.е. None). Проверяй выше, что данные были найдены, т.е. a is not None
    Ответ написан
    Комментировать
  • Как сгруппировать запрос по колонке с булевым значением?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    SELECT * FROM todos GROUP BY user_id, completed;
    Ответ написан
  • Какие шаги в плане инфобеза необходимо пройти для запуска приложения в App Store и Play Market, если приложение работает с ПДн?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Алгоритм, вкратце, следующий:
    1. Создаешь документ "О персональных данных"/"О политике конфиденциальности". В нем говорится что ты о пользователе собираешь (имя, пол, предпочтения в еде (???)) и ДЛЯ ЧЕГО. Последнее важно, т.к. любая собираемая информация должна использоваться для чего-то существенного, нельзя собирать просто так.
    Как создать его - это лучше консультироваться с юристами, т.к. по большей части это бюрократия
    2. Подаешь заявление РКН на становление оператором персональных данных - это статья 22 152 ФЗ
    Отправлять можно разными способами - https://pd.rkn.gov.ru/operators-registry/notificat... .
    Есть варианты:
    - Бумажный - распечатываешь, заполняешь и отправляешь в территориальный орган местный
    - Электронная почта - заполняешь форму и подписываешь усиленной подписью
    - Гос. услуги - то же самое как и 2, но подпись усилиями гос. услуг

    Он делается за месяц (срок - 30 дней) и после этого либо возвращают (ошибки или просто нет условий становлением), либо вносят в список.

    Что касается самого хранения, то главное, чтобы хранились эти данные на территории России. Простое решение - аренда VPS в России и запуск БД там (хотя слышал и про обходные пути) - РКН может прийти и проверить
    Ответ написан
    4 комментария
  • Как начать программировать с использованием DirectX?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    На прямом DirectX отрисовывать - сложно, а учитывая, что опыта нет - самоубийство.
    Рекомендую начать с SDL. Это достаточно простой (проще, чем DirectX) фреймворк для графики. Он может использовать DirectX в качестве бэка.
    Вот тут нашел пример для этой связки
    Ответ написан
    2 комментария
  • Из-за чего ошибка syntax error at or near "$1"?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Потому что нельзя передавать название таблицы в качестве параметра - Оно должно быть указано явно и прямо, а параметризация нужна для ПАРАМЕТРОВ.

    Либо переделывай, либо вот тут вроде есть решение
    Ответ написан
    3 комментария
  • Можно ли такое реализовать с помощью MySQL?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Можно, даже несколькими способами:
    1. Отдельные таблицы с характеристиками по каждому аккаунту. Например, для стима типа
    create table product_steam_info(product_id int, level int, balance double)
    и для телеги соответственно.
    Чтобы получить результат полный - SELECT с JOIN'ом (left join нужен будет)
    2. Все в одной таблице хранишь
    create table products(product_id int, steam_level int, telegram_is_premium boolean)

    Если у кого-то нет телеги или стима, то эти поля просто будут null

    Предлагаю использовать последний вариант, т.к. его проще реализовать и будет быстрее (т.к. локальность данных больше и нет join'ов), но таблица может стать большой слишком когда много типов аккаунтов будет
    Ответ написан
  • Как лучше сохранять результаты логирования приложения NET?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    1. Про NLog давно не слышал - больше про Serilog (стильно, модно, молодежно)
    2. Если это системное какое-нибудь приложение, то лучше используй системный журнал, либо пиши в файл отдельный
    3. Если есть внешний сервер логов (ELK стек, Graylog и т.д.), то отправляй туда (посмотри в сторону агрегаторов логов, )
    4. Если это контейнерное (докер, например) приложение, то логируй в stdout/stderr, а потом собирай логи у самого контейнера. Также, докер можно настроить на формат хранения логов и место хранения (можно локально хранить, а можно и отправлять по сети)

    P.S. фреймворк по большей части не важен, но рекомендую связку Microsoft.Extensions.Logging + Serilog:
    - Первый - предоставляет интерфейс для логирования
    - Второй - бэкэнд логирования
    Ответ написан
    8 комментариев
  • Как создать абстрактную фабрику, не ссылаясь на реализацию?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    В приложении, которое использует Dependency Injection можно выделить 2 "области":
    - Composition Root
    - Остальное приложение

    Composition Root - это место в котором собираются все зависимости воедино. О всех реализациях зависимостей должен знать только он.
    Остальное приложение - это (тафтология) все остальное приложение. Они используют только интерфейсы и другие абстрации.

    Обычно Composition Root - это входная точка приложения. В нем создается эта самая ServiceFactoryImpl (стандартные реализации, из конфигурации могут быть прочитаны флаги, создан в зависимости от платформы и т.д.), а затем как интерфейс IServiceFactory, передается в остальные места.

    Т.е. в коде это будет как-то так
    #include <IServiceFactory.h>
    
    class Sample {
    private:
        IServiceFactory _factory;
    public:
        Sample(IServiceFactory factory): _factory(factory) { }
        DoSomething() { 
            auto service = _factory.CreateService();
            service.MakeStuff();
        }
    }
    
    int main() {
        auto factory = ServiceFactoryImpl(); // Читаем конфигурацию, параметры ОС и др.
        auto sample = Sample(factory);
        sample.DoSomething();
    }
    Ответ написан
    1 комментарий
  • Из-за чего докер контейнер выдает ошибку и как его остановить Resource is still in use?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    тебе просто нужно удалить контейнер, которому примаунчен этот вольюм.
    пока контейнер ОСТАНОВЛЕН все ресурсы за ним еще сохраняются
    Ответ написан
    1 комментарий
  • Как собрать kotlin в docker через gradle?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Когда запускаешь команду сборки, просто пропускай этап тестов - gradle build -x test
    Ответ написан
    2 комментария
  • Как загнать в dictionary key как null?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Напиши обертку
    var dict = new Dictionary<MyNullableInt, string>();
    dict[null] = "hello, world!";
    
    Console.WriteLine(dict[null]); // Output: hello, world!
    
    
    struct MyNullableInt: IEquatable<MyNullableInt>, IEquatable<int?>
    {
        public int? Value { get; set; }
        public bool Equals(MyNullableInt other)
        {
            return other.Value == Value;
        }
    
        public bool Equals(int? other)
        {
            return other == Value;
        }
    
        public static implicit operator MyNullableInt(int? value)
        {
            return new MyNullableInt() {Value = value};
        }
    
        public static implicit operator int?(MyNullableInt value)
        {
            return value.Value;
        }
        
        public override bool Equals(object? obj)
        {
            if (obj is int value)
            {
                return value == Value;
            }
    
            if (obj is MyNullableInt mni)
            {
                return mni.Value == Value;
            }
    
            return false;
        }
    
        public override int GetHashCode()
        {
            return Value.GetHashCode();
        }
    }
    Ответ написан
    3 комментария
  • На сколько сложно создать офлайн генератор иконок?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Самостоятельно создать - крайне сложно.
    За деньги нанять - легко, но придется выложиться крупно.

    Гораздо выгоднее будет просто купить подписку на freepik
    Ответ написан
    Комментировать
  • Найти все css/js кроме минифицированных?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Я бы предложил такой вариант - (?<!\.min)\.\w*$ -
    он ищет все файлы, у которых нет .min до расширения.
    Это более гибкий вариант, но если нужно только css/js, то такой - (css\/.*(?<!\.min)\.css)|((js\/.*(?<!\.min)\.js))$ - надо учитывать, что в js папке может находится css и наоборот (если это критично)
    Ответ написан
    Комментировать
  • Как работают транзакции, уровни изоляции в данном случае?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1) Что будет с запросом UPDATE, если исполнение кода ещё не дошло до этого запроса, оно получается будет ещё доступна для запросов из другого кода?

    Не понял, что имеется ввиду. Но если это про то - "будут ли видны изменения, которые сделаны до вызова этого UPDATE в транзакции", то это зависит от уровня изоляции других транзакций.
    В случае SERIALIZABLE - нет, не увидят.
    2) А если функцию sameFunc запустят много юзеров? Получается КАЖДЫЙ юзер будет ждать завершения предыдущих транзакций от всех остальных юзеров?

    Так как указана SERIALIZABLE, то да:
    - Если конфликтов не будет, т.е. никто не обновлял те же самые записи, то будут ждать
    - Если кто-то одновременно обновил одни и те же данные, то будет конфликт транзакции

    Стоит еще учесть, что если одна и та же запись обновлена одновременно разными транзакциями, то поздняя транзакция просто заблокируется и будет ждать: либо когда первая закоммит - тогда конфликт транзакции, либо первая выполнит откат и ты продолжишь выполнение
    P.S. еще есть таймаут ожидания транзакции

    3) А если все запросы в транзакции взаимодействуют только с полями конкретного юзера, то как это нужно реализовать в транзакциях? Вроде как объект транзакции один — сам node.js, который единожды подключается к БД.

    А вот тут надо разобраться. Зависит от того как ты работаешь с БД.
    Судя по названию ты используешь пул соединений (переменная pool) и каждый раз выполняешь запрос на нем. Я не знаю node.js и фреймворк для БД, который ты используешь, но что-то подсказывает, что на каждый такой .query создается отдельное подключение и выполняется запрос.
    Если да, то этот код работать не будет, т.к. ты постоянно открываешь новое соединение, начинаешь транзакцию или запрос и закрываешь соединение. В этом случае, все начавшиеся транзакции завершатся сразу, а запросы, которые должны работать в транзакции будут выполняться сразу.
    Чтобы все работало корректно - на каждом вызове этого метода открывай новое соединение и работай с ним. Тогда гонки в коде не будет. (Можно еще использовать пул соединений).

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

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Единственный вариант кроме рекурсии - хранимая процедура.
    Ответ написан
  • В чем причина ошибки Docker "Error response from daemon: No such container"?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    То что ты показал - это список образов. Запускается через docker image ls.
    Тебе нужно использовать docker container ps (либо docker ps - одно и то же)
    Ответ написан
    Комментировать