Задать вопрос
  • Java. Как подключить клиента к серверу через Socket?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) ваш сервер должен быть доступен из интернета, иметь марштутизмруемый ip-адрес.
    2) на вашем комьютере нужно разрешить порт сервера на фаерволе.

    Другими словами, если хотите чтобы подключались к вашему серверу извне, то и размещайте его где нибудь на виртуалке у провайдера виртуальных машин с выделенным IP-адресом.
    Ответ написан
    Комментировать
  • Как war файл вернуть в java приложение?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Если архив (war-файл) упакован без исходников, то только пройти его обратно декомпилятором. Разархивировать его можно утилитой jar. Собственно он из себя представляет простой zip-архив.
    Декомпилировать можно через java-decompiler.github.io
    Ну и обзор по декомпиляторам https://javahungry.blogspot.com/2018/12/8-best-jav...
    Да, при декомпиляции скорее всего потеряются названия переменных. Но это лучше, чем ничего!
    И да, pom.xml придется нарисовать заново!
    Ответ написан
    1 комментарий
  • Почему отваливается локальная сеть?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Никто не упоминает, а зря - проблемы могут быть в простом конфликте IP-адресов из-за плохо настроенного DHCP. И как раз этот случай подходит под втык/выток кабеля, при этом компухтер просто заново получает новый IP-адрес от DHCP-сервера.
    Ну и конечно, могут быть проблемы в проводах (кабели, обжим, коммутаторы и т.д.), плохом качестве и неумелом построении самой сети, драйверах и карточках.
    Как минимум - запускаете терминал (cmd.exe) и смотрите утилитой ipconfig состояние линка. Также смотрите состоятие сетевой карты - там пунктик есть соответствующий. Пингаете ближайшие компухтеры и роутеры.
    Ответ написан
    Комментировать
  • Как запустить web приложение на weblogic?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот, здесь все очень подробно написано - https://dev64.wordpress.com/2012/03/23/simple-serv...
    В самом конце статьи Вы получаете war-файл - это и есть упакованное web-приложение (веб сервис).
    Разворачиваете ваш файл в weblogic по этой инструкции - https://www.oracle.com/webfolder/technetwork/tutor...
    Ответ написан
    3 комментария
  • Почему интерфейс listIterator не срабатывает второй раз?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Потому что итераторы помнят свое состояние, и второй раз в эту воду не войти - нужно еще раз брать итератор!
    Ответ написан
    Комментировать
  • Как сделать чтобы прогрессбары запускались по очереди, после того как завершится предыдущий?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Почитайте про блокирующие очереди java-online.ru/concurrent-queue-block.xhtml
    Ответ написан
    Комментировать
  • Какую сборку ПК выбрать для запуска нескольких виртуальных машин?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Виртуалки требуют потоки, поэтому чем больше потоков и ядер, тем лучше, в разумных пределах. Памяти - исходя из требований виртуалок, обычно по паре гиг на виртуалку хватает.
    Исходя из всего этого я бы взял xeon 2620 v4 и памяти 32 гиг.
    Ответ написан
    Комментировать
  • Какой метод лучше для (де)маршализации xml в Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Тут все зависит от объема самих xml. Если они маленькие и влезают в память, то все очень просто - через ObjectMapper и jackson. Как раз этот метод хорошо подходит для POJO-классов с аннотациями.

    Если же пишете свой сервис - забросьте XML, идете в JSON!

    Ну а если невзначай нужно запарсить туда-обратно википедию, придется немного поизвращаться со StAX/SAX. Тогда парсером читаем.пишем кусочки через тот-же jackson напиример.
    Ну и вот - https://habr.com/ru/post/339716/

    Вообще-то лучше забить на XML, а использовать json/json-schema/avro/protobuf/grpc/kryo, но все зависит от задачи. От XML не уйти, если нужно общаться с суровым мохнатым энтерпрайзом - сочувствую, и если это SOAP, то смотреть в сторону Apache CXF! Сочувствую еще раз!
    В зависимости от задачи можно использовать подпорки из spring и/или даже apache camel.

    В общем, огласите задачу подробнее, будет и ответ конкретнее.
    Ответ написан
    Комментировать
  • Как сделать доступ к HashMap с других классов?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Делаете клас-сиглтон и в него кладете все что вам нужно пошарить (инициализируете все в приватном конструкторе).
    public final class Singleton {
    
        private static Singleton instance;
    
        private  final ConcurrentHashMap<UUID, Person> cache; // не static!
    
        public Map<UUID, Person>  getCache() {
            return cache;
        }
        private Singleton() {
             this.cache = new ConcurrentHashMap<>()
        }
    
        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }

    И использование
    Map<UUID, Person> cache = Singleton.getInstance().getCache();


    Ну и на почитать - https://refactoring.guru/ru/design-patterns/single...

    Вобще-то лучше избегать синглтонов, а использовать так называемую технику DI, например с использованием spring или guice (мой выбор). Но начать стоит именно с синглетонов.

    Ну и конечно стандартный синглтон достаточно простой, можно еще сделать его ленивым и наворотить еще штук 20 строчек кода - тут головы взрывались на эту тему лет 10 назад.
    Ответ написан
    2 комментария
  • Не обнаруживается метод Main в java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Сделать класс SDemo3 публичным!
    Ответ написан
    Комментировать
  • Можно ли использовать это решение вместо аннотаций?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Да, без проблем! Я часто именно так и делаю. Все равно используется рефлексия, что в аннотациях, что при конструировании напрямую.
    За аннотации - можно аннотировать все что угодно, хоть класс, хоть параметр, хоть функцию.
    Без аннотации - нужно придерживаться какого-то интерфейса, особенно, если функции - классы, а так - все едино.

    PS. Собственно в конце статьи и указано практически тоже самое
    Абсолютно бесспорно, что данную задачу можно решить множеством других путей. Да, всё что можно сделать при помощи аннотаций/рефлекций можно сделать и без них, вопрос лишь в удобстве, оптимальности и размерах кода, конечно же, совать Аннотацию везде где есть малейший намек на то, что получится её использовать - тоже не самый рациональный вариант, во всем нужно знать меру =). Но при написании API, Библиотек или программ, в которых возможно повторение однотипного (но не совсем одинакового) кода, аннотации - бесспорно оптимальное решение.
    Ответ написан
    1 комментарий
  • Как увеличить количество hdd дисков на материнке?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Берете sata-sas экспандеры и вешаете на них диски грозьями! Можно до 250 штук навесить! Есть еще мультипликаторы типа таких https://m.habr.com/ru/post/120629/
    Ответ написан
    Комментировать
  • Как сделать сквозную аутентификацию пользователя из Windows-домена на сайте с Flask + Nginx?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Посмотрите на keycloak. Это SSO приложение, может обьединить и авторизацию и разные источники., привязывается и к ldap и к windows и к kerberos... Для фласка нужно сделать авторизацию по jwt и openid через keyckoak.
    Ответ написан
  • Процессор и память ??

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Архисложный вопрос! А ответ еще сложнее. Если заглянуть в спецификацию процессора https://ark.intel.com/content/www/ru/ru/ark/produc... , то там черным по-русски будет стоять 1333 частота системной шины, сиречь - памяти. Поэтому только 1333 (или ниже) память и подойдет.
    Да, понимая сложность вопроса, завидую, если эту память где найдете еще в живом виде.
    Ответ написан
    1 комментарий
  • Как настроить сеть при установке Debian 10?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Похоже, что ваш DHCP сервер не выдал вам default gateway. Если сеть без выхода в интернет, то ничего страшного. Если с выходом, то можно попробовать самому установить командой ip route add 0.0.0.0/0 via IP-адрес-роутера. Для этого переключитесь на другую консоль клавишами Ctrl-Alt-F2-5
    Такж еможно посмотреть, что за адрес выдался ip a
    Ответ написан
    Комментировать
  • Почему провайдеры в РФ не используют DOCSIS для частного сектора?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Проблема с DOCSIS одна, нужно менять все активное и пассивное оборудование в доме, начиная от репитеров и "крабов" и заканчивая усилителями сигнала. По стоимости это обходится выше, чем прокладка того же эзернет или оптики в отдельные квартиры. А если учесть что даже в новых молодежных домах покрытие едва ли доходит до 25% квартир активных абонентов, то игра здесь совсем не стоит свеч. Кажется только один провайдер в Москве работал с данной технологией, да и то потом от нее отказался.
    Так что осталось всего две технологии GPON и ethernet.
    За рубежом ситуация несколько иначе, там пассивное-активное оборудование в основном заменялось кабельными компаниями, поэтому DOCSIS как-то прижилась, да и то практически вытеснена GPON.
    Ну и по скоростям DOCSIS и GPON или тот же ethernet - боольшая разница. А оптика сейчас - дешевле грязи.
    Ответ написан
    Комментировать
  • Как получить звук с аудиовыхода java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    В яве с медиа-api есть проблема. Но не все так плохо.
    Если ява на андроиде, то все хорошо, но это не ко мне...
    Если просто ява, то есть такая штука - gstreamer, а к нему неплохой биндинг для явы - https://github.com/gstreamer-java/gst1-java-core и примеры - https://github.com/gstreamer-java/gst1-java-examples
    Под линуксом все отлично работает, я сам занимаюсь звуком, написал с использованием gstreamer и java несколько приложений. Работает под OSX и линукс. Под виндовс тоже вроде бы работает.
    Также с gstreamer можно работать на питоне, буквально 5 дней назад написал приложение, которое берет звук с микрофона и постит в shoutcast сервер. Вот примеры - https://github.com/GStreamer/gst-python/tree/maste...
    Вообще, с gstreamer можно работать на любых языках программирования, от C/C++ до Rust
    - https://gstreamer.freedesktop.org/
    Вообще, gstreamer очень мощная вещь, можно и в аудио, и в видео, и туда и обратно, с потоками и без.
    Задавайте вопросы, если что.

    PS. Да, java + gstreamer - вещь не для начинающих, нужно сначала хотя бы прочесть учебник по gstreamer, он заточен на C/C++, иначе ничего понятно не будет. С другой стороны, ничего сложного и нет, главное въехать в парадигму пайплайнов и шины сообщений.

    Да, что касается линукса, то звук можно перехватить практически из любого приложения через pulseaudio, а уже затем через pulsesrc плагин забрать в gstreamer и свое приложение.
    В винде тоже самое можно попробовать сделать через directshow + gstreamer.
    Ответ написан
    2 комментария
  • Как сделать автоматическое обновление консольного приложения в Linux на .Net Core?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Про атрибуты все уже сказали. Но если заливаете в /tmp, то там атрибуты исполнения могут сбрасываться или просто оттуда не запускаться, в зависимости от параметров монтирования /tmp!
    tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noexec)
    Вот у меня - nosuid (запрещать suid бит), noexec (запрещать исполнение), nodev (запрещать дескрипторы устройств).

    У меня процесс обновления происходит в несколько этапов
    1) скрипт запуска приложения проверяет линк в /tmp/uploaded
    - если есть, запускает приложение по этой ссылке с параметром --uploaded=path-to-new-version и удаляет саму ссылку (!)
    - если нет - запускает приложение по стандартному месту
    2) приложение проверяет по ключу --uploaded свой функционал и если все хорошо, делает линк на текущую версию на стандартное место приложения, или валится по ошибке.
    3) Когда скачалась новая версия, на нее делается ссылка в /tmp/uploaded и приложение гасится
    4) приложение перезапускается

    В результате, даже если залилось приложение с ошибками, то у меня всегда есть старая версия.
    Ответ написан
    Комментировать
  • Переходить ли с windows 10 на linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Ну так. Сижу на линуксе уже лет 20 (да-да, я стар, как говно мамонта, но не совсем).
    1) Рекомендую установить линукс второй системой, благо это не вызовет какой-то диссонанс.
    2) Попробовать в нем поработать. Будет дискомфорт, сильный. Придется поменять привычки, изучить командную строку и найти альтернативные программы.
    3) Конечно, 4Гб для комфортно работы маловато, но достаточно при умелом использовании.
    Далее.

    Если вы разработчик, то в линуксе все для этого есть, начиная от кучи всяких IDE (благо, они практически такие же, как и на винде), и заканчивая docker/libvirt. Все вместе значительно облегчает разработку. С примесью командной строки, а еще и например с таловым менеджером типа I3, производительность будет очень высокой, правда со временем. Уходить на винду обратно - морально себя ломать.

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

    За что я люблю линукс.
    - все на кончике пальцев, в прямом смысле слова.
    - куча рабочих столов (как и в OSX), я до сих пор не пойму, почему майкрософт это никак не внедрит в свой GUI, причем оболочки типа HP Launch для еще windows 3.11 были в 1995 году.
    - все инструменты разработки создавались изначально под командную строку и все из мира unix
    - командную строку вообще практически нечем заменить, и 40 лет развития unix сделали ее просто волшебной.
    - куча редакторов для простого текста, начиная от VI/Emacs, и заканчивая тем же самым gedit. все это с подсветкой синтаксиса, автокомплитом и прочими плюшками
    - все идет из коробки, не нужно ползать по сайтам, скачивать сомнительные программы
    - отсутствие вирусов и безопасность
    - виртуализация типа docker/libvirt, развернуть.попробовать новую систему - 5-10 минут, даже винду.
    - ну и подготовка документации, обожаю pandoc и текстовый markdown. На выходе красивые PDF, которые можно хранить под управлением git/mercurial.
    - для картинок использую inkscape.

    Да, у меня еще есть парочка макбуков и аймак, но этот текст пишу с ультрабука асус s. OSX в плане юзабилити немного лучше, но в ней нет I3.
    Ответ написан
    1 комментарий
  • Можно ли запрограммировать самодельное устройство счетчика денег?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Очень странно, есть такое понятие, как бухгалтерская книга, двойная запись, приход-расход, остаток и поступление, снятие «кассы» и отчет.. С древних времен, и без кассы, все считалось на бумаге и счетах. А с приходом кассы, осталось все тоже самое!
    https://ru.m.wikipedia.org/wiki/Двойная_запись
    Ответ написан
    Комментировать