Задать вопрос
  • Как записать все найденные слова в массив?

    @Mercury13
    Программист на «си с крестами» и не только
    У вас тут ожидается результат неопределённого размера.
    Лучше использовать динамический список вроде ArrayList.
    Ответ написан
    4 комментария
  • Как использовать все потоки процессора при вычислении числа Фибоначчи в C#?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я вижу следующие пути оптимизации.
    1) Мемоизировать (запомнить в массив) хотя-б первую сотню чисел. Тогда например для 120 чиссла
    все считать не надо и можно делать перемотку вперед. Или мемоизировать с шагом. Тоже экономия.

    2) Можно попробовать считать через золотое сечение (приближенно) если этого достаточно для
    ответа.

    3) Можно отказаться от java в пользу С++/GMP библиотек. Возможно расчет суммы будет быстрее.

    Но вообще фибоначчи действительно не параллелится. В этом главная проблема.
    Ответ написан
    Комментировать
  • Возможно ли сделать систему логирования из ClickHouse, Logstash и Grafana?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Хочу напомнить что такие системы как ClickHouse ориентированы не на одиночные события
    а на стриминг. Тоесть вы должны не просто логгировать а желательно просто потоком лить
    много событий. Батч-режим вставки в кликхаус - это и есть ее оптимальный режим.

    Вставка по 1 строке например раз в несколько секунд с фиксацией - будет не благоприятным
    режимом работы для кликхауса. И наверное с плохим КПД. Подумайте о том что может
    стоит все таки писать логи классическим способом и по истечении времени например
    сбрасывать пачку к аналитические хранилища.
    Ответ написан
  • Как в Maven-проекте собрать код отдельно от ресурсов?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    За упаковку ресурсов отвечает плагин maven-resources-plugin. По умолчанию он включен всегда.
    Он является частью общего конвейера сборки и реагирует на process-resources phase.
    Его наверное можно отключить настройкой этих реакций. Но я не советую. Скорее всего
    вы сломаете логику работы программного продукта.

    Если вы разработчик - создайте отдельн бранч где удалите все ресурсы и попробуйте с ним поработать.

    Если у вас есть jar то вы можете его перепаковать просто удалив ресурсы.
    Ответ написан
    Комментировать
  • Неправильный тип данных Rust?

    vabka
    @vabka Куратор тега Rust
    Мне кажется, тебе достаточно явно написали в сообщении, что тебе пришёл Result, а не str, как того ждёт serde_json.
    Обработай ошибку, достань Message, и из него уже строку доставай.

    Я понимаю, возможно мой вопрос глупый. Но разве сложно рассказать как это делается или дать ссылку на соотвествующие материалы. Спасибо.

    Да пожалуйста) https://doc.rust-lang.org/book/ch09-02-recoverable...
    Ответ написан
  • Возвращение двух типов Rust?

    fenrir1121
    @fenrir1121
    Начни с документации
    В вашем случае достаточно возвращать Result<Client>. А вообще вернуть несколько значений можно при помощи кортежа.
    Ответ написан
    Комментировать
  • Почему вместо 100, по проводу 95?

    @ElxkoT
    Потому что 100 мегабит у вас на канальном уровне. С учётом размера заголовков пакетов и прочих технических накладных расходов в 100мб линк как раз можно впихнуть в районе 94-95мб реальной полезной нагрузки
    Ответ написан
    16 комментариев
  • Возможна ли работа одновременно 3х туннелей Mikrotik с IPSEC шифрованием на 1 провайдере?

    CityCat4
    @CityCat4 Куратор тега VPN
    Дома с переломом ноги
    Все вот это умножить на нуль. IPSec прекрасно работает без городушек - и в режиме микротик-микротик и в режиме микротик-линух и в режиме roadwarrior (виндовый обычно, хотя можно и андроид и линух и микротик клиент с произвольного ip).
    Главное тут будет настроить политики, потому что трафик разруливается политиками (это такой аналог таблицы маршрутизации) - как напишете политики - так и будет.

    Одновременно может работать столько, сколько тянет микротик - у меня вот сейчас четыре поднято - два сеть-сеть, два точка-сеть, 3% загрузки...
    Ответ написан
    4 комментария
  • Почему пакеты дропаются правилом forward drop invalid?

    @agpecam
    У вас асимметричная маршрутизация - принтер идет к 172.31.31.152 через микротик, а 172.31.31.152 идет к принтеру непосредственно с WAN кинетика. Поэтому микротик видит какие-то левые SYN,ACK. Левые потому, что он не видел изначального SYN и, следовательно, SYN,ACKи не принадлежат к какому либо существующему соединению и они invalid
    Ответ написан
    Комментировать
  • Как импортировать модули в Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Если вы используете мавен, то предполагается, что и зависимостями управление тоже будет через мавен.
    Вам нужно деплоить нужные библиотеки в мавен-репозиторий и затягивать их уже как и все остальные зависимости.
    Ответ написан
    Комментировать
  • Оптимально ли написана программа по слиянию строк и созданию новой строки?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Алгоритм, в общем-то оптимален. Но реализация допускает некоторые микро-оптимизации.

    Во-первых, StringBuilder можно указать итоговый размер в конструкторе. Тогда там не будет лишних выделений памяти. Вы же знаете, что там будет сумма двух длин в итоге.
    Во-вторых, основной цикл лучше гнать не до максимальной длины из двух, а до минимальной. Тогда в цикле не надо никаких проверок, что индекс не вышел за границы строки. После цикла надо будет добавить к собираемой строке кусок одной из двух входных строк. Проверьте, какая строка длиннее и добавьте ровно len1-len2 символов с конца. Используйте метод substring(), чтобы получить этот суффикс и сразу передавайте его в append().

    Вторую часть про символы на четных местах тоже можно соптимизировать. Вы знаете длину ответа заранее, инициализируйте StringBuilder с нужной вместимостью.
    На четных местах будет вторая строка. Ну и в конце только какие-то символы через один из второй строки или из первой, в зависимости, какая длинее. Если передавать в функцию не результат работы первой, а 2 строки, то можно сначала append в stringbuilder substring от второй строки, а потом циклом взять нужное количество символов через один из первой или второй строки. Нарисуйте на бумаге несколько случаев, первая строка длиннее второй или наоборот. Длина второй строки четная/нечетная, длина первой четная/нечетная. В каждом из этих случаев будет +-1 где-то в формулах для индексации. Можно это все удачно записать с помощью деления на 2 нацело и остатка от деления на 2.
    Ответ написан
    1 комментарий
  • Стоит ли изучать Java для разработки под Android или лучше сразу приступить к изучению Kotlin?

    @Nel_Bylin
    java джун , ученик
    Можно сразу начать с котлина, особо нечего не потеряешь
    Ответ написан
  • Из-за чего появляется ошибка создания бина Eureka при добавлении зивисимости telegrambots?

    @SuperiorAId Автор вопроса
    Проблема оказалась в том, что  telegrambots-spring-boot-starter использовал Spring Boot ниже 3 версии
    Ответ написан
    1 комментарий
  • У меня есть 2 одинаковых сайта в разных точках мира, как мне сделать, чтобы пользователь заходит на тот сайт, который ближе к нему расположен?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Чтобы это работало без посторонних лиц, вам сначала придётся заиметь provider-independent адреса и начать их анонсировать из разных мест.

    Самый простой способ - прикрыться CDN, который это умеет из коробки, например, Cloudflare.
    Ответ написан
  • Как восстановить конкретную папку на btrfs если нет снапшотов?

    @rPman
    Ты не пробовал гуглить? первый же ответ:
    btrfs restore -v -i /dev/sdaX /path/to/recovery/ --path /path/to/deleted/file
    Ответ написан
    2 комментария
  • Для чего нужен слой сервиса без логики?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Вообще-то тут должен быть маппинг доменной модели, но о нём, видимо, забыли и пытаются сохранить ее в бд непосредственно, и, самое ужасное, восстановить.
    То, что слой есть - похвально, то, что там ничего не происходит (хотя должно) - нет.
    Ответ написан
    8 комментариев
  • Правильно ли использовать Optional только для его map?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    0. Тернарного оператора что-то я тут не вижу.
    1. Ничего не мешает вам сделать промежуточную переменную it, если уж у вас такая сильная тоска по острову в Балтийском заливе:
    var it = getSomething();
    var a = new Class1(it, it, it);

    2. Optional.of - это какой-то исчезающе редкий, вымирающий вид. В нем нет никакого смысла. Используется только Optional.ofNullable.
    а. Конструкция Optional позволяет эффективно бороться с нуллабельными объектами, подразумевая что есть Объект и возможная альтернатива в виде нула.
    б. Если у вас железно, гарантированно объект "non-null", то и Optional не нужен и вообще не понятно, какая у него вторая альтернатива
    3. Неправильно использовать .get() без проверки на null у Optional. Это вывод из п2, вообще-то. Вроде в вашем примере Optional от ненулабельного значения, но смысл это теряет на этапе Optinal.of.
    4. В итоге Optional следует использовать как-то так:
    var a = Optional.ofNullable(getSomething())
                 .map(it -> new Class1(it, it, it))
                 .orElseGet(() -> {
                        // TODO :: implement me
                    });

    Если getSomething железно отдает non-null объект, то вариант 1 будет лучше.
    Ответ написан
    4 комментария
  • Правильно ли вынесение метода проверки в другой сервис для упрощения тестирования?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Рефакторинг должен происходить из соображений чистоты кода и архитектуры.
    Для «упрощения тестирования» ничего никуда переносить не стоит.
    Ответ написан
    2 комментария
  • Правильно ли вынесение метода проверки в другой сервис для упрощения тестирования?

    @Mercury13
    Программист на «си с крестами» и не только
    check1() иногда годится, если проверка многократно выполняется в разных функциях, по принципу «не повторяйся». Например, для const-корректности Си++, или для хитрых интерфейсов, когда есть objectId(i), objectName(i).

    А так зачем: тестирования с виду не упростит, ведь мы должны убедиться, что интерфейс верно реализован и действительно некорректные наборы данных (все или хотя бы некоторые) не проходят.

    UPD. Вынесение РАЗОВОЙ функциональности (если это реакция на некорректные данные, конечно) в отдельную функцию КРАЙНЕ РЕДКО делает код более тестопригодным: может быть, что реакция на некорректности так размыта, что вызов основной функции мало что даст. Может, реакция на некорректности так сложна, что стоило бы её проверить отдельно. Ну ХЗ, в большинстве случаев бессмысленно.

    UPD2. Тестируемость кода — это в первую очередь возможность выделить функциональность для тестирования и не тащить вместе с ней половину программы.
    Ответ написан
    Комментировать
  • Pxe установка AstraLinux нужен ли DHCP?

    @Drno
    DHCP нужен, потому что он должен указать нужный DHCP код и откуда грузиться PXE
    можете сделать это всё на своем уже имеющемся DHCP

    2DHCP не используется в сети, иначе могут быть проблемы
    Ответ написан
    1 комментарий