Задать вопрос
  • Как в php заблокировать файл от других обращений?

    @rPman
    POST это http?
    Тебе нужен свой http сервер, реализующий нужную логику. Инструментов миллион, попробуй swoole
    .
    Если его реализовать без многопоточности и асинхоронщины, то пока он будет обрабатывать один запрос, никакой другой не будет получен, другие будут ждать в очереди сетевого стека и отваливаться с ошибкой по таймауту.

    Интересно что встроенный отладочный http сервер php -S xxx:port какраз однопоточный, и хотя его не рекомендуют для продакшн, можешь попробовать.
    Ответ написан
    4 комментария
  • Возможны ли коллизии при использовании rename?

    @rPman
    Системный rename атомарный, т.е. два одновременно работающих приложения отработают так что одно вернет true а другое false. Осторожно с сетевыми файловыми системами, к примеру nfs не гарантирует.

    Но вот записи в файл - нет, совершенно нормально получить кашу, если писать в файл к примеру логи (строчки) одновременно из двух потоков/процессов. И fflush тут не спасет, понадобится синхронизация либо через блокировки файлов (не рекомендую) либо через семафоры/мьютексы или другие IPC механизмы. Есть мнение что запись кластера файловой системы - атомарна (если твои writes выровнены по нему и размером с него), но как я понимаю гарантий этого никто не дает.

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

    @rPman
    Есть косвенное решение - разрешить в браузере сохранять загрузки автоматически без запроса места сохранения (на сколько я знаю это поведение по умолчанию) и из скрипта сформировать файл через File, Blob или MediaSource, создать для него ссылку с помощью createObjectURL (на сколько я помню это будет data uri строчка) и кликнуть по ней.

    var file=new Blob([JSON.stringify(obj, null, 2)], {  type: "application/json"});
    var url=URL.createObjectURL(file);
    var a = document.getElementById("a"); // где то на странице невидимая ссылка
    a.href = URL.createObjectURL(file);
    a.download = 'myfilename.json';


    Как вариант строчку сделать самому и отправить его прямо в location, что то типа location.href='data:text/plain;charset=utf-8,test').

    Твое python приложение пусть ожидает файл в каталоге для загрузок, указанном в настройках браузера. Будь готов, что браузер добавить ' (xxx)' к имени файла, если такой же там уже есть.

    Я примерно таким образом добавленным через консоль (или расширением типа greasemonkey) скриптом кликал и собирал данные в веб приложении, после отправлял их на сохранение в виде csv-шника, а затем собрал кучу сохраненных файлов уже десктопным приложением.
    Ответ написан
    Комментировать
  • Локальная учетная запись или учетная запись Microsoft - есть разница с точки зрения использования BitLocker?

    @rPman
    https://learn.microsoft.com/ru-ru/windows/security...

    На сколько я знаю разница только в том что при использовании онлайн учетной записи есть возможность хранить бакап ключа на OneDrive

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

    @rPman
    Зависит от контроллера ssd, к сожалению после того как китай устроил (последние годы особо актуально) гиганскую лотерею - 'угадай что внутри', когда вне зависимости от модели, внутреннее устройство и главное характеристики и надежность, меняется как перчатки от партии к партии, понять что там теперь невозможно.

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

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

    Почему кратковременное подключение не поможет - так как контроллер банально не успеет проделать всю необходимую работу.
    Ответ написан
    Комментировать
  • Как подключить 6 мониторов?

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

    Выглядит это как расслоение изображения на динамичных сценах.

    Если это не актуально то все будет работать в любых конфигурациях и любых ос, лишь бы были драйвера
    Ответ написан
    1 комментарий
  • Распределенная одноранговая сеть кластеров с данными - где получить базовые знания (хочу учебник)?

    @rPman
    с точки зрения гендиректора
    в некотором смысле тут все просто

    Либо ты своими силами на своих или арендуемых мощностях (т.е. буквально свой компьютер-сервер, выделенный сервер провайдера DS/виртуальный сервер провайдера VDS/VPS) с реализуешь хранение данных, для этого более чем много инструментов, и если данных относительно мало (миллионы записей) то возможно вам хватит любой sql базы (бесплатные postgres/mysql).

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

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

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

    По факту у тебя выбор - плавное перераспределение средств между сделать у себя своими силами до отдать всю работу на сторону. Иногда второе выгоднее и удобнее (когда работы не регулярные, эпизодические).

    Теперь вопросы - чем вас не устраивает текущее облачное решение от яндекса? Что вы пробовали локально?

    Как именно происходит работа с данными (пример схемы - кусок нужных данных выгружается локально в виде копии, анализируется, удаляется... общая база как накопление данных, т.е. в них другие люди записывают и накапливают данные)?

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

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

    по сути тут есть
    * сопли (тюнить ретракт, печатая башенки с разными его параметрами) и температуру (сопли бывают еще и от перегрева, petg вроде достаточно текучий пластик)

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

    * 0.2мм слой для сопло 0.4 это предельно высокий, уменьшай, тесты показывают что выше 1/3 от диаметра высоту слоя поднимать не рекомендуется, так как это ухудшает сцепление слоев
    Ответ написан
    2 комментария
  • Как исправить проблему зависания Google Chrome при копировании кода?

    @rPman
    Сначала исключить потенциальные проблемы из-за расширений, отключи все либо создай новый пустой профиль и протестируй там, если проблема не повторится значит по одному включай расширения и повторяй тесты пока не найдешь виновника. Как частный случай - зайди под новым пользователем ОС.

    если проблема не в расширениях, следующим шагом я бы сменил операционку (в смысле загрузиться с usb уже готовую win/linux и установить там google chrome и проверить)

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

    @rPman
    Во первых веб браузеры не умеют работать с обычным универсальным tcp/udp советами, им нужен определенный протокол, т.е. приложение, которое слушает сокет (socket_listen) должно работать по совместимому протоколу (сейчас это http, его расширение websocket, а для udp - webrtc).

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

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

    @rPman
    Виртуальная машина jvm и виртуальный процессор того же qemu это очень разные вещи.

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

    Память в qemu виртуальной машины может быть полностью эмулированой, например помню были патчи, шифрующие и расшифровывающие страницы памяти по мере доступа к ним.

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

    @rPman
    Раз в месяц такие вопросы, такое ощущение что авторы после получения ответа его удаляют.

    Решение - каскадное подключением через другого пользователя, миновал об отключении не пойдет на второе внутри первого сеанса rdp

    Настоятельно рекомендую не использовать для этого windows, лучше linux и xserver-xvfb
    Ответ написан
  • Как понять нормальная прошивка андроид?

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

    Так делает и Гугл и Китай, но они производители, своего трояна ставят на заводе.

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

    @rPman
    сделай $UserId global или передай в объект/массив (они по ссылке передаются), прописанный в use.

    учти что вызывается эта функция позже, когда приходит message, а значит и userid твой будет установлен позже
    Ответ написан
  • Как оптимально сделать выборку из БД?

    @rPman
    если нужно по каждой категории - добавь к запросу group by категория, в select будет sum(сумма) и категория

    если выбор критерия вычисляемый, пропиши его формулу в select сумма as field_name ... group by field_name
    Ответ написан
    Комментировать
  • Как запустить чужой проект веб-приложения с GitHub на своем компьютере?

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

    Достаточно выложить файлы этого проекта в любой веб север, хоть однострочник от php (php -S 127.0.0.1:8080) и открыть этот адрес в браузере - все работает
    Ответ написан
    Комментировать
  • Есть какие нибудь инструменты для работы с VBA?

    @rPman
    Microsoft Visual Studio, умеет работать как с Visual Basic так и с VB.net (VB.net похож на VB script и зачастую код можно даже тупо копировать)

    Начни от сюда
    Ответ написан
    6 комментариев
  • Как отключить распечатку документа в браузере?

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

    @rPman
    Отключаяя сессию rdp для машины это сигнал блокировки экрана, браузер это отлавливает и тормозит обработку скриптов (точно так же как и при минимизации окна/смены таба)

    Полагаю headless версии браузера тебе не подходят? те что selenium к примеру запускают?

    Решения:
    - универсально, рекомендую - рекурсивный rdp, сессия, где запущен браузер должна быть открыта в другой сессии (другой пользователь, и не обязательно с этой же машины, но нет смысла заводить вторую машину), вот уже к этой второй сессии можно подключаться удаленно, при ее отключении открытое окно сессии mstsc к браузеру не будет передавать сигнал о дисконнекте, ее даже можно безопасно минимизировать (не проверял)
    - запускать браузер не в rdp сессии а в консоли сервера (это та что подключена к монитору), используя vnc/teamviewer/anydesk и аналоги
    к сожалению на серверах ее может не быть или она недоступна, к тому же она только одна на машине.
    - виртуализация, установи виртуальную машину, где запускай хоть десктопные версии windows (это легально только с pro/ultimate версиями), каждый браузер будет запущен в своей сессии-консоли, доступ по rpd средствами виртуальной машины
    - смени операционную систему на linux, тебе ведь только браузер запускать, там с помощью xserver-xvfb можно запускать любое количество серверов xserver, подключаться к ним по vnc (есть врапперы rdp), это будет проще и дешевле в обслуживании
    Ответ написан
    Комментировать
  • Как сократить количество допустимых запросов от поисковых роботов?

    @rPman
    Поисковые боты не 'ходят с сайтов', у них не должно стоять заголовка referer.

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

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