Задать вопрос
  • Как лучше генерировать уникальный числовой номер?

    @rPman
    В подавляющем большинстве случаев в качестве уникального идентификатора можно взять время в милли/наномилли/микро/наносекундах System.currentTimeMillis() или System.nanoTime(). Можно объединить это время с идентификатором потока (чтобы исключить коллизии при использовании многопоточности) или даже идентификатором сервера если используется несколько серверов (кстати в этом случае даже не обязательно синхронизировать время на машинах).

    p.s. сиквенсы есть и в postgres, так же ничто не мешает их реализовать на основе записей в таблице, так же практически все базы без сиквенсов поддерживают autoincrement, соответственно реализуете сиквенс на их основе, удаляя меньшее значение после получения нового.
    Ответ написан
  • Как правильно "Спрятать" мой js код на сервере?

    @rPman
    Не слушайте других, ваша задача решаема без бакэнда (но сложнее само собой).

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

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

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

    @rPman
    Вопрос не про машинное обучение, а про выбор механизмов хранения данных и эффективного их чтения.
    У тебя датасет 150x2000000 чисел? для float это чуть больше гигабайта, держи в оперативной памяти просто двумерным массивом

    Если на формирование обучающей выборки тратится времени сравнимо с собственно этапом прогона нейронной сети, то формируй ее в соседнем потоке, складывая несколько заранее подготовленных в очередь
    Ответ написан
    2 комментария
  • Можно ли сделать демона из программы, которая читает файл?

    @rPman
    Любая программа может являться демоном, если ее настроить на автоматический запуск и если ее работа будет фоновой, скрытой от пользователя.

    Консольные программы, те что не работают с графической оболочкой, могут быть таковыми без переделки (да и графическую можно запустить в фейковом xserver).

    Способ настройки отличается для каждой версии linux, например для ubuntu сейчас это systemd, первый же пример из гугла.
    Ответ написан
    Комментировать
  • Как запустить приложение из терминала в текущем графическом сеансе?

    @rPman
    в окружении, в котором запускаешь приложение должна быть определена переменная DISPLAY, ее значение можешь смотреть в терминале, запущенном из графического окружения, скорее всего это будет :0
    Однократно можно это использовать так:
    DISPLAY=:0.0 xclock

    Так же пользователю, если он отличен от того, для которого запущено графическое окружение, необходимо выдать права на подключение к xserver, это делается xhost (еще есть xauth):
    xhost +local:root
    Даст права root авторизованного локально работать с графической оболочкой.

    Если подключаешься удаленно с помощью ssh можно указать ключ -Y и тогда все будет настроено автоматически (это могут отключать в настройках sshd.conf), т.е. имеется в виду из терминала, запущенного в графической оболочке xserver (например xwin идущий с пакетом cygwin для windows) подключаешься к удаленному серверу ssh -Y user@server и запускаешь там приложения, окна которого будут отображаться локально. Не очень эффективный метод, но будет работать даже 3d графика (если локальный сервер умеет). Эффективнее использовать x2go для таких вещей.
    Ответ написан
    Комментировать
  • Intel core i3 10100f или ryzen 1600 af?

    @rPman
    ryzen больше ядер (6 при 12 потоках) чем у этого intel (4 ядра - 8 потоков), но в пределах одного потока intel быстрее, примерно на 25%

    Выбор amd ошибочный, за такие же деньги лучше брать AMD Ryzen 5 3500X, у него single thread rating даже выше чем у твоего интеля, но главное l3 кеш у amd сильно выше (32мб) чем у intel (6мб), а это значит высокая производительность будет больше на типичных (не синтетических как в тестах) задачах, так что бери именно ryzen 5 3500X
    Ответ написан
    Комментировать
  • Как отключить вай-фай?

    @rPman
    Что значит отключить сеть не отключая адаптера?

    Из своей программы запускай системные приложения netsh/route/... и анализируй вывод

    Чтобы сеть перестала работать и не отключать интернет, можно сломать его настройки, самый простой - удалить шлюз по умолчанию (команда route delete ip_роутера, нужны права администратора и заранее отключить автоматическое назначение ip адреса, прописав настройки интернета статикой, иначе настройки вернутся в верные через некоторое время автоматически).
    Ответ написан
  • Что нужно модифицировать в Linux системе что бы время модификации\получения доступа к файлу заменялось каждый раз на случайное, вместо реального?

    @rPman
    Менять libc, или сразу ядро. Чуть проще драйвер файловой системы, самое простое запилить fuse прослойку, это пользовательский драйвер файловой системы в юзерспейсе.
    Ответ написан
    Комментировать
  • В чем сложность майнинг биткойна?

    @rPman
    Там уже давно используют дополнительную транзакцию, и меняють ее (одно время ещё таймстамп крутили)
    Ответ написан
  • Как обновлять зависимости на сервере?

    @rPman
    Боюсь это дико сложно в общем случае, по факту компонента должна уметь это делать. А главное, это может породить кучу неочевидных проблем.

    т.е. загрузка компоненты - это всего навсего определение глобальной переменной как метод (класс) определенный в файле (функция require). Вы можете конечно вызвать его повторно с уже новой версией файла, но в памяти могут остаться объекты (например в замыканиях) от старой версии. Если это учитывать (каждый метод должен это проверять) - то такое обновление возможно.

    Так как этим никто не заморачивается, придется переписывать практически все используемые компоненты.
    Ответ написан
    Комментировать
  • Как в foreach, в каждом варианте выводить контент с небольшим отличием?

    @rPman
    Чтобы обратиться к переменной, имя которой в другой переменной, нужно использовать двойной $
    $var1=1;
    $var2=2;
    foreach(['var1','var2'] as $name) echo $$name;
    Ответ написан
    3 комментария
  • Есть идеи как диспатчить события в WS сервере ratchet?

    @rPman
    Подключайся к своему же веб-серверу, и отсылай ему системное сообщение (про авторизацию не забудь).

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

    @rPman
    Не использовать массив а объект (конвертировать с помощью Object.assign) или Map, в этом случае последовательность может быть разорвана, да и порядок элементов по ключу может быть не упорядочным
    Ответ написан
    Комментировать
  • Создание многопользовательского сервера на го?

    @rPman
    Вне зависимости от выбора языка необходимо решить важные проблемы и выбрать решение, на практике есть два подхода к созданию игры:
    1. игровой цикл запускается на клиентах, сервер выступает как управляющий, синхронизирует и валидирует данные от клиентов. Куча проблем из-за рассинхронизации (колбасящий туда сюда персонаж) но зато 'приятный' реалтайм (это иллюзия, лаги просто маскируются)
    2. игровой цикл запускается на сервере, клиенты подключаются и запрашивают как мир выглядит в текущий момент. Это лагучий вариант (не подходит к динамичным играм) но никаких проблем синхронизации

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

    Есть идеологический способ объединить оба подхода, сделав второй главенствующим, а первый подход будет отвечать за отображение информации, клиент сам будет сравнивать миры которые генерирует каждый подход в реальном времени и при расхождении делать коррекцию.

    На практике многие разработчики плюют на валидацию, пишут как получится (к примеру берут синглпеерный движок который ничего не проверяет типа старый unreal engine, пилят на его основе AAA MMRPG а потом получают читеров, которые кастуют любые скилы любым классом или летают или проходят сквозь стены и т.п.)
    Ответ написан
    Комментировать
  • Как парсить данные с сайта C#?

    @rPman
    Берешь штатную компоненту WebBrowser, кидаешь его на форму если gui или вручную, прописываешь ему ссылку и инжекти в него на body.onload свой скрипт, который вызывает уже твои калбеки на с# либо сам со стороны программы проверяй содержимое document, там полноценный доступ к dom

    этот способ будет работать вне зависимости от того как создается содержимое сайта, на бакенде или на клиенте javascript

    недостаток - если используется майкрософтовский компилятор, то компонента будет устаревший internet explorer 11, если же собрать mono - будет фаерфокс
    Ответ написан
  • Возможно ли управление двумя компьютерами одновременно с одной переферии (выполнение команд сразу на двух пк)?

    @rPman
    Готового нет, и скорее всего это бессмысленно, так как софт на столько стал сложным что даже на идентичных машинах и настройках возможны расхождения реакции на действия, да они редкие но по закону подлости вылезут в самый неподходящий момент. Т.е. на одной машине ваше alt+tab прошло после чего вы нажали enter, думая что это в новом приложении, а на другой машине переключение чуть чуть задержалось и ваш enter не попал в нужное приложение.

    Написать такое можно с помощью vnclib, запускаете на машинах vnc сервер, а с управляющей машины ваше примитивное приложение отсылает нажатия сразу всем, показывая монитор выбранной одной машины (или сразу всех, почему нет).

    Если задача автоматизации, то лучше воспользоваться autoit, это возможность написать программу, которая будет нажимать кнопки и двигать мышкой, с некоторой логикой контроля (например дождаться когда окно станет активным, проверить заголовок окна или содержимое поля ввода (только для win32 based контролов) и т.п.
    Ответ написан
    Комментировать
  • Как начать цикл не в перовом байте файла?

    @rPman
    В коде отсутствует смещение позиции чтения файла, перед циклом for нужно сделать Seek?

    И в цикле ошибка, в условии окончания его зачем то к length прибавляется startByte
    Ответ написан
    Комментировать
  • Как можно автоматизировать следующую систему?

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

    Осторожно с обновлениями, точнее с перезапуском бота при обновлениях или обслуживании. Вам нужно либо делать бот таким чтобы можно было безопасно в любой момент его 'остановить' (нужно понимать что ни одна операция с файлами на диске не мгновенна), т.е. вводить механизмы по временной их остановке с ожиданием окончания критичных процессов на это время (и соответствующий мониторинг для вас, чтобы можно было оценить чего ждете).
    Ответ написан
    Комментировать
  • Как правильно перерисовать canvas при ресайзе окна?

    @rPman
    Ты же сам задал размер в vh/vw а они по определению процент от размера окна.
    Делай в px или хотя бы в em

    canvas такой же элемент как и другие, устанавливайте стиль background:transparent; или opacity:XXX;
    Ответ написан
  • Как объединить одинаковые поля в php?

    @rPman
    В цикле собираешь не строку а массив, складывая значения в ключи $result[$value]=true; это автоматически уберет дубликаты $value

    После цикла собираешь строку с помощью implode взяв ключи как массив array_keys, при этом порядок будет сохранен.
    Ответ написан
    Комментировать