All streams
Search
Write a publication
Pull to refresh
27
0.5

User

Send message
Есть подозрение, что тут просто пропущена запятая и должно быть «памяти, CPU и загруженность диска».
Работа с бинами — это специфика IoC

Если надо тестировать поведение одного конкретного бина зачем вообще поднимать контейнер? В чём проблема создавать его в тесте вручную?

И потом, а где тогда хранить mock-бины? В src/test/java не пойдёт, потому что модифицированное поведение нам нужно не в тестах, а в обычном режиме работы приложения.

Именно в src/test/… и хранить, если мы говорим про тесты. А вот для чего нужно модифицированное поведение не в тестах, я слабо себе представляю. Вы прям полностью приложение собираетесь поднимать? Тогда это уже интеграционные тесты, которые лучше вообще в отдельный артефакт выделить.
Только вот этот метод доступен только с 12 версии, а многие сидят на LTS-релизах. И в этом случае, более подходящим выглядит этот метод.

Самурай без меча подобен самураю с мечом только без меча. :)

По описанию больше похоже на распределённый монолит, чем на нормально спроектированные микросервисы.
Справедливости ради, стоит уточнить, что не через EntityManager, а через его конкретную имплементацию Session, если говорить о Hibernate. Вот у неё есть замечательный метод.
Псевдокод
doSomething(int value) {
value = 321;
}

value = 123;
println(value);

doSomething(value);
println(value);

Если значение в функцию doSomething() будет передаваться по ссылке, то вывод будет следующим
123
321

Вот, вставляйте ссылку на соответствующий раздел между корпоративной рекламой вместо перевода очередной бесполезной статьи.
перед select-ом второй объект автоматически сохраняется, даже если он неправильный

А нужно всего лишь сконфигурировать FlushModeType.
А каким образом результат этого
// better
notifications
    .filter(isOpen)
    .filter(isLang)

коррелирует с результатом этого
// the best
compose(
    isLang,
    isOpen
)(notifications)

?

Судя по первому куску, функции isLang и isOpen, принимают элемент массива и возвращают какой-то результат, а во втором куске функции соединили в одну и в результирующую функцию передали аргументом массив целиком.

Тут либо должно быть

notifications.filter(compose(
    isLang,
    isOpen
))

либо compose не просто склеивает несколько функций в одну, но и добавляет неочевидное поведение в результирующую функцию, в данном случае в виде фильтрации элементов переданного аргументом массива.
И ещё, по-моему, не очень хорошая идея перепаковывать LGPL-зависимость в свой fat-jar, потому как одним из условий лицензии является возможность обновления этой библиотеки пользователем, а сделать это без пересборки fat-jar-а вряд ли получится без костылей.
Потому советую подумать над дистрибуцией приложения, раз уж предполагается его распространение через sourceforge.
Запускать потоки вручную — плохо. Для этого лучше использовать Executor. В данном случае, думаю, будет достаточно пула из двух потоков.

InputStream-ы после воспроизведения не закрываются, что так же не есть хорошо.
У gRPC отсутствует главный плюс json-а — человекочитаемое сообщение.

Скорость — это, конечно, хорошо, но только до первых разборок, почему пришедший массив бинарных данных не был корректно распознан.
lany, именно это я и имел ввиду, говоря о стандарте JavaBeans.
Скорее всего, имелся ввиду стандарт именования JavaBeans, на который завязаны многие фреймворки и утилиты.

И, да, вызов метода через рефлексию — это низкоуровневый костыль. Иногда удобный, но всё-таки костыль.

Однозначно нужна только в одном классе (поэтому private). А отладить ее нужно на разных входных данных.

Вынести в отдельный package-private класс с package-private же методом парсинга/расчёта который обложить тестами. В изначальном приватном методе, используя экземпляр этого класса, вызвать расчёт. Экземпляр можно создавать прямо внутри приватного метода.


Если совсем упарываться, то package-private класс сделать внутренним для исходного.


А вообще приватные методы нужно тестировать посредством тестирования публичных, их использующих.

Проблема в том, предлагать могут и на 100% больше. Какие гарантии, что предложенные условия будут соблюдать?

Хотя, конечно, каждый решает для себя сам, готов ли он принять такие риски.
А какой процент работников не junior-уровня согласны работать «в серую»?
Join<Object, Object> join = root.join(path[0]);

И вот тут-то всё и сломается, как только нужно будет фильтровать по нескольким полям вложенной сущности. Чтобы понять в чём проблема, достаточно глянуть на запросы, генерируемые такой спекой.
Как фиксить
Нужен контекст, хранящий предыдущие join-ы сущности.

Information

Rating
1,986-th
Location
Омск, Омская обл., Россия
Registered
Activity