• Почему я могу обратиться к приватным полям класса в методе main?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Потому что язык это разрешает:

    Otherwise, the member or constructor is declared private, and access is permitted if and only if it occurs within the body of the top level class (§7.6) that encloses the declaration of the member or constructor.

    https://docs.oracle.com/javase/specs/jls/se8/html/...

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

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

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Это не так работает. Фактически внедряется в контроллер не сам бин, а прокси-объект, который в каждом запросе указывает на разный экземпляр LoginProccesor.
    Ответ написан
    3 комментария
  • Где найти гайды по Spring а не Spring Boot?

    xez
    @xez
    TL Junior Roo
    Spring в действии. Шестое издание | Уоллс Крейг
    Spring 5 для профессионалов | Харроп Роб, Шефер Крис
    Ну и "Спринг потрошитель", как по мне, достаточно посмотреть чтобы въехать, а дальше документации хватит.

    Насчет разделения spring и spring boot в разрезе обучения - это вы себе напридумывали.
    Ответ написан
    Комментировать
  • Как сделать авторизацию в Spring Framework без Spring Security?

    enovoselov
    @enovoselov
    Инженер
    Все правильно. Нужно реализовать интерфейс HttpFilter и добавить его в контекст.

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

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

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

    @rPman
    Базы данных не очень эффективны с BLOB-ами, большими объемами данных, вопрос даже не в скорости работы с ними, а в том что инструменты резервного копирования к примеру будут работать значительно медленее, чем если копировать файлы того же объема но размещенные на диске.

    Поэтому вместо хранения файлов, в базе данных размещают способ получения имени файла на диске, иногда это буквально поле с именем файла (например если имя файла такая же полезная информация) а чаще всего это буквально идентификатор с базы данных (число или его hex/base64 представление), иногда это хеш от содержимого (например чтобы эффективно хранить одинаковые файлы) иногда комбинация хеша и имени...

    Тебе нужно будет продумать дополнительную прослойку по указанию места на диске для всего каталога (а их может быть несколько) либо помещая идентификатор каталога либо размещая полный путь к файлу (не рекомендую), либо формируя имя из идентификатора (части его бит) либо и то и другое. Рекомендую по возможности сохранять расширение имени файла для быстрой идентификации его типа для веб сервера (который очень эффективно отдает статику из файлов)

    Причина - большое (десятки тысяч) количество файлов в одном каталоге не совсем удобно в том плане, что многие утилиты резервного копирования (да и просто работа с файлами, получение списка или удаление с помощью bash rm, он до сих пор глючный и тормозит), поэтому вместо хранения файла 031432532341234123.jpeg делать подкаталоги 0314/3253/2341/234123.jpeg заранее расчитав количество уровней от прогнозируемого количества файлов.
    Ответ написан
    1 комментарий
  • Как получить удалённый доступ к http контейнеру?

    @Drno
    Ну либо Вы выносите сервис на внешний IP.
    Либо используете VPN или mesh сеть - например Zerotier
    Ответ написан
    Комментировать
  • Как получить удалённый доступ к http контейнеру?

    2ord
    @2ord
    Есть способ, который подходит только временно. Не для продакшена.
    С агентом Ngrok (обычно доступен в репозиториях) или его альтернативами:
    агент запускается локально и создает тоннель на локально работающий веб-сервер или другой сервис, работающий на определенном порту.
    Контейнер Докера должен пробросить порт приложения. Скажем, порт 3000.
    spoiler

    NAME:
      ngrok - tunnel local ports to public URLs and inspect traffic
    
    USAGE:
      ngrok [command] [flags]
    
    DESCRIPTION: 
      ngrok exposes local networked services behinds NATs and firewalls to the
      public internet over a secure tunnel. Share local websites, build/test
      webhook consumers and self-host personal services.
      Detailed help for each command is available with 'ngrok help <command>'.
      Open http://localhost:4040 for ngrok's web interface to inspect traffic.
    
    Author:
      ngrok - <support@ngrok.com>
    
    TERMS OF SERVICE: https://ngrok.com/tos
    
    EXAMPLES: 
      ngrok http 80                           # secure public URL for port 80 web server
      ngrok http --domain baz.ngrok.dev 8080  # port 8080 available at baz.ngrok.dev
      ngrok http foo.dev:80                   # tunnel to host:port instead of localhost
      ngrok http https://localhost            # expose a local https server
      ngrok tcp 22                            # tunnel arbitrary TCP traffic to port 22
      ngrok tls --domain=foo.com 443          # TLS traffic for foo.com to port 443
      ngrok start foo bar baz                 # start tunnels from the configuration file
    
    COMMANDS:
      api                            use ngrok agent as an api client
      completion                     generates shell completion code for bash or zsh
      config                         update or migrate ngrok's configuration file
      credits                        prints author and licensing information
      diagnose                       diagnose connection issues
      help                           Help about any command
      http                           start an HTTP tunnel
      service                        run and control an ngrok service on a target operating system
      start                          start tunnels by name from the configuration file
      tcp                            start a TCP tunnel
      tls                            start a TLS tunnel
      tunnel                         start a tunnel for use with a tunnel-group backend
      update                         update ngrok to the latest version
      version                        print the version string
    
    OPTIONS:
          --config strings    path to config files; they are merged if multiple
      -h, --help              help for ngrok
          --metadata string   opaque user-defined metadata for the tunnel session
      -v, --version           version for ngrok

    Ответ написан
    Комментировать
  • Возможно ли соединить работающий java код и так же работающий скрипт python?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Самая простая интеграция - это pipe в Unix. Этому методу 100 лет в обед но обычно
    разработчики не помнят о нем.

    java app.jar | python3 app.py

    Из недостатков - это в одну сторону работает. Как MQ.

    Если запускается джоб на java который передает информацию к python-job то можно вызвать через
    ProcessBuilder. Здесь можно проверить код возврата и принять решение о том правильно
    ли Python отработал. Из недостатков - запуск процесса - не очень быстрое событие поэтому
    на высокую частоту не стоит расчитывать.

    Если взаимодействие - более быстрое и сложное типа RPC то тогда java может быть например REST
    клиентом а python - сервером.
    Ответ написан
    Комментировать
  • Возможно ли соединить работающий java код и так же работающий скрипт python?

    Vindicar
    @Vindicar
    RTFM!
    В принципе - конечно, возможно.
    Если один из скриптов запускает другой, через стандартный ввод/вывод.
    Если работаешь под Linux - через unix-сокет.
    Можно организовать общую область памяти через отображение файла на память (но это рискованный трюк, тут лучше использовать как можно более примитивные структуры данных).
    Ну или наиболее прямолинейное (но, возможно, чуточку более медленное) решение - через обычный сетевой сокет.

    Во всех случаях тебе придётся как-то сериализовывать свои данные на стороне отправителя, и десериализовывать на стороне получателя.
    Ответ написан
    1 комментарий
  • Вывести из БД на страницу изображение base64?

    @KingstonKMS
    Может так?
    Ответ написан
    Комментировать
  • Почему цикл for не работает?

    ZhenyaMak
    @ZhenyaMak
    Писать качественный софт? Пфф, это не для меня.
    Потому что i никогда не равен kdn_max??
    Ответ написан
    2 комментария
  • Почему цикл for не работает?

    Lexxtor
    @Lexxtor
    PHP, Yii2, Android
    for(int i = 0; i == kdn_max; i++)
    Значит выполнять цикл пока i == kdn_max а это условие не выпоолняется.
    Наверно ты имел ввиду
    for(int i = 0; i <= kdn_max; i+=0.1)
    Ответ написан
    1 комментарий
  • Как создать exe из jar файла javafx приложения?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    С помощью исходников и Graalvm компиллятора можно собрать выполнимый файл для Java приложений.
    Но надо внимательно читать про стек технологий которые использованы в самом приложении.
    Graal компиллятор не гарантирует поддержку всех модулей Java. Для каждого конкретного случая
    надо смотреть и тестировать на месте.

    https://www.graalvm.org/

    С launch4j я не работал. Я подозреваю что это не компиллятор а просто упаковщик который собирает
    обертку для Java Runtime и нужного артефакта.

    Судя по доке есть опции вывода детальной информации по запуску. Смотрите там https://launch4j.sourceforge.net/docs.html

    --l4j-debug-all
    Ответ написан
    Комментировать
  • Возможно ли автоматически конвертировать большой проект с Java на C++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В C++ и Java разная идиоматика, поэтому если перевести с одного языка на другой не изменяя ничего в программе, результат получится хуже. Если для конвертации использовать даже самый совершенный из существующих на сегодняшний день ИИ, получится вовсе запредельный хлам.
    Ответ написан
    2 комментария
  • Есть ли SDK у метамаск?

    402d
    @402d
    начинал с бейсика на УКНЦ в 1988
    Вот прямо сейчас у себя в проекте скрешиваю java & kotlin.
    Пришлось форкнуть опенсорс на котлине из-за того, что он был слишком правильным.
    Исходная либа кидает в нескольких местах исключения на неправильные исходные (полученные от реального перефирийного устройства) данные.

    build.gradle.kts  проекта пришлось дополнить 
    plugins {
        id("com.android.application") version "8.2.1" apply false
        id("org.jetbrains.kotlin.android") version "1.9.10" apply false
        id("org.jetbrains.kotlin.jvm") version "1.9.0" apply false
    }
    
    в такой же файл приложения
    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
    }
    android {
       ....
        kotlinOptions {
            jvmTarget = "1.8"
        }
      .....
    }
    dependencies {
        implementation("androidx.core:core-ktx:1.12.0")
    }


    либа, которую я форкал изначально предполагала взаимодействие из java
    по коду раскиданы собачка JvmOverloads , JvmField, JvmStatic, set:JvmSynthetic
    Ответ написан
    Комментировать
  • Есть ли SDK у метамаск?

    Если эта библиотека сделана на kotlin jvm, то можно сделать так:
    https://stackoverflow.com/questions/59315911/how-t...

    Добавляешь в зависимости org.jetbrains.kotlin и дальше добавляешь эту библиотеку так, будто бы это была обычная java-библиотека из maven или откуда там.
    Ответ написан
    3 комментария