• Кто может помочь с моим paint на Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Тупой способ:
    1) перед началом рисования полностью копируете весь холст без новой фигуры. Т.е. в момент тыка мышкой.
    ...
    2) Вставляете на основной холст чистую копию без фигуры
    3) Рисуете прямоугольник
    g2.setColor(Color.white);
    g2.drawRect(startX, startY, endX, endY);


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

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Один раз сделайте установочник для своего чуда юда и это будет удобно всем.
    Условно такой принцип:
    Как зависимость указать "Postres с postgis и timeseriesD". Это установится до установки уже вашего пакета.
    Дальше ставится ваше пакет который копирует нужные конфиги. Запускает скрипт который скажем инициализирует БД и прочее в " Postres с postgis и timeseriesD".
    Копирует ваш бинарник в удобное место.
    Создает ярлыки.

    Занимать это будет смешной объем. Удобно отдавать клиентам для обновы и прочее. Само Поставит все необходимое и сконфигурирует.
    А с дистрибутивом что делать собрираетесь? Обновили свою прогу или табличку в бд и отправлять клиенту целый дистр? Чтобы он каждый раз его переустанавливал? Или будете писать тонны инструкций Как поставить дист а потом еще и обновлять? Не занимайтесь чушью, все уже давно придумано за вас и лежит на блюдечке, собрать установочный пакет, на крайний случай nspawn\docker\snap\...

    Ну и кроме того, ни одна контора не даст ставить у себя непонятно чей и кем собранный\переделанный дистрибутив.
    Ответ написан
  • Почему не идён звонок на два одинаковых номера?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Тут разные варианты есть. В случае pjsip
    context local-phones {
    	_3XXX=> {
    		Dial(${PJSIP_DIAL_CONTACTS(${EXTEN})},,r);
    		HangUp;
    	}
    }

    В случае sip выше предложили уже но повторю для полноты.
    Тут надо заметить что в примере:
    3ХХХ условно офисный номер
    13ХХХ условно мобильный номер, у номера надо будет переопределить callerid для исходящих.
    В целом это называется "Hunt Group" и в какомто смысле это чуть более простая вещь чем следующий вариант.
    context local-phones {
    	_3XXX=> {
    		Dial(SIP/${EXTEN}&SIP/1${EXTEN},,r);
    		HangUp;
    	}
    }


    Дальше есть вариант с followme но пример не дам т.к. это довольно комплексная штука уже.
    Еще есть, но честно никогда не пробовал, DIALGROUP.
    Ответ написан
  • Как прописать мой скрипт в автозагрузку Raspbian?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Для начала положи zmp в opt как это рекомендуется.
    Далее учи systemd.
    Создай файл /etc/systemd/system/zmp-tv.service
    С содержимым:
    [Unit]
    Description=ZMediaProxy tv
    After=network.target
    
    [Service]
    Type=simple
    NonBlocking=true
    WorkingDirectory=/opt
    ExecStart=/opt/zmp-linux-arm7 --host "192.168.88.99" --best http://immo.date/ero.m3u
    ExecStop=/usr/bin/killall -w zmp-linux-arm7
    Restart=on-failure
    RestartSec=10s
    TimeoutSec=120s
    
    [Install]
    WantedBy=multi-user.target


    Дальше обновляешь
    systemctl daemon-reload
    Добавляешь автозапуск
    systemctl enable zmp-tv.service
    Запускаешь
    systemctl start zmp-tv.service
    Посмотреть состояние
    systemctl status zmp-tv.service
    Посмотреть логи
    journalctl -eu zmp-tv.service
    Ответ написан
  • Как подружить openSUSE и Samba?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    1) avahi настроить
    2) wsdd
    Ответ написан
  • Разделить два провайдера на разные (коммутаторы) сети?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Что то вы мудрите слишком сильно. Тут сейчас будет количество людей= количеству вариантов, так же все сильно зависит от рассадки персонала\кабинетов\планировки кабинетов.
    С моей колокольни и реалий рассадки я бы разделил так:
    Как предпосыл, яб набрал побольше железа пусть и более дешевого.
    1) все все все, что связанно с бухами в свою подсеть, на свой свитч. Т.е. компы\принтеры\сервер бухов.
    2) отдельная сеть для прочих серверов которые юзают все или всё.
    3) отдельная сеть для wifi, отдельно для видеонаблюдения.
    4) отдельная сеть "прочая" где все остальные.
    Между всем этим тупое разграничение правилами фаирвола или фаирволов в идеале(т.е. каждой сетью рулит своя железка, даже микротик).
    Но опять же, это мой случай. У нас все бухи сидят на одном этаже в 3х соседних кабинетах как пример. Если у вас 1 кабинет на одном этаже , второй на 5 этажей выше а еще пара рандомно находится то тут однозначно вланы. Главное помнить что чем сложнее схема, особенно с вланами, тем сложнее потом будет это контролировать, искать проблемы, прокидывать, особенно если люди обслуживающие это меняются и особенно не документируют. В этом плане раздельные подсети гораздо проще.
    Ответ написан
  • Насколько жизнеспособный raspberry pi 4b?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Как владелец уже 2х rpi4b и заядлого линуксоида:
    1) хотите изучать ОС gnu\linux , ставьте ARCH вместо основной ОС и вперед. Познаете большинство фич, тонкостей, удобства\не удобства ОС. Документация именно по арчу очень хорошая. Читать придется много, эксперементировать тоже.
    2) Малина может подойти для повседневного юзания как десктоп но есть огромная масса нюансов. Если задача именно в этом я бы рекомендовал все же смотреть на что то с х86 архитектурой.
    3) Производительности хватает,но в зависимости от задач. У меня 1 малина трудится как сервер(samba\nfs\nginx\ps3netserver\transmission\syslog server\dns server\dlna\asterisk\hash3d server\zmp proxy). Отдельно замечу что к ней подключен ssd для ОС и пара hdd на 4tb + охлад малины + питание всего этого но без какого либо корпуса чтобы все внутрь упихать. 2я малина пока в поисках идеальное применения, пробовал как десктоп для тв, ну не комфортно. Пробовал как консоль с эмуляторами, на фоне ps3 ломанной с эмуляторами тоже довольно печально. Пробовал как этакую замену PC, грусть для меня. Она скорее для эксперементов.
    4) Покупкой одной малины дело не ограничится, удовольствие выходит дорогим. Охлад, хорошее питание, возможно корпус, возможно шилды. Все это довольно дорого, требует работы руками и головой и понимания со знаниями. Ну т.е. на моем примере если брать малину которая работает как сервер, по деньгам\времени\трудозатратам гораздо, даже не так, ГОРАЗДО! выгоднее взять synology на пару дисков.
    5) Любой одноплатник это путь большого энтузиаста, среди них малины самые "допилинные" в плане драйверов\софта\железа.
    6) Допилинные не значит что вот прям все хорошо. Не стоит верить тоннам тупых роликов на ютубе "лучшая приставка\Лучший ПК\Лучший ТВ бокс", ложь, все это работает очень , так сказать, средне и как минимум потребует огромных трудов головой.
    7) ARM это боль, по крайней мере пока.
    8) Популярные ОС на малине, типа убунты\распбиан это БОЛЬ! Либо они будут требовать от вас огромного времени вложения, вероятно большего чем собрать ОС на том же arch, в обоих случаях нужно знание дела\железа\ОС.

    Как итог могу сказать что, да малина\одноплатники это прикольно, когда есть время на них и желание. Лучший ли выбор именно малина, вот далеко не факт если исходить из задач, но малина лучшая в плане набора портированных ОС и самого железа. Т.е. для сервера дома я выберу малину однозначно, для чего то другого, очень врядли.
    Ответ написан
  • JavaFX runtime components are missing(все модули прописаны)?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Загвоздка в том что javafx стал модулем и сама модульная система работает чуть иначе.
    Собственно раньше в java8 было так что:
    • собрал jar и запускаешь его командой "java -jar имя_файла.jar"
    • если есть зависимые библиотеки то так "java -cp зависимые_библиотеки.jar -jar имя_файла.jar"
    • можно собрать fatjar. Тут зависимости при сборке вашего jar помещаются внутрь вашего jar. Запуск такой "java -jar имя_файла.jar"

    Проблема зависимостей связана с тем что они тащят всю библиотеку за собой.

    С приходом java9 и новее пришли модули которые по сути "должны" заменить старую систему зависимостей и проблему таскания ненужного кода в библиотеках.
    Теперь так, но учтите что тут есть подводные камни т.к. работает и старая и новая система и могут даже пересекаться между собой. Для примера вы можете собрать свой jar как модуль или по старинке "тупой jar"
    • если программа не берет никакие модули то можно по старинке "java -jar имя_файла.jar"
    • если программа сама собранна как модуль "java --module-path "путь\до\директории\с\модулем\проги" --add-modules имя.модуля.вашей.проги -m имя.модуля.вашей.проги/имя.главного.класса"
    • если есть другие зависимые модули то все в точности как в предыдущем пункте
    • так же могут быть собраны fatjar как в java8


    Вам для запуска надо так "java --module-path "на последнем скрине путь ваш есть" --add-modules javafx.controls,javafx.fxml -jar имя_файла.jar -m имя.модуля.вашей.проги/имя.главного.класса".

    Это очень поверхностно и крайне кратко все. В целом система модулей предполагает что вы больше не должны отправлять вашу программу в виде jar, а должны собрать самодостаточную программу. Т.е. в компиляторах есть утилиты что бы упаковать вашу программу вместе со всеми необходимыми модулями и jre, пользователь же просто запускает ее не устанавливая jre\javafx\кучи библиотек.
    Ответ написан
  • Как перенести базу данных на другой диск?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Переносить базу в виде ее файла? Народ вы серьезно? Реплику делать для переноса??
    Делаете как положено, штатными средствами export\import баз.
    Ответ написан
  • Как имитировать линию для старого телефонного аппарата (с поддержкой звонка)?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Вам имитация линия или имитация работы телефона?
    Если имитировать телефон то берете микроконтроллер хоть ардуину. Выбрасываете почти все кишки из телефона, т.е. меняете микрофон и динамик в трубке на что то простое что ардуина вытянет, кнопка снятия трубки остается старая, звонок(который старый в виде 2х механических колокольчиков) для него городите преобразователь в переменный ток с определенной частотой, шилдик на ардуину для вывода и записи звука. Согласовываете все это друг с другом и пишете прошивку.
    Ответ написан
  • Как привязать сокеты и мультипоточность к JavaFX?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    JavaFX просто отображает графику и работает ВСЕГДА в одном своем потоке. Для взаимодействия с ней(что то пошевелить на экране) из другого потока используется такая штука Platform.runLater(java.lang.Runnable runnable).
    В вашей задаче я себе представляю картину так:
    Сервер:
    1)держит состояния 4х переменных. ПоложениеИ1(у),ПоложениеИ2(у),ПоложениеМяча(х,у),ВекторНаправленияМяча(х,у). По хорошему еще дополнительно количество очков для каждого игрока и флаг для каждого игрока о готовности игры\паузы.
    2)слушает сокет и ожидает игроков. Как только игроки подключились начинает принимать от игроков их положения клюшек и вносить в переменные. Симулирует игровое поле в отдельном потоке по фиксированному числу тиков с положениями клюшек игроков, мяча и его движения. Отправляет игрокам положения клюшек, и мяча. Опционально шлет количество очков и запускает\паузит игру по флагам от игроков.
    Не забывает что все в игре максимально детерминированно, т.е. размер поля для симуляции известен, положения игроков известно и т.д. Т.е. все прекрасно симулируется.

    Клиент:
    1) держит состояния 4х переменных. ПоложениеСебя(у),ПоложениеИ2(у),ПоложениеМяча(х,у),ВекторНаправленияМяча(х,у).
    2) В одном потоке подключается к серверу. Принимает все координаты и шлет положения в поток javafx.
    3) Поток javafx рисует графику(помним что все размеры заранее известны), слушает нажатия кнопок\мыши и шлет на сервер.

    В минимальном виде это будет работать.
    Т.е. по итогу игровая логика происходит на сервере. Игроки же просто получают координаты друг друга и мяча, в ответ шлют серверу положение своей клюшки.
    Ответ написан
  • Какую ОС ставить на домашний хостинг?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Любую BSD, они легче и нет ничего лишнего из коробки. С учетом железа 2006 года, никаких докеров, контенеров и прочего.
    Ответ написан
  • Как правильно изменить crontab?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Перейдите на systemd timers. Тоже самое но контролировать и управлять удобнее.
    Ответ написан
  • Как сделать автоматизированный медиацентр в рабочем помещении?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Смотрите RuneAudio, Volumio, Moode. Это из готовых вариантов.
    Можно сгородить подобное самому через mpd.
    Ответ написан
  • Как расширить аналоговую телефонию в офисе?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Расширить никак. Смотрите БУ рынок на замену существующей АТС на такую же с большим числом портов.

    Другой вариант:
    1) Купить IP АТС типа grandstream ucm , Самая простенькая на 500 абонентов и 50 активных вызовов, в комплекте имеет 2 аналоговых порта на телефоны(FXS) и 2 аналоговых на СЛ(FXO). Стоит около 20-25к.
    2) Со старой АТС вытащить все городские линии и воткнуть в UCM(т.е. 2 городские линии подключите)
    3) 2 FXS порта от UCM воткнуть в 2 порта FXO старой АТС.
    4) Старая АТС будет выступать в роли шлюза но надо помнить что одновременно будет ходить только 2 линии на новую АТС или через нее в город.
    5) Приобрести ip-dect базу. Стоят от 3к. Они как правило на 5 трубок независимых.
    6) Набрать на avito 5 dect трубок, там это добро от 100р за штуку.
    В итоге плавно сможете уйти на IP докупая постепенно IP трубки, либо dect станции, либо шлюзы.

    Другой вариант самый экономный но и требующий больше всего работы головой.
    1) Найти или купить самый дешевый ПК или распберри пай. На него накатить и настроить asterisk. Считайте это бесплатно т.к. даже самое древнее железо с помойки пойдет.
    2а) повторить путь с dect либо
    2б) потихоньку набирать ATA шлюзы типа HT812 по 2 порта либо сразу HT818 на 8м портов.
    2в) пойти на БУ рынок и взять там шлюз на 24 порта, выйдет менее 20к такой, скорее около 15к.
    3а) взять любой FXO шлюз что бы завести городскую линию в АТС
    3б) отказаться от аналогового городского номера и арендовать sip номер на выбор. Либо поговорить с оператором и возможно он даст вам Ваш номер по sip.
    4) Частично недостаток аппаратов перебивать через софтфоны с гарнитурой.
    Ответ написан
  • Как скачать файл с сервера находясь на сервере?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Можно такое сделать. Если я все правильно понял из вопроса.
    При подключении по SSH делаете через него port forwarding.
    А ваш ПК.
    Б сервер.
    подключаетесь по ssh от А к Б, делаете проброс порта от Б(условно 222) к А(порт ssh). Это указывается при подключении.
    После подключения уже находясь на машине Б сможете дать
    scp foobar.txt usernameA@localhost:222:/some/remote/directory

    Т.е. вы находясь на удаленном сервере через ssh тунель пробрасываете порт до ssh вашего ПК и сможете подключаться по ssh\scp к нему обратно.

    Мудрено но так можно.
    Ответ написан
  • Возможно ли использование уникального примитива или вроде того?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    public abstract class UserProperty<T> {
      private String propertyName;
      private T propertyValue;
    
      public UserProperty(String propertyName, T propertyValue) {
        this.propertyName = propertyName;
        this.propertyValue = propertyValue;
      }
    }
    
    Гдето там нареализуете класс до нормально
    public class UserPropertyString extends UserProperty<String>{
    }
    или
    public class UserPropertyBoolean extends UserProperty<Boolean>{
    }
    и т.д.
    Ответ написан
  • Openmeetings - видео/аудио за локальной сетью, как быть?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    неужели отсутствие ssl является помехой для передачи потока?

    да является, браузеры не дают доступа к камере\микрофону без нормального ssl. Хотя возможно, но маловероятно, что то изменилось.
    Кроме того могут еще и антивирусы мозги парить, писали что стандартный виндовый антивирь блочит и нужно добавлять исключения.
    Ну и еще малоприятное это вездесущие NATы, много настроек с разных сторон, turn\stun\ice и прочие прелести rtp трафика.
    Ответ написан
  • Mikrotik, скорость при пробросе трафика VPN на определённый ip в тесте 0, что не так?

    jamakasi666
    @jamakasi666
    Просто IT'шник.
    Для начала информации ноль, чтобы вам могли помочь с такими вопросами картина должна быть максимально полной, дамп правила фаирвола, ната и всего прочего что вы делали.
    Самый банальный вариант кривости ваших настроек могу привести как проверить.
    1) Делаете бэкап
    2) вытаскиваете кабель проводного инета
    3) сбрасываете все настройки
    4) настраиваете только lte как обычный инет без каких либо ковыряний в других настройках
    5) видите что абсолютно все работает
    6) поднимаете vpn
    7) снова будете наблюдать что все хорошо
    8!) вот тут вы навешиваете проблемы либо в фаирволе либо в маркировке трафика.

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