Задать вопрос
  • Почему сообщения SSE сервера приходят только когда возникает ошибка соединения?

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

    по теме - вопрос, что за веб сервер, как запускается php (cgi или модуль) потому как возможно сервер тут виноват а не код

    p.s. если твой код запустить в php -S то все работает (ругается на $DevID само собой и лимит времени запуска в 30 секунд но продолжает работать)
    Ответ написан
  • Сколько нужно ядер?

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

    Дело в том что все ядра на 100% работать не будут (исключение, если чип by design содержит больше ядер чем тебе предоставлено) так как этого не даст ни теплоотвод ни энергопотребление, проц уходит в throttling, а значит эти критерии уже не так важны.

    p.s. не бери процессоры, с кешем l3 ниже 16мб (твой проц 6мб)

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

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

    @rPman
    Что именно убрать? слишком большой код?, заверни в функцию с передачей имени переменной в аргументах:
    function cache($name,$callback)
    {
    	static $cache = [];
    
    	if(isset($cache[$name])) return $cache[$name];
    	return $cache[$name] = $callback();
    }
    
    var_dump(cache('graph',fn()=>DB::getRecords()));

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

    @rPman
    Для начало это
    ошибки диска. SMART WARNING -> MHDD - ERASE
    диск в мусорку, заменяем новым и только тогда работаем, так как ничто так не уничтожает данные как ошибки с диском во время починки chkdsk.

    Скорее всего поврежден реестр, красивого решения не будет, правильно - восстановить из резервной копии хоть какую старую, но бакапов как я понимаю нет.
    Если создание новго пользователя ничего не меняет, значит поврежден реестр hklm или место описания activex объектов, но если переустановка ПО (надеюсь речь идет об удалении+чистка+установка а не восстановлении) то тогда совсем странно.

    Советую все же переустановить саму систему, времени и нервов сэкономишь больше.
    Ответ написан
    7 комментариев
  • Можно ли убрать маленькую царапину на мониторе ноутбука?

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

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

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

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

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

    @rPman
    в c++ уже очень давно есть полноценные (и соответственно медленные, но не в реализации а идеологически) строки, класс string с которыми и + прокатит и синтаксически удобные
    Ответ написан
    Комментировать
  • Есть ли связь между мощностью и длительностью работы?

    @rPman
    Да, должна быть связь, но...

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

    Про бесперебойники - лучше смотреть на емкость используемых аккумуляторов, а то маркетологи обнаглели совсем и зачастую пишут пургу в этих цифрах. К сожалению определить без тестов КПД преобразователя ups (=12v -> ~220v) так что можешь конечно считать его под 80%... И да, замерив числа сейчас, после пары десятков выключений или месяцев работы в сети, числа изменятся, заметно, ибо аккумулятор деградирует.
    Ответ написан
    Комментировать
  • Api gpt-2 на C++?

    @rPman
    там обычные http запросы, подключай любую библиотеку и пользуйся, например libcurl (первый пример из гугла)
    p.s. на c++ будет неудобно
    Ответ написан
  • Как отловить url перехода браузера?

    @rPman
    это?

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

    @rPman
    можно написать триггер на добавление новой записи, чтобы обновлял нужное тебе поле сделав что то типа select max+1

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

    p.p.s. а если ты удаляешь 'из середины' твоей последовательности, а потом добавляешь новую, ты хочешь получить новое значение или освободившееся старое?
    Ответ написан
    Комментировать
  • Надо ли тут использовать WebSocket?

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

    Server site event или вебсокеты, по мне так это одно и то же но вебсокеты более универсальны (т.е. свой вебсокет сервер удобно использовать и бакэнду для inter-process communication)
    Ответ написан
    Комментировать
  • Нормально ли для SSD издавать скрежет?

    @rPman
    Почему ты считаешь что это ssd?

    Скрип или свист не механические элементы создают в основном только электролитические конденсаторы и может быть дроссели контроллеров питания или трансформатор в блоке питания.

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

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

    Уменьшай количество соединений в настройках торент.

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

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

    Мы тут можем только гадать, если это HTTP Authorization Basic то у тебя должны быть логин и пароль, эту авторизацию поддерживают все основные библиотеки, на php все пользуются curl, первый же пример из гугла

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

    @rPman
    В общем случае никак.

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

    Вот к примеру список попыток это изменить, но воз и ныне там

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

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

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

    @rPman
    Вставь флешку или карту памяти с установленным efi grub, который уже запускает твою систему.

    По правилам uefi может видеть загрузчик на removable media типа флешки, cdrom и карты памяти, а значит за неимением альтернативы, загрузится с нее.
    Ответ написан
    Комментировать
  • Как перевести программу c++ в ехе и что бы запускал ось на любом компьютере с Windows?

    @rPman
    Вопрос очень на самом деле сложный.

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

    Зачастую, если пользуешься какой-нибудь средой разработки (IDE, например Microsoft Visual Studio) то за сборку exe файла и всего проекта будет отвечать она, а пользователю в мышевозекательном интерфейсе дается возможность настроить все необходимое.

    Например создавая проект "Консольное приложение c++" (название приблизительное, не помню точно уже) проект будет автоматически настроен на сборку консольного приложения, лишних библиотек не подключено и т.п. Мало того, возможно понадобится собрать приложение сразу для нескольких архитектур (x86 и x86_64 например), т.е. по набору exe/dll на каждую архитектуру, и бывают случаи когда даже файлы баз данных не переносимы и потребуют свои для каждой.

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

    В самых простых случаях, когда на целевой машине даже не надо создавать ярлык (просто распаковать и все), можно воспользоваться каким-нибудь self extracted archive (у winrar такая опция есть). Иногда инструменты для создания такого пакета есть в самой IDE (точно помню у visual studio для managed .net кода такое было), а иногда это стороннее приложение, для windows рекомендую попробовать inno setup, позволяет создавать не только exe установщик но и msi (специализированный формат windows для установочных архивов), это приложение позволяет описывать процесс установки в виде некоторого языка, не заморачиваясь с интерфейсом.

    p.s. windows нет прямого ограничения по запуску приложений без установки, т.е. просто копируй вручную exe файл и все

    upd. для с++ добавляется еще один челедж, решить, каким компилятором собирать, какими стандартами (стандарт реализация эксепшен try/catch/throw, формат имен подключаемых dll и т.п.), какими базовыми библиотеками (например какая будет использоваться libc) и даже для какой версии ОС собираешь (например собрав под последнюю win10 приложение может не запуститься на win7 или winxp, потому что будет требовать несовместимую версию visual studio redistributable (vcredist*.exe этот пакет обновлений таскают с собой все кому не лень, и кстати по лицензии делать это без разрешения майкрософт низязя)

    Так уж исторически сложилось, что нормально тулчейн найти под windows можно либо:
    * gcc (gnu c compiler) - задает всем остальным, тут полнее реализуют новые стандарты, работает во всех ОС, но при этом есть windows сборка (смотреть у mingw кстати она есть по до все ос, позволяет кросскомпиляцию типа из linux собрать windows exe) а есть cygwin (несовместимая ни с чем, но качественно повторяет linux стандарты)
    Поговаривают что mingw все, кончился :(
    * microsoft visual c++ compiler (идет с visual studio), пытается задавать свои ни с чем не совместимые стандарты, корежит существующие, с целью создать хаос и привязать разработчиков только к windows
    и это у майкрософт получается, к сожалению
    * llvm и clang (это отдельные проекты но когда говорят об одном то и о другом), стандарт стоит особняком, так как llvm это некая виртуальная машина, с очень эффективной реализацией, с jit и оптимизациями
    настроить на windows это еще надо уметь, но есть возможность прописать для использовании в visual studio!
    Ответ написан
    Комментировать
  • Как ограничить доступ к USB-токенам на терминалке Windows Server 2019?

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