• Где найти гайды по 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 контейнеру?

    Есть способ, который подходит только временно. Не для продакшена.
    С агентом 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 у метамаск?

    vabka
    @vabka
    Токсичный шарпист
    Если эта библиотека сделана на kotlin jvm, то можно сделать так:
    https://stackoverflow.com/questions/59315911/how-t...

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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Народ тут накинул на вентилятор, попробую раскидать по фактам: Варианта на самом деле 3, но мы сведем к очевидным 2:
    1) Вы ищете первую работу в стеке, из опыта у вас приложение ТуДуЛист и Хеловорлд.
    Такое предложение как минимум подарок, как максимум большая удача. Подарок если вам просто дадут поколупаться в серьезном проекте и покажут как работает команда в целом. Большая удача если при этом у вас будет вменяемый ментор и ревьювер, а кода писать вам дадут много. Для конторы это скорее всего в минус, но если у вас все пойдет норм, то к концу срока вы в любом случае уже будете тянуть на джуна. Даже если после этого вы расстанетесь, опыт штука которая навсегда останется с тобой, в крайнем случае вы в первый месяц можете спокойно свалить, если видите что вам там ничего не светит в плане роста. Короче кейс - "надо брать".

    2) Вы уже работали со стеком, знаете как работать с основными инструментами и работали с проектами посложнее чем в первом варианте.
    Если еще и в конторе с какой-никакой командой, то вообще другой коленкор. В данном случае спокойно отказывайтесь, если вам жалко 3 месяца нахаляву работать. Опять же, неплохо было бы хотя бы узнать что в эти 3 месяца вы будете делать забесплатно, возможно ли перейти сразу к фазе 2 в случае вашей очевидной компетенции и т.д., короче есть смысл разговаривать ртом. Короче кейс - "надо поговорить".

    третий вариант по сути нечто среднее, но опять же сводится к 2 - надо говорить.
    Ответ написан
    3 комментария
  • Как избавляться от ненужных записей в бд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если использовать такие БД как DymanoDb, CosmosDb, Cassandra или кеш Redis, то там сразу
    можно создавать записть с отметкой TTL и указывать сколько времени запись будет актуальна.
    Впоследствии эту отметку можно продлить или сделать живщуей вечно.

    По поводу реляционок типа Postgres.

    В хранении ненужных записей я не вижу проблемы до тех пор пока вы в состоянии такие
    токены идентифицировать и почистить отдельно с помощью джоба который запускается
    раз в сутки например и просто удяляет их по признаку например "состояние ожидания
    ввода числа из СМС". Трекайте это состояние и все будет ОК.
    Ответ написан
    Комментировать
  • В Windows tomcat подключается к MySQL без проблем. Когда переношу проект на удаленный сервер, под управлением Ubuntu - не работает, почему?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    "База работает" - это значит, что вы на Убунте можете сделать mysql -h 127.0.0.1 -u root -p - и вас пустит в консоль с паролем root?

    Вообще, так как вы, уже не делают. "Локально работает" сто лет как означает, что разработчик запускает тот же самый docker-compose.yaml на своём компе - вот тогда имеет смысл говорить о работоспособности. А когда разные ОС, разные версии библиотек и так далее - это баловство. Причина может быть в ста местах.
    Ответ написан
    2 комментария