Задать вопрос
  • Почему json.load считает текстовое представление цифр валидным json?

    @rPman
    по стандарту, json это константа в формате javascript, под которые попадают просто числа
    value = false / null / true / object / array / number / string


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

    чтобы это определить, не обязательно парсить json (хотя это просто и современные парсеры жуть какие быстрые), достаточно проверить первый не пустой символ строки на '[' или '{'
    Ответ написан
    Комментировать
  • Лучше более высокая частота оперативной памяти или ёмкость?

    @rPman
    это NAS?
    Тебе не хватило 2Гб? как это определил, что ожидаешь ускорить, добавив 4 или 8 Гб? Твои задачи удачно вписываются в маленький кэш?

    Для задач потребительских NAS нет никакой разницы, какая частота стоит у памяти, так как она не утилизируется по полной практически во всех типовых задачах пользователя (чтобы нагрузить процессор, нужно много одновременных мелких запросов, например нетипичную задачу водзрузить, типа web server и вызвать хабраэффект, но даже тут разница 1600 и 1866 частоты оперативки не заметят даже бенчмарки).

    Поэтому ответ - больше памяти лучше чем меньше
    Ответ написан
    2 комментария
  • Блокировка PHP flock создает последовательную очередь?

    @rPman
    на базе только flock сделать очередь будет сложно

    существует штатный инструмент очередей с поддержкой в php - msg_get_queue (вообще семафоры в php адекватно работают только в linux)
    я тут в комментариях про это писал https://qna.habr.com/q/1007515

    но лучше воспользоваться более универсальными инструментами, так как очереди ос сильно лимитированы, неудобны в обращении, хотя и очень простые
    Ответ написан
  • Как лучше распределить 256 ГБ RAM на 4х каналах?

    @rPman
    8 х 32
    Исключительно из денежных соображений, если из строя выходит планка по 64гб, ее замена обходится в разы дороже планки на 32гб
    Ответ написан
  • Как отладить медленное выполнение запросов между docker-контейнерами и основной системой, и между docker-контейнерами?

    @rPman
    примите как данность, docker - дитя linux, и на windows его портировали как получится, не со зла, а исключительно из-за того что windows сложная система и песочницу там запилить реально не просто.

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

    майкрософт это давно понимает и поэтому запилили wsl, ибо это способ хоть как то удержать главное, что определяет, на какими операционными системами будут пользоваться люди в конце концов - developers developers developers!
    Ответ написан
    Комментировать
  • Какое охлаждение подойдёт на Rx590 armor, вместо штатного?

    @rPman
    Full cover жидкостное охлаждение, объедини в контур с охлаждением к процессору и хороший блок наружу с тремя вентиляторами (или даже два, я не шучу, будет бесшумно), очень короткое время использовал самосборный комплект (отдельно радиатор, отдельно корпусные малошумные вентиляторы, отдельно помпа...) все нравилось, прекратил по причинам не связанным с темой.
    spoiler
    https://aliexpress.ru/item/32819422159.html
    радиатор примерно такой:
    np1c_9hp0znwcebi7h5mti_b_fc.png
    Ответ написан
    Комментировать
  • Можно ли в WebView2 для winforms отключить загрузку изображений?

    @rPman
    webview.getSettings().setLoadsImagesAutomatically(false);
    webview.getSettings().setBlockNetworkImage(true);

    это для android а в вопросе .net
    Ответ написан
  • Как завершить сеанс терминального пользователя при выполнении определенных условий?

    @rPman
    не шибко красиво но работать будет:

    создай в шедулере задачу завершения сессии пользователя с командой shutdown -l а пользователя прописать в критериях к задаче, без условий запуска

    в автостарт к другому пользователю вставь запуск этой задачи schtasks run /tn имя_задачи
    Ответ написан
    6 комментариев
  • Как записать 4-канальный звук?

    @rPman
    крутейшая консольная утилита (там и библиотека есть) опенсорс, поддерживает наверное максимум оборудования, кроссплатформенная - это ffmpeg

    странно что не попытались сами сделать, во первых параметры звука будут взяты изх системных настроек (если там выбрать четыре канала то ffmpeg по уму должен автоматом подхватить), если что можно указать принудительно какой профиль: -channel_layout quad -channels 4
    если у тебя винда, смотри пример как записывать с микрофона тут
    Ответ написан
    Комментировать
  • Как хранить большие строки красиво?

    @rPman
    А чем плохо? пользоваться не удобно? строковые константы почти одинаковые, отличаются по чуть чуть?
    Лично я не вижу в простом нагромождении switch case ничего зазорного, если это простое описание логики если то... многоуровневая логика уже сложнее (если внутри тоже есть условия) такое читать сильно неудобно и легко пропустить ошибку.

    Еще, нормальная практика, все такие данные выносить из исходников в каком то формате. Т.е. буквально формат данных должен описывать условия и данные (например это пара строковых значений, первое строка-условие, второе возвращаемое значение, хранить, к примеру, в формате ini, человекочитаемо, удобно, просто), но во всем нужно знать меру, так как если условия становятся сильно сложными, код который это обрабатывает становится сложным, неудобочитаемым, а еще потребуется какой то язык описания этих данных, чтобы человек мог их отредактировать и искать в них ошибки.. ибо если станет все слишком сложно, получится еще один язык программирования.
    Ответ написан
    Комментировать
  • Можем ли мы определить, какая программа на другом конце named pipe?

    @rPman
    windows pipes могут использовать windows authentitication, т.е. доступ к пайпу имеют только разрешенные пользователи (по умолчанию все авторизованные пользователи, если я верно помню).

    Ваша прокси должна быть дополнена для создания security descriptor создаваемых пайпов, все кто попытаются открыть этот пайп, к примеру, должны быть пользователями груп, указанных в дескрипторе
    Ответ написан
    9 комментариев
  • Почему текст ярлыков стал плохо отображаться Windows 10?

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

    осторожно, сделай бакап своих файлов!

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

    @rPman
    это называется virtual scrolling
    погугли готовые решения есть, чаще заморочки с поддержкой одновременно pc/mobile

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

    Совет, если человек скролит с меньшим интервалом времени или сразу следующую страницу, запрашивай у бакэнда большего размера окно чем обычно, так как это типичный паттерн проскролировать 'подальше'
    Ответ написан
    Комментировать
  • Как проверить ссылку RSS?

    @rPman
    если ссылку спрашивать у пользователя, то он сам дурак, если даст неверный тип контента

    с высокой вероятностью в ссылке будет слово rss (либо type=rss, так многие cms-ки экспортируют свои статьи туда либо .rss) но само собой никто ничего не гарантирует, никаких стандартов на это нет

    как правильно - запрашиваешь по ссылке заголовки, без контента, и смотришь Content-Type должен быть тип text/rss+xml или application/rss+xml, редко бывает text/xml или application/xml но тут дальше только по содержимому
    Ответ написан
    Комментировать
  • Как защитить переписку от MITM атаки?

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

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

    @rPman
    Используя терминологию linux, vpn должен создавать сетевой интерфейс типа tap (не tun, openvpn позволяет делать оба типа), который необходимо добавить в сетевой мост с сетевым устройством локальной сети, к которой нужен доступ.

    Сетевой мост можно создавать как на linux машинах так и на windows, что успешно проворачивалось с помощью openvpn, в этом случае не важно кто изначально к кому подключался, с точки зрения итоговой сети все машины будут находиться в единой.
    Ответ написан
    1 комментарий
  • Какую систему использовать для бекапов lunix с s3?

    @rPman
    наведете на решение?

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

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

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

    Но вот в частных случаях, когда интегратору/админу известна система от и до, возможно построение своих скриптов автоматизации и формировании отчетов о тестировании среды.

    По делу, одно время я пользовался в windows bat скриптами (готовые были написаны для win7 и уже не работают в win10, но идея там простая, все переписывается легко) когда на целевом диске создавался снапшот, затем с помощью rsync создавалась полная копия указанных каталогов, но с указанием предыдущей версии реплики, для неизменившихся файлов утилита создавала hardlink на прошлую копию, в результате получается идеальная инкрементальная копия, с которой можно работать как с обычными файлами (не требуется извлечение из сжатых архивов и последовательное принятие патчей инкрементации), причем на любую сохраненную дату, при необходимости можно легко удалить старую или даже любую реплику, благодаря корректной обработки hardlink файловой системой.

    Сам диск можно подключать по сети, на выбор либо средствами windows (.vhd файлы) либо iscsi
    Сжатие - поддерживается, но только слабое ntfs.

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

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

    Другой подход, если требуется создание копий общей шары на сервере (linux само собой), выбираешь cow файловые системы, с поддержкой онлайн снапшотов - btrfs/zfs. Каждый день или даже каждый час создаешь снапшот и хранишь так долго как это необходимо, удаляя не нужные тогда когда пожелаешь (операция моментальная, не зависит от объема данных). Это защитит данные от проблем на клиентской стороне, например ошибочные удаления или вирусы-шифровальщики и т.п.

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

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

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

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

    @rPman
    попробуй покрутить параметры дескритизации, у obs по умолчанию может стоять что то типа 96kHz когда как у остальных данные берутся из системных настроек а там стоит скорее всего 'стандартные' 44k
    Ответ написан
    4 комментария
  • Как сделать дамп большой базы данных?

    @rPman
    у mysql нет адекватных методов управления приоритетами (есть low-priority yно оно действует на не все engines) поэтому исторически распределение нагрузки делают с помощью репликации.

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

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

    upd. не нужно править код штатной утилиты, более чем достаточно просто использовать штатный механизм потоков linux и замедлить запись итогового дампа с помощью к примеру cstream
    mysqldump ... | cstream -t $((1024*1024)) | zstd --ultra -T0 -o backup.sql.zstd


    p.p.s. тупо, останаливаешь базу, копируешь файлы с таблицами как есть, переносишь на свою машину, поднимаешь там ту же версию mysql, делаешь дамп
    Ответ написан
    1 комментарий