• @Bean в @Configuration и @Component. Разница?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Обычно с помощью @Bean создают объекты, которые требуют дополнительной настройки. Часто это какие-то компоненты из библиотек, например, http клиенты, пулы подключений и т.д.
    @Component и @Service используют обычно, когда ничего особенного при создании объекта не требуется.
    Ответ написан
    Комментировать
  • Docker соединяет frontend и backend?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Можно, но не нужно.
    Суть докера в том, чтобы все сервисы были отдельно. Соответственно, отдельный nginx, back, db, front и т.д.
    Ответ написан
    Комментировать
  • Docker засоряет папку Temp вплоть до 80 гб, что делать?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    docker system prune --all
    Это должно помочь
    Ответ написан
    Комментировать
  • Как обойти блокировку заблокированных сервисов в Туркменистане?

    @Drno
    Переехать. Туркменистан продолжает блокировать все VPN сервера, которые находит. И будет продолжать это делать, пока не останется только "белый список" адресов \ сайтов.
    Т.к. там авторитарное правительство, которому плевать на своё население. Они не заинтересованы чтобы их население вышло в интернет, и поняло насколько у них всё плохо))

    Поэтому либо находить новые сервера \ VPN сервисы, либо переезд
    Ответ написан
    Комментировать
  • Стоит ли брать Steam Deck как основной игровой девайс?

    Зависит от того, во что ты играешь.
    Steam deck - действительно крутой девайс, но:
    1. Никаких соревновательных игр на нём нет, кроме CS и доты. Для игр в них тебе нужен будет монитор, клавиатура, и мышь.
    2. Не все игры будут работать на нём.
    3. В тяжёлые игры будет играть тяжело. Например вот недавно попробовал поиграть в BG3 - в принципе запускается и играется, но сильно греется.

    По тому, если у тебя нет ПК - лучше попробуй собрать ПК, если для тебя портативность не является решающим фактором.
    Также можешь посмотреть на switch - там есть мутиплеер и есть свои эксклюзивы.
    Ответ написан
    1 комментарий
  • Расскажите, что это за ошибка и как ее исправить?

    gavrilovegor519
    @gavrilovegor519
    Обнови JDK до 17. Да и скоро выйдет JDK 21 (в сентябре 2023 года).
    Ответ написан
    Комментировать
  • Расскажите, что это за ошибка и как ее исправить?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Похоже, у вас версия java до 17 :

    ...
    
        /**
         * The modifier {@code sealed}
         * @since 17
         */
        SEALED,
    
    
    ...
    Ответ написан
    2 комментария
  • Как изменить структуру кода?

    vabka
    @vabka Куратор тега Rust
    Нет, нельзя. Модули в Rust оперируют функциями/типами/трейтами, но не отдельными кусками кода.
    Ты можешь вынести функции f1 и f2 в отдельные файлы:

    main.rs
    mod m01;
    mod m02;
    mod m03;
    
    fn main() {
        m01::f1();
        m02::f2();
        let (i, p) = m03::f3();
        println!("i = {:?}", i);
        println!("p = {:?}", p);
    }


    m01.rs
    pub fn f1() {
     let num: u8 = 12;
     println!("num = {:?}", num);
    }


    m03.rs
    pub fn f2() {
     let s: String = "abc".to_string();
     println!("s = {:?}", s);
    }


    В случае m03 ты можешь попробовать сделать функцию, которая будет возвращать значения переменных i и p:
    pub fn f3() -> (u8, String) {
      let i: u8 = 88;
      let p: String = "xyz".to_string();
      (i, p)
    }


    PS: Я уже было хотел предложить макрос вида:
    macro_rules! f4 {
      () => {
        let i: u8 = 88;
        let p: String = "xyz".to_string();
      }
    }

    Но он работать не будет, ибо гигиена.

    Но можно сделать так:
    macro_rules! f4 {
      ($a: ident, $b: ident) => {
        let $a: u8 = 88;
        let $b: String = "xyz".to_string();
      }
    }
    
    fn main() {
        f4!(i, p);
        println!("{} {}", i, p);
    }


    PPS: ну и ещё есть макрос include!, который буквально решает твою задачу - вставить кусок кода из файла, но его я не советую использовать.
    Ответ написан
    2 комментария
  • Что то странно работает макрос в rust. Кому обращаться?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ошибку вызывает то, что вы смотрите ютуб и спрашиваете ChatGPT. Прочитайте лучше учебник для начала, а потом можно будет и до документации по макросам добраться.
    Ответ написан
    Комментировать
  • Как обойти размер файла и хеш? Как сделать чит?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Чтоб подогнать файл под хеш надо сначала знать алгоритм хеширования.

    А вообще - ты мелкий хулиган :) Найди себе нормальную работу лучше.
    Ответ написан
    4 комментария
  • Оператор моб связи фиксирует местоположение абонента даже если не совершается звонков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Да. Если брать абонентов А и Б то мобильный оператов всегда знает их положение с точностью
    до базовой станции. В противном случае А не смог бы дозвониться до Б. Радиус действия станции
    может быть от сотен метров до километров. Поэтому о точном местоположении абонента говорить сложно.
    Ответ написан
    Комментировать
  • Вылеты, артефакты, фризы системы. Виноват нищенский БП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    265WATT - это мало для современных ПК. Воспользуйся онлайн-калькуляторами
    для расчета мощности. Там легко. Укажешь свою конфигурацию и все компоненты
    и приложение покажет сколько тебе надо.

    И возьми с запасом хотя-б 15% для других устройств.
    Ответ написан
    1 комментарий
  • Для чего нужна аннотация @Serializable в либах Java/Kotlin?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С точки зрения Java language, аннотации ничего не делают. Они - как каменты в коде. Но они могут быть подсказками для фреймворков которые в compile time, classloader или runtime могут что-то выполнить над кодом. 99%
    это какие-то ORM/JSon подказки которые разъясняют фреймворку что делать. Например @Table(name="emp")
    подсказка JPA то класс относится к таблице emp.

    Ваш вопрос про либы Java/Kotlin слишком общий. Ничего конкретного нельзя сказать. Но по отношению к
    Serializable, можно предположить что это гарантия что класс можно сериализовать во внешнюю память
    (оперативная или диск) и это не нарушит никакой бизнес логики. Например это DTO которая полностью
    самодостаточная. Не все сущности вообще реально сохранить. Некоторые сущности - как орграф опутывают
    всю память Java и сохранять их накладно. Как корневой объект хипа. Дешевле дампнуть всю память чем
    сохранять такие объекты поштучно. Некоторые - имеют связи с внешними ресурсами Files/Sockets и вне контекста они не имеют смысла. Есть ключевые слова языка (transient) которые запрещают сериализацию для полей.
    Есть также проблема версионности для Serializable. Сохраненная структура не трекает ваши изменения
    по коду уже после того как вы что-то сохранили. Грубо говоря это не JSON. Если вставили новое поле - можете
    старый файл и не прочитать. В качестве маркера проблемы там заводят специальное поле типа versionId или
    что-то такое. Просто для детектирования.

    Если вы хотите иметь тотальный контроль над сохранением - то определяйте Externalizable и там будут 2
    метода в которых вы контролируете Output/Input streams и сами пишете что сохранять и читать. А еще
    лучше брать библиотеки Kryo/Protobuf/Avro e.t.c. У них еще и есть оптимизации по скорости и по сжатию.
    Вы к этому придете эволюционным путем если будете писать систему где сохранение во вне - важно.

    Сериализация во внешнюю память это огромная проблема когда мы пытаемся подружить разные
    технологии (32-64 бит целые числа или разный порядок байт в машинном слове). Даже простое
    сохранение даты или строки может быть ошибочным если вы сохранили в Java а пытаетесь читать в C++.
    Нужна 100% бинарная совместимость всех структур. Вот библиотеки Протобуф и Авро
    как раз для этого создавались.
    Ответ написан
    Комментировать
  • Чем отличается ForkJoinPool.execute() от ForkJoinPool.submit()?

    submit возвращает Future, по которой можно отследить статус задачи, а execute - нет.

    Это вроде бы должно быть очевидно из их описания
    Ответ написан
    Комментировать
  • Куда положить dump.sql для автоподнятия БД с нужного дампа Docker?

    @Senture Автор вопроса
    Разобрался.

    Вот мой код:
    version: "2.15.1"
    
    services:
      postgres:
        image: postgres:13.3
        environment:
          POSTGRES_DB: "username"
          POSTGRES_USER: "username"
          POSTGRES_PASSWORD: "username"
          PGDATA: "/var/lib/postgresql/data/pgdata"
        volumes:
          - ./Initer:/docker-entrypoint-initdb.d
          - usr-data:/var/lib/postgresql/data
        ports:
          - "5437:5432"
    
    volumes:
      usr-data:


    В этом случае, нужно создать директорию Initer в корне (где лежит docker-compose.yml) и в нее положить необходимый dump.sql и все работает.

    Важно!: Если папку не создать, она появится автоматически после docker-compose up. Но будет естественно пустой, и даже если сделать down, в папку положить дамп, и поднять приложение (docker-compose up) бэкап уже не накатится, т.к. БД уже была проинициализирована ранее и никакие изменения к ней применяться не будут.

    Прошу прощения за такие глупые вопросы :D
    Ответ написан
    6 комментариев
  • Как исправить нарушение принципа DRY?

    @IRuuy Автор вопроса
    Прикрепил решение
    public Token match(ITokenType expectedToken, int tokenNum) {
        return match(t -> expectedToken == t.get_type(), tokenNum);
    }
    
    public Token match(Class<?> clazz, int tokenNum) {
        return match(t -> clazz.isInstance(t.get_type()), tokenNum);
    }
    
    private Token match(Predicate<Token> predicate, int tokenNum) {
        if(hasToken(_currentTokenNum))
            if (predicate.test(getToken(tokenNum)))
                return getToken(tokenNum);
    
        return null;
    }
    Ответ написан
    Комментировать
  • Почему при сборке compose не видит переменные окружения?

    @khevse
    Опция --env-file должна помочь:
    Ответ написан
    Комментировать
  • Нужен ли маршрутизатор, если у границы стоит сетевой экран?

    @gonzaman1
    Коллеги, чтото вы человека грузанули.
    Расклад для людей задающих такие вопросы.
    1. Пожалуй главное что нужно оценить - кол-во трафика, если у вас полтора землекопа, 2 коммутатора и 3 офиса в туннелях. При этом из внешнего прихода только впн для удаленных сотрудников - железный фаер избыточен.
    Если у вас многоуровневая коммутация с парой сотней вланов и сетевой структурой 10-20 разных офисах\производствах\странах с кучей данных для внешнего доступа железный фаер !!!удешевит!!!(я не ошибся) и обезопасит вашу инфраструктуру. Фаер нужен для разгрузки процессоров коммутаторов в сети.

    Отступление: бум железных фаеров был связан с ограниченными процессорными мощностями и колоссальным ростом трафика в прошлом. Было не выгодно создавать 2-6 процессорную железку и на аппаратном уровне ее обучать понимать обработку трафика. Это сейчас лохушная железка за 150$ может через себя пропустить 10гигабит\с и зароутить его в 20 вланов при этом иметь поднятый фаервол, работать с 10 впн клиентами и резать 25 клиентам на лане скорость соединения по разным конфигам и при этом иметь загруженность процессора 40-50%. А раньше для такого понадобился бы штат в 2 сервера, 4 л3 коммутатора и железный фаер. Я утрирую конечно, но не далек от истины.

    2. Сейчас железный фаер скорее стандартизированное решение для крупных компаний, я недавно настраивал офис крупной международной логистической компании. Так там все просто было: мы закупили и смонтировали схему железный фаер-л3-пое-server . Потом ребята из главного офиса закинули за 15 минут туда готовые конфиги и за пару часов залили на сервер данные. Через 3 условных часа была смонтирована голова офиса на 140 рабочих мест.

    Вывод: Даже для больших компаний с небольшим потоком входящего трафика железка не нужна. Ставишь глухую заглушку на вход, остальной трафик гоняешь по тунелям, клиентов и хосты вырезаешь вланами и строгими правилами маршрутизации. Это кажется очень накладно с точки зрения времени, но это не так. Если подготовить стандартизированные конфиги для определенной марки оборудования, то сможете масштабировать почти до любых размеров свою сеть не прибегая к железным фаерам )))

    Все сказанное не является истиной в последней инстанции ))
    Ответ написан
    3 комментария
  • Почему сайты открываются не с первого раза?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я так понимаю что с какого-то года понятия Интернет больше нету. Есть государства. И каждое из них
    на своей территории ведет свою политику и свое видение Интернета. Вот в таких реалиях
    надо жить и задавать вопрос уже в контексте. И смена DNS может и не быть решением проблемы.
    Ну зарезолвишь ты имя. А по IP адресу еще остануться блокировки а то и по блокам адресов и по целым
    странам.
    Ответ написан
    5 комментариев
  • Как вытащить данные со страницы Binance?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Зачем лазить в binance с черного хода когда там есть официальный API https://www.binance.com/en/binance-api
    И куча коннекторов под все языки написаны.
    Ответ написан
    1 комментарий