Задать вопрос
  • Как организовать очередь POST-запросов, если сервер в дауне?

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

    Теперь про эти сервера, тебе нужно точно определять, успешно ли запрос отправлен или есть ошибки, проверяй все что вернул сервер, возможно там есть запросы на проверку и т.п. задачу из таблицы очереди удалять только после успешной отправки, можно завести статусы, чтобы можно было мониторить состояние, например перед отправкой запроса ставишь состояние 'отправляется', по окончании менять на 'успешно' (потом или сразу удалять) или 'ошибка' что делать с ошибочными тебе виднее, например повтор через интервал времени (периодически менять статус на 'ожидает отправки' для записей старее этот монтировал времени)
    Ответ написан
    Комментировать
  • Можно на Гугл диск заливать музыку для себя?

    @rPman
    Ни одно современное облачное хранилище от системообразующих предприятий США не разрешает нарушать законодательство, об этом пишут в лицензионном соглашении (возможно какое-нибудь частное с нормальным шифрованием от этого защищено будет какое то время, до тех пор пока не станет значимого объема, потом 'придут' и к таким). Т.е. если стоит запрет на нарушение закона, значит есть механизмы этот запрет обеспечивать - т.е. контроль и наказание.

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

    Поэтому сложилась практика, что пока твои нарушения мелкие, на них закрывают глаза или точнее вероятность тебя наказать минимальна. Но я не уверен что нулевая.
    Ответ написан
    Комментировать
  • Какие подвохи Google Cloud?

    @rPman
    дают 300$ для покупки каких либо услуг

    показывали цену в 30$

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

    Банковская карта это твой идентификатор и возможность списывать с тебя деньги после окончания этого периода. Зачем компания будет тебе разрешать пользоваться бесплатно их услугами без каких либо шансов получить за них оплату?
    Ответ написан
  • Как проверить сигнал с вышки 4G?

    @rPman
    Где ты видишь третью симкарту? там подписано sim2, я так понимаю программа замерила не только скорость в 4g но и 2g протестировала, вот и смотри качество связи в децибелах или словесно хорошо/нормально/плохо

    Добавь сюда какой-нибудь speedtest, выбрав сервера вне твоей страны, обычно проводят три теста:
    1. по умолчанию, к ближайшему серверу у твоего провайдера (в идеале там куда ты подключен), это будет тест твоего внутреннего подключения и максимально возможная связь до твоего провайдера - это ограничение сверху, лучше этого быть не может
    2. твоя страна но не твой город (особенно актуально для стран типа россия), имеет смысл выбрать центрального провайдера (погугли кто в казахстане крупнейший узел связи и выход в мир предоставляет, маловероятно что там много провайдеров) либо центр того к кому он подключен, типа москва
    3. мир, какой-нибудь сервер на другой стороне планеты

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

    Связь до провайдера может быть идеальной но базовая станция провайдера может быть нагружена с точки зрения ширины канала в интернет, т.е. телефон показывает все полоски и тип связи 4g/5g/100500g а интернет на уровне модема 2000-ых.

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

    @rPman
    Смотрим исходники (как же там неудобно искать, проще было склонировать и найти в файлах)

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

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

    Вот к примеру твой пример развернется в
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
      __attribute__((__constructor__)) ;
    static void __vnet_add_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feat_arc_ip4_unicast.next = fm->next_arc;
      fm->next_arc = & vnet_feat_arc_ip4_unicast;
    }
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
      __attribute__((__destructor__)) ;
    static void __vnet_rm_feature_arc_registration_ip4_unicast (void)
    {
      vnet_feature_main_t * fm = &feature_main;
      vnet_feature_arc_registration_t *r = &vnet_feat_arc_ip4_unicast;
      VLIB_REMOVE_FROM_LINKED_LIST (fm->next_arc, r, next);
    }
    static vnet_feature_arc_registration_t vnet_feat_arc_ip4_unicast

    Заметь что последняя строчка не завершена, нет ";", значит если после вызова этого макроса поставить = ... то пойдет определение значения переменной vnet_feat_arc_ip4_unicast
    а запись через { .имя_поля=значение,...} это удобный способ инициализировать структуры
    Ответ написан
    1 комментарий
  • Как удалить рекурсивную папку "..."?

    @rPman
    far commander и скорее всего total commander умеют работать с символическими ссылками а значит удалять их корректно.

    ну и как тебе уже предложили, воспользоваться консольной командой
    rd /s/q c:\имя_папки

    p.s если речь идет не о символической ссылке а о глюке файловой системы, то нужно запустить ее проверку - свойства диска, утилиты или обслуживание, проверка диска, отметить чекбоксик исправлять ошибки, для C: потребуется перезагрузка)
    Ответ написан
    Комментировать
  • Linux установлена на HDD, как сделать виртуальный образ vhd этого диска, чтоб всё работало?

    @rPman
    vhd можно создавать и монтировать в windows (к сожалению не доступно в home ревизиях, но народ как то это взламывал) прямо в интерфейсе Управление дисками, т.е. создаешь точно такого же размера диск динамический (он не будет занимать место пока не начнется запись) и делаешь копию через клонирование диска с помощью windd или аналогичных утилит.

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

    В подавляющем большинстве случаев, склонированный диск будет работать а система загружаться в virtualbox (с оговорками EFI, так как оно требует настройку либо инструментами биоса, у virtualbox оно эксперементальное, либо сторонними утилитами, смотреть какой там загрузчик, какая ос и т.п.)
    Ответ написан
    Комментировать
  • Аналог Selenium для обработки клика?

    @rPman
    Инжект скрипта с помощью обычного браузера и плагина типа greasemonkey не работает?
    Ответ написан
    Комментировать
  • Как установить qemu вместо virtual box для работы с docker toolbox на windows 10?

    @rPman
    docker это linux. Для запуска на windows используется виртуальная машина, в случае с wsl она просто скрыта от пользователя, но она есть (используется майкрософтовский hyperv), в подавляющем большинстве случаев лучше установить полноценный linux в виртуалке и уже внутри настраивать docker (инструкции уже для linux выбранной версии будут).

    Без поддержки аппаратной виртуализации будет очень медленно работать (примерно в 10 раз медленнее нативного).

    VirtualBox умеет работать без аппаратной виртуализации, если загрузить ExpansionPack с офф сайта (бесплатно для личного использования)
    kvm/qemu точно так же (собственно как я понимаю virtualbox его использует под капотом для этого)

    Если машина не умеет виртуализацию, то либо она не включена в биосе (99% случаев, еще есть редкий случая, на машине стоит руткит вирус, лечить только загрузкой с usb/cdrom антивирус) либо машина ну очень древняя, и в добавок еще и не умеет 64bit (скорее всего).

    p.s. Если windows 32-битный, то есть возможность запустить colinux, проект песочница (это user mode linux портированный под windows) который по факту не является виртуализацией, и в каких то задачах (там где меньше системных вызовов) будет работать быстрее софтварной и даже аппаратной виртуализации. Недостаток - проект не портирован для x64 архитектур и заброшен в 2015 году, я точно помню где то в 2019 я ставил в него ubuntu какую то lts, смотри последнюю, что поддерживала 32-бита, так же как я понял он утилизирует только одно ядро cpu плюс все лимиты 32-битности с памятью

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

    upd. https://cdimage.ubuntu.com/ubuntu-mate/releases/18...
    последняя официально поддерживала i386

    сервера обновлений попробуй яндексовые mirror, типа так /etc/apt/sources.list
    Ответ написан
    7 комментариев
  • Как удалить профиль пользователя в Windows 10?

    @rPman
    Самую важную информацию - как ты до такого дошел, какими действиями, ты не сказал.

    Попробуй вручную все удалить. Открываешь в regedit:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\

    там будет список SID идентификаторов пользователей (заглядывай внутрь чтобы понять какой кто), ищешь нужного, копируешь этот SID и поиском планомерно удаляешь все что найдешь в реестре под таким идентификатором
    Ответ написан
    Комментировать
  • Какие есть актуальные способы полного обхода Widevine DRM?

    @rPman
    Попробуй настроить wireless display receiver linux и подключить к нему свое устройство, транслирующее на этот монитор твой 4k контент.

    например https://github.com/albfan/miraclecast и пиши изображение со своего монитора.

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

    Так же есть аппаратные hdmi энкодеры, используй их
    Ответ написан
    1 комментарий
  • Какая частота монитора больше подходит для 60 FPS?

    @rPman
    Лучше хуже - вопрос личного восприятия.

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

    Мне кажется, для подавляющего большинства нужны циферки
    а не реальное ощущение. выше 60 кадров нужно только кибер спортсменам, а некоторым хватит даже 30-40 (если они стабильны).

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

    upd. еще высокую смену кадров нужно дисплеям очков виртуальной реальности, там 90fps на грани минимума, все из-за особенности смены изображения при поворотах головы, но автору вопроса это не надо
    Ответ написан
    Комментировать
  • MySQL + PHP :: Хранение паролей клиентов в базе данных с целью их извлечения, как защить?

    @rPman
    Забудем что принципиально хранить пароли - плохая практика, но так как задача уже такова что хранение вынужденное то:
    1. шифровать логины и пароли (весь набор данных, не имеющих смысл друг без друга, лучше хранить сериализованными в одном поле, особенно когда от задачи к задачи поля меняются, т.е. логин пароль почта api key, gpg ключи шифрования и т.п. пусть это будет свободная json строчка, за ее анализ отвечает клиентская часть приложения)
    2. ключом/паролем, который не хранится в базе данных (он должен являться частью бакэнда, т.е. в том месте где на бакэнде хранятся настройки подключения к внутренним сервисам либо отдельное место хранения) - при разделении работ между людьми (обслуживать базы могут другие люди, чем те кто имеет доступ к бакэнду) чувствительные данные не утекут легко.
    3. логируй все, т.е. показал пароль - сохрани в специальном логе (в базе или файлах уже вопрос организации работ) - кто, когда, с какой машины, что получил
    4. когда показываешь пароль на клиентской машине, повторно запрашивай авторизацию (чтобы не использовалась автосохраненная), важный момент, это исключит кражу данных уже на стороне клиента, очень мало кто правильно организует рабочее место (это просто неудобно и дорого).
    Ответ написан
    2 комментария
  • Как ускорить запись в базу?

    @rPman
    для sqlite настоятельно рекомендую разместить ее файл на ram диске (временно на время длительных операций), никакие другие способы не дадут такого ускорения записи, sqlite все же не про скорость

    а так да, менять логику поведения и убирать commit после каждого запроса, делая его раз на тысячу-десяток тысяч модификаций
    Ответ написан
    Комментировать
  • Виртуальный com порт в Ubuntu?

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

    @rPman
    попробуй найти по именам файлов в каком-нибудь dht поисковике (гуглить btdigg alternative)
    вроде рабочий нашел 1337x.to
    Ответ написан
    Комментировать
  • Почему не срабатывают скрипты после XMLHttpRequest запроса?

    @rPman
    console.log(xhr.status) перед if-ом, проверь, возможно у тебя твой бакэнд возвращает не 200
    а еще в отладочной консоли и networks браузера смотри, если ошибки там про это будет написано
    Ответ написан
    1 комментарий
  • Почему linux сервер при передаче файлов по sftp сохраняет не все файлы?

    @rPman
    mayton2019 абсолютно прав, скорее всего python приложение игнорирует ошибки.
    Если у тебя sftp то включи логи и сравни их с логами твоего python приложения.

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

    Если в именах есть пробелы, то многие программисты забывают заключать файлы в двойные ковычки или экранировать опасные символы символом "\", в этом случае, если для отправки используется вызов приложения, происходит ошибка, файл не находится и не копируется. Еще в такой схеме проблемы создают файлы, имена которых начинаются на "-", если такой файл передавать в аргументы приложению относительным путем он будет распозноваться как параметр (я видел такое поведение у convert imagemagic даже с обрамление в ковычки, спасался добавлением ./ в начала имени файла).
    Ответ написан
    Комментировать
  • Как правильно реализовать авторизацию пользователя БД через сайт?

    @rPman
    Безопасность чего?

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

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

    p.s. oracle дорос до скоростей mysql/postgres веб? особенно если речь об мелких объемах
    Ответ написан
    3 комментария
  • Как в php заблокировать файл от других обращений?

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

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