Задать вопрос
  • Для чего нужен слой сервиса без логики?

    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 комментарий
  • Каждый раз создается новый бин. Почему?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    У вас не синглтон.
    Аннотация @RequestScope как раз о том, что бин будет создаваться каждый раз новый в рамках запроса.
    Это, кстати, не отменяет замечание Сергея о прокси-объекте: при создании контроллера внедряется этот самый прокси-объект, а он уже внутри управляет экземплярами LoginProccesor
    Ответ написан
    1 комментарий
  • Почему в Map при добавлении в значение массива, при выводе результата не возвращается массив?

    al_gon
    @al_gon
    [Ljava.lang.String;@6fc7e828 это и есть вывод массива.

    Если хотите красиво, то надо Arrays.toString(permissionId.get("4"));

    Или дополнительно оборачивать объектом с переопределением toString()

    Массив это объект в Java, но у него нет возможности сделать переопределение toString()

    UPDATE:
    permissionId.forEach((k,v)-> System.out.println(String.format("%s:%s", k, Arrays.toString(v))));
    Ответ написан
    8 комментариев
  • Вызов drop в вызове drop?

    bingo347
    @bingo347
    Crazy on performance...
    Почему drop принимает ссылку, а не значение?

    Потому что метод drop трейта Drop вызывается компилятором, каждый раз когда переменная владеющая чем-либо выходит из области видимости. И сам метод drop тут не исключение. То есть если бы self тут был по значению, компилятор был бы обязан его дропнуть в конце функции, что вызвало бы бесконечную рекурсию.

    Причём если вызывать drop() руками
    Функция core::mem::drop никакого отношения к трейту Drop не имеет. Если Вы глянете на её реализацию, то это просто пустая функция, которая принимает аргумент по значению, а он уже дропается на общих основаниях, так как выходит из области видимости в ней.

    Почему сначала вызывается drop для A, а потом для B? По логике drop должен сначала вызываться для полей.
    У Вас неверная логика. В метод трейта Drop приходит ссылка, а значит должна быть гарантия того что данные по ней полностью валидные. Всегда дропается сначала внешняя структура,а затем её поля. Более того компилятор не даст Вам даже мувнуть части структуры имплиментирующей Drop.

    Если очень нужно, то владение из поля можно забрать через std::mem::swap/std::mem::replace/std::mem::take
    Хотя проще это сделать обернув такое поле в Option и забирая владение его методом take
    Ответ написан
    2 комментария
  • Крейт - это программа или библиотека на rust?

    vabka
    @vabka Куратор тега Rust

    Крейт — это программа или библиотека на rust?

    Да. Если крейт содержит функцию main, то это программа. Иначе - библиотека.


    Чем крейт отличается от пакета?

    Пакет - это то что публикуется на crates.io, например.

    Пакет может содержать в себе несколько крейтов.

    А крейт - это единица компиляции
    Ответ написан
    Комментировать
  • Как зарезервировать линки между коммутаторами и маршрутизатором?

    b1ora
    @b1ora Куратор тега MikroTik
    Контакты в профиле
    1. Собрать CRS в MLAG
    2. Подключить по lag к RB1100 в режиме LACP
    3. Подключить по lag к D-Link в режиме LACP
    Ответ написан
    4 комментария
  • Есть ли оборудование с данными функциями?

    @q2digger
    никого не трогаю, починяю примус
    6 комментариев
  • Почему не компилится мавен?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Unsupported class file major version 66
    Тут написано, что 22я джава не поддерживается.
    Попробуйте установить какую-нибудь предыдущую версию.
    Рекомендую пробовать lts версии по порядку: 8, 11, 17, 21
    Ответ написан
    1 комментарий
  • Чем бесплатно мониторить подозрительный трафик сети предприятия?

    @q2digger
    никого не трогаю, починяю примус
    Ответ написан
    Комментировать
  • Как запускать игры на Fedora?

    GavriKos
    @GavriKos
    и вылетает но при этом не какой ошибки не пишет

    Ну вот осваивайте первый навык линуксоида - как получить логи. Можно например из терминала запустить
    Ответ написан
    3 комментария
  • С чего начать создание сервиса бронирования на java?

    @Dementor
    программист, архитектор, аналитик
    Полистайте проекты на тему букинга на гитхабе - наверняка найдете несколько десятков образцов для вдохновения.
    Ответ написан
    Комментировать
  • С чего начать создание сервиса бронирования на java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    99% успеха зависит от того имеешь ли ты вообще опыт разработки веб-приложений во взаимодействии с БД
    например. Какой-либо методички по бронированию не существует. Потому-что все подобные задачи
    по своему уникальны и бизнес как раз хочет иметь всегда решение не похожее на конкурента.
    Поэтому и шаблоны таких решений не очень полезны.
    Ответ написан
    Комментировать
  • С чего начать создание сервиса бронирования на java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Не существует книг по созданию сервисов бронирования, как курсов вождения по поворачиванию налево при езде на север в ВАЗ 2107. Есть учебники по программированию в общем. Если человек программировать умеет, то напишет хоть что.
    Ответ написан
    Комментировать
  • Для чего в микросервисе задается порт 8080 если не используется http?

    xez
    @xez
    TL Junior Roo
    Например, для обслуживания миксросервисной инфраструктуры (типичные эндпоинты /actuator/; /actuator/health; /actuator/info)
    Ответ написан
    1 комментарий
  • Можно ли создать базу данных на одной таблице?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Такие эксперименты были. Лет 5 назад когда был еще жив sql.ru, один человек продвигал
    модель т.н. квинтетов. Это таблица с 5 полями которая полностью описывала любую
    доменную область. Я к сожалению не могу нигде найти следов описания этой системы
    но возможно это оно https://cyclowiki.org/wiki/QDM . Читайте смотрите.

    Второе. В эпоху новых версий DBMS (Oracle/PG/MySQL) когда мы можем использовать
    JSON/XML внутри ячейки, сама идея EAV теряет смысл. Поле атомарно? Атомарно.
    Значит законы реляционной алгебры мы не нарушаем и JSON совершенно легальный
    тип для реляционок. Хотя лет 30 назад его использование было-бы кощунством
    в БД. Но это можно было списать на жесткую экономию ресурсов и чрезмерную
    математичность моделей Бойса-Кодда. Сегодня все используют JSON и нет никаких
    архитектурных доводов против. Поэтому создавайте NoSQL табличку где есть
    key и есть значение в виде либерального типа документа. Как делают MongoDb, CouchDb.
    И если связать их в иерархию то получится вполне себе те-же самые квинтеты.

    Про EAV лучше забудьте. Их любят преподаватели SQL и теоретики. Но практически EAV
    слишком медленно работает чтобы развивать его в бизнес-приложении или в промышленности.
    Мир тяготеет к упрощению. И поэтому JSON - это упрощение EAV. И работает быстрее.
    Ответ написан
    6 комментариев
  • С чего начать изучать разработку приложений под Linux?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если ты хочешь программировать под Linux то тебе нужно знать функции ядра Linux.
    Это так называемые syscalls. Системные вызовы. Работа с файлами. С сокетами.
    С объектами мультизадачности (mutex). Языки могут быть любые но принципы
    будут примерно одинаковые.

    +Надо определиться с доменной областью. Вряд-ли вы будете писать системный софт.
    Системщиков вообще мало и пишут они очень узко. Скорее всего это будет что-то прикладное
    поэтому надо искать прикладные задачи и искать типичный профиль такой прикладной задачи.
    FastCGI приложение например там или ETL процесс или какие-то сетевые штуки. Ищите
    практические задачи. Иначе сам по себе вопрос потеряет смысл.
    Ответ написан
    8 комментариев