• Есть ли разница в нагрузке на процессор?

    @rPman
    Конечно нужно ставить sleep и ждать половину времени, в это время процессор не будет занят. В этом режиме запаздывание отлова пиксела будет до полусекунды.

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

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

    смещение у каждого интервала свое (меняется в пределах от 0 до длины интервала, само собой в миллисекундах), твоя задача найти такие значения для смещений, чтобы один интервал возвращал чаще то же самое что другой в последний раз (т.е. был позади во времени перед сменой значений), а это другой чаще новые значения (сразу после смены значений). Т.е. ты сохраняешь последние N измерений со значениями интервалов и boolean (подходит или нет) и считаешь градиент для интервалов (количество true по значениям интервалов), из них уже вычисляешь нужно ли увеличивать интервал или уменьшать на некую дельту.
    Ответ написан
    Комментировать
  • Программный Raid 5 + nwme cache?

    @rPman
    bcache отлично работает, как в режиме кеша только для чтения так и как дополнительный буфер для записей (writeback)
    и это лучший способ способ сожрать ресурс записи ssd диска

    у меня так на очень дешевых комплектующих работала следующая схема linux сервер, специально выделенные медленный hdd + 250гб ssd диск в качестве кеша, полученный ускоренный раздел публикуется с помощью iscsi по гигабитной сети, его монтирует windows машина и на этом диске размещены игрушки (ark будь он неладен 400гб с еженедельными обновлениями по 50-100гб), чуть больше чем за год сожрал 250тб ресурса. Итоговая скорость запуска была примерно в 3 раза быстрее чем если hdd подключить напрямую к windows машине.
    Ответ написан
    2 комментария
  • Как удалить много строк (порядка 500.000) из csv файла в Python?

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

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

    По окончанию работы, если ошибок не будет, старый файл удаляешь (или переименовываешь его в xxx.bak) а новый переименовываешь под старым именем
    Ответ написан
    Комментировать
  • Файл подкачки на другом диске?

    @rPman
    своп настриивается как точка монтирования в /etc/fstab, если тебе автоматически после перезагрузки
    UUID=xxx-xxx-xx-xxx none swap sw 0 0
    UUID=xxx тут способ указания раздела (или всего диска) для свопа, можно указать устройство /dev/sdXY или сразу файл (автоматически подключит loop девайс и будет туда свопаться)

    если тебе однократно, то подключать командой
    swapon устройство

    Однократно своп нужно проинициализировать командой
    mkswap устройство

    p.s. на сколько я знаю, уже давно, своп может размещаться в т.ч. по сети (nfs например или nbd), точно помню был пример размещения свопа в vram gpu, есть где то поддержка сжатия данных на лету и тьма чего то еще
    Ответ написан
    1 комментарий
  • Как спарсить данные с TrandingView?

    @rPman
    Данные там лежат в огромном json прямо встроенном в саму страницу, которая грузится без каких либо особенностей, тупо wget-ом, очень странное решение но
    <script type="application/prs.init-data+json">{"FYBZHq":{"context":{"request_context":{"user":{"is_authenticated":true,"is_...}}</script>
    пример FYBZHq►data►news►data►items►0►
    id	:	prime:0273264f867b8:0
    title	:	Результаты торгов акциями в секторе основных торгов Московской биржи
    storyPath	:	/news/prime:0273264f867b8:0/
    sourceLogoId	:	prime
    published	:	1701792002
    source	:	ПРАЙМ
    urgency	:	2
    permission	:	headline
    provider	:	prime
    Ответ написан
    Комментировать
  • Какую видеокарту выбрать для машинного обучения, майнинга, гейминга и 3д-моделирования?

    @rPman
    К сожалению, весь современный софт заточен на nvidia решения. С некоторыми оговорками на amd и скорее всего не на долго (т.е. скоро окончательно будет все), например stable diffusion еще запускают на топовых amd, с заметной деградацией скорости (т.е. карта в играх будет типа быстрее nvidia но в нейронках будет хуже, это вопрос исключительно софта и скорее всего политики).

    Самое главное для нейронок - это vram видеокарты, все остальное - частоты, количество процессоров, шина и прочее конечно важно, но обычно идет в комплекте если выбирать решения с большой памятью.

    Если денег мало, то имеет смысл обратить взор на медленную (еще вопрос на сколько, в играх это ~30%..50% от топовых но для нейронок возможно не так плохо) но с большим объемом vram - nvidia geforce rtx 3060 16gb с ценами порядка 35т.р. когда как остальные решения стартуют от 50т.р. а заканчиваются на 300т.р. (я про потребительские решения, серверные найти вообще нереал и цены там зашкаливают, соотношение цена/производительность у серверных хуже всего)

    Если денег меньше, то бери любую nvidia с максимумом vram, построив табличку цена, fps и выбирая наибольшее соотношение цена/fps или индекс производительности (бери один и тот же тест).

    ВАЖНЫЙ момент! почти все алгоритмы нейронных сетей могут быть распаралелены на несколько gpu (либо легко модифицированы для этого), я имею в виду когда размер самой нейросети такой огромный либо нейросеть маленькая но обучающая выборка большая, отсюда интересный вариант, если нужно больше чем 16гб vram, может оказаться дешевле набить материнку несколькими 3060 (она вообще самая дешевая за гигабайт), и за счет возможности загружать данные в несколько gpu одновременно, это даст интересный буст на решения, которые упираются в pci-e (не говоря о цене, nvidia 24гб начинаются по ценам от 110т.р., а 2x3060 обойдутся в 70т.р.)

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

    upd. минимальное требование по vram к stable diffusion - 3gb (минимальный размер картинок меньше 512x512, batch меньше 4, опции --xformers и --lowvram и невозможность генерации видео), рекомендуется 6Gb

    для генерации видео на stable diffusion нужно минимум 8gb лучше больше

    минимальный размер адекватной языковой модели 7Gb mistral может заработать на 8Gb с 8бит квантизацией, так же я слышал что llama13b тоже работает на 8gb видеокартах

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

    @rPman
    у тебя prices определена как global, добавь global prices в этот метод либо определи prices как мембер класса и убери эту global.
    Ответ написан
    Комментировать
  • Установка программы через wine?

    @rPman
    wine в каких то случаях пытается перенести ярлыки приложений windows -> linux но возможно это работает в каких то неизвестных мне комбинациях DE и версий wine.

    у wine есть понятие WINE_PREFIX, это каталог (по умолчанию ~/.wine/ ) где в каталоге ~/.wine/drive_c лежат файлы windows (там еще есть симлинки на диски, например dosdevices/z: это ссылка на домашний каталог пользователя, можно оставлять свои).

    чтобы запустить приложение, нужно написать wine полный_или_относительный_путь_до_приложения т.е. к примеру
    wine ~/.wine/drive_c/Program\ Files\ \(x86\)/WinRAR/WinRAR.exe

    можно кстати написать
    wine "c:\Program Files (x86)\WinRAR\WinRAR.exe"
    Ответ написан
    Комментировать
  • Как правильно лоигровать ошибки php?

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

    Но если перед запуском приложения выполнить php с ключом -l (--syntax-check) то приложение не будет запущено а только пройдет проверка на ошибки и при наличии она будет выведена, ее можно прочитать
    exec('php --syntax-check main.php',$error_str);

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

    @rPman
    Своя vps, socks proxy на основе ssh тунеллинга и отдельный профиль браузера с настроенным в нем прокси
    Ответ написан
    Комментировать
  • На каком языке программирования писать сервер для игры?

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

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

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

    p.s. Объяснить в простом ответе что и как делать невозможно, Сергей П привел отличную аналогию.
    Ответ написан
    5 комментариев
  • Как включить бд в exe и как ей потом пользоватся?

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

    sqlite умеет открывать базу данных в оперативной памяти, соответственно храни дамп своей базы в ресурсах, вот пример на c++ как импортировать и экспортировать memory базу данных, правда он с файлом, но как я понимаю проблем тут не будет работать с техническими потоками на оперативной памяти с помощью Application.GetResourceStream
    Ответ написан
    Комментировать
  • Использование Linux?

    @rPman
    Первая проблема любого linux - это драйвера, пока производители не пошевелятся, доля этой ос будет не выше 3-5% а пользователи будет играть в рулетку - заведется/не заведется.

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

    Ну и по поводу запуска приложений, библиотеки устанавливать надо и на windows. Если разработчик не позаботился чтобы отметить нужные в зависимостях, ставить из вручную. Те что идут в репозитории обычно корректно настроены.
    Ответ написан
    1 комментарий
  • Нормально ли, что нейросеть T5 не может использовать знак переноса строки?

    @rPman
    На основе трансформера? Проверь что у тебя токен такой есть.
    Ответ написан
    1 комментарий
  • В чем причина странного поведения PHP?

    @rPman
    Профилировать вам нужно ваш код, и не только работу с базой данных, там как раз нагрузка была бы.
    Самое простое, чего может оказаться достаточно чтобы локализовать проблему:
    * если используется cgi способ запуска php (обычно если это fastcgi/phpfpm) то все процессы php будут видны как обычные процессы (top/atop) а подробности по каждому можно посмотреть в /proc/$pid/{environ и cmdline} будет видно какой php работает и какой там запрос
    * если используется apache module, то ставишь apachetop

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

    Конечно используй php profiler, любой на выбор, считай это продвинутый логер всего что запускается и как долго работает и сколько памяти потребляет.

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

    @rPman
    Эффективнее может оказаться разобрать мертвый аккумулятор и заменить в нем аккумуляторные банки

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

    @rPman
    Если я верно помню, oldconfig берет конфигурацию из предыдущей сборки (а что там будет по умолчанию не совпадает с тем что выбрал мейнтейнер), т.е. из каталога с исходниками, а тебе, если ты хочешь подправить те что уже в дистрибутиве идут, то бери из /boot/config... (кстати помню для gentoo брал и копировал конфиг у ubuntu, решая таким образом проблемы с видео).

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

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

    p.s. ложка дегтя, за обновлениями придется следить самостоятельно, никакого функционала обычно в ОС для этого не встраивают
    Помню в gentoo для этого была утилита genkernel но ее все равно запускать вручную
    Ответ написан
  • Как выполнить POST запрос PHP и получить ответ JSON?

    @rPman
    В браузере, в консоли разработчика, вкладка network, найти свой запрос и нажать на нем правую кнопку - копировать - as curl, полученную команду вставляешь на php между тильдами $result=`curl ....`, добавив к строке -q (чтобы ничего не выводило в stdout)

    можно вручную переделать на вызов curl_init, curl_setopt.... там фактически один в один заголовки в -H а данные формы в -d
    Ответ написан
    Комментировать
  • Какие методы сжатия изображений (миниатюр) для сайта есть?

    @rPman
    Берешь утилиту convert из imagemagic (идет штатно с любым linux) и перебирая параметры сжатия добиваешься нужного размера изображений как в пикселах так и в байтах на диске.
    Ответ написан
    Комментировать
  • Парсинг по расписанию и аплоад в БД?

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

    Если удобного идентификатора нет, то обычно самое простое, - формировать из сравниваемых данных строку одинаковым способом, и получать из нее хеш сумму (md5 более чем подходит, если данных не 16-значное количество, т.е. не нужно заботиться о коллизиях), его и используй как идентификатор и храни где-то списком как предыдущие значения и сравнивай с ново загруженной, прямо во время анализа. Записи, хеш сумма которых, не была найдена в записях, помещай в базу данных (ну или обновляй значения, если речь идет о модификации а не добавлении новых).
    Ответ написан
    Комментировать