Задать вопрос
  • Как из запускаемого в браузере локального 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.

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

    Если же это обычные запросы и кто то жалуется что люди ходят по ссылкам с вашего сайта на чужой и это создает ему нагрузку.... уберите эти ссылки, но что то мне говорит что их наличие и есть часть партнерства.
    Ответ написан
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

    @rPman
    Ответ зависит от требований к данным и особенностей записи, многопользовательская или нет (транзакции на запись - сильно выставляет требования к ресурсам), есть ли модификация данных (очень важный момент роняющий производительность в зависимости, правда если данные фиксированного размера то возможно не сильно), виды запросов на поиск и аналитику, (кому то нужны поиск по значению, а кому то сравнения больше/меньше, поиск min/max и сортировки, кому то нужны группировки по значению в индексе и многое другое), наличие упорядоченных данных (когда данные записываются последовательно и в запросах часто фигурирует выгрузка данных на интервале).

    Отличный пример - числовое ключевое поле с монотонным ростом без пропусков позволяет использовать самый простой индексный файл где значение ключевого поля это смещение слова (например 4 байта) в индексном файле, а эти слова - это смещение в файле данных (например номер кластера фс, данные выровнены по нему). Файл данных это тупая последовательность размер+данные без разделителя.

    Достоинства - максимальная из возможных производительность (файл данных и индексный файл могут храниться без файловой системы прямо в блочных устройствах), буквально 2 запроса на запись/поиск (при использовании файловых систем операций будет в несколько раз больше), ни одна универсальная база данных не даст такой. Кода - строк 20-30 на любом языке программирования, красиво можно пользоваться memory mapped files (они дают самую быструю работу с файлами и удобную под задачу). Данные пишутся линейно на диск (оптимально для hdd, само собой если не одновременно с чтением), большинство файловых и операционных систем поддерживают sparce файлы (будут накладные расходы, но константа), это значит можно с некоторыми оговорками пользоваться большими пропусками в порядке индексов (дырка в файле вернет нули, на диске храниться не будет).

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

    Пример - временной ряд, в секунду происходят тысячи событий, хранить группами по секунде, т.е. ключевое поле для индекса - это timestamp-стартовое время файла, при среднем размере информации о событии в 100байт и 4 тысячи событий в секунду, на 3терабайтовый диск hdd индексы будут порядка 30 мегабайт, что прекрасно влезает в оперативную память. У меня самый дешевый toshiba3тб выдавал 60 req/sec случайных запросов (как в синтетических бенчмарках), при этом запрашивать можно было сразу большими интервалами, что роняло скорость максимум в 2-3 раза, пока данные влезали на дорожку (в зависимости от расположения там по разному). Последовательное чтение данных само собой работало на максимуме скорости диска в 150-200мб/с.
    p.s. от такой модели отказался за ненадобностью, данные хорошо упаковывались большими блоками (в 10 раз), храню теперь просто в архивах большими блоками по несколько часов, на время работы нужные данные переливаются во временные файлы.

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

    @rPman
    Главный инструмент обучения нейросети (не единственный) - это создание функции ошибки и подбор параметров для ее минимизации.

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

    Классический но не единственный способ определения функции ошибки - это сумма всех расстояний (если вектор состояния это координаты в многомерном пространстве) между ожидаемым выходом и полученным текущей сетью. Самая простая метрика расстояния для одного 'эксперимента' - квадратный корень суммы квадратов разницы значений векторов, т.е. A(a1,a2,a3,...) - это вектор из обучающей выборки, а B(b1,b2,b3,...) то что вернула сеть, то расстояние sqrt((a1-b1)^2+(a2-b2)^2+...), соответственно полученные ошибки нужно просто сложить для всей обучающей выборки, и получить полную ошибку.

    Так вот, есть разные способы повысить/понизить значимость конкретному значению вход+выход из обучающей выборки - это:
    a) добавить коэффициент к ошибке, т.е. умножить ошибку на какое то фиксированное значение (для каждой пары вход-выход свое значение, по умолчанию 1), увеличивая этот коэффициент можно заставить нейросеть более строго изучать какие то конкретные примеры из обучающей выборки, а какие то наоборот, менее строго.
    b) исключать примеры из обучающей выборки или добавлять их несколько раз (я находил несколько исследований этого метода, точнее частично похожих на это)

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

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

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

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

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