Задать вопрос
  • Как подключить адаптер m2 x4 в порт PCIe x1?

    @rPman
    исчезают 2 из 6 SATA портов
    sata диски обычно сильно медленнее nvme, пытаться выносить быстрый диск на медленный контроллер/порт ради того что бы медленные диски остались на прежних портах глупо, лучше приобрести дешевый sata контроллер, пусть он в тормозном слоте стоит а nvme останется в быстром
    Ответ написан
  • Нужно ли держать свободное место на разделе SSD диска?

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

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

    Для контроллера должно быть наплевать, где именно размещаются неиспользованные сектора, все равно их физическое размещение никак не корелирует с номером сектора. Именно поэтому, если в ОС поддерживается trim то достаточно вручную оставлять свободным достаточно места на разделе, занимающем все доступное место на ssd, и получить тот же результат.

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

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

    p.s. если размер неиспользуемого раздела будет порядка половины или даже еще больше (например 3/4 для QLC чипов) то помимо срока годности диска, можно получить еще и высокую скорость непрерывной записи, почти без замедления (размер кеша для ssd дисков qlc 1/4 от общего размера), к сожалению на практике с дешевыми дисками все еще хуже, я видел 128гб диск у которого скорость падала после записи считанного десятка гигабайт, т.е. получается для такого диска наилучший размер рабочей области 1/8 от общего объема, расточительно но возможно для баз данных это может оказаться наилучшим решением из дешевых комплектующих.

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

    @rPman
    Тебе нужна утилита tee из мира linux
    anthropic claude haiku
    // Save this as a .js file, e.g. "tee.js"
    
    // Get the command-line arguments
    var args = WScript.Arguments;
    
    // Check if a file argument was provided
    if (args.length < 1) {
        WScript.Echo("Usage: cscript tee.js <output_file>");
        WScript.Quit(1);
    }
    
    // Get the output file name from the arguments
    var outputFile = args(0);
    
    // Create a file object to write to the output file
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var file = fso.OpenTextFile(outputFile, 2, true); // 2 = ForWriting, true = Create if not exists
    
    // Read from stdin and write to both stdout and the output file
    while (!WScript.StdIn.AtEndOfStream) {
        var line = WScript.StdIn.ReadLine();
        WScript.Echo(line);
        file.WriteLine(line);
    }
    
    // Close the output file
    file.Close();
    Но лучше писать утилита, обрабатывающую вывод каждого запуска yt-dlp и откладывающую в лог только важную информацию, типа файл загружен или нет
    Ответ написан
    Комментировать
  • Объясните суть Systemctl в ubuntu?

    @rPman
    Скорее всего за статусом systemd следит сам только в том случае если запуск произошел через него (но если была ошибка то там будет кусок лога об этом), ufw смотрит в самого себя, и про systemd ничего не знает, потому что может работать на системах без него в принципе.

    На сколько я смотрел, большинство скриптов systemd это надстройка над оригиналами, и если честно не очень понимаю, почему они там такие многословные, часто это bash а это целая философия...
    Ответ написан
    Комментировать
  • Как цвет подсветки клавиатуры при изменении раскладки?

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

    @rPman
    Сетевые устройства типа link/ether могут быть объединены в bridge и полученное устройство так же будет типа link/ether и ему можно назначить ip адрес (собственно у него будет полноценный mac и он получит его автоматически), по факту сетевой мост это виртуальный неуправляемый коммутатор (свитч), которые могут быть подключены каскадно (только кольца не нужно делать).

    Если у тебя есть какой-либо vpn, так же создающий link/ether (pppoe это тоже), то его можно добавить в сетевой мост и он так же будет работать как ожидается. Т.е. у тебя может быть сетевой мост на нескольких компьютерах в сети, каждый компьютер может поднять свой vpn ether, и добавить его в этот сетевой мост. в итоге все эти vpn сети будут объеденены в одну локальную сеть, без настроек маршуртизации и дополнительных шевелений.

    p.s. могут быть нюансы с arp таблицами, например при создании сетевого туннеля типа ethernet с помощью ssh, и объединение его tap0 в сетевой мост с физическим устройством из локальной сети будет работать, но с задержкой (примерно в 20 секунд) с момента подключения, пока информация об удаленных устройствах сети доедет до локальной (по крайней мере я эту проблему понял именно так), по каким то причинам, передобавление устройства в мост эту таблицу у bridge в других компьютерах локальной сети сбрасывает
    Ответ написан
    Комментировать
  • Как прописать команду сворачивания приложения в трей?

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

    @rPman
    Не воспринимай как решение, но как другой взгляд на него.

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

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

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

    @rPman
    Есть две 'задачи', какая из них вам нужна, не понятно:
    1. передача данных по сети
    * что бы никто не подсмотрел
    * что бы никто не мог скрытно подменить
    это решается ssl шифрованием и удостоверяющими центрами (которым можешь быть ты сам), пример https протокол и инфраструктура вокруг
    2. предоставление гарантий что алгоритм на устройстве пользователя не будет подменен на похожий/прикидывающийся настоящим
    * что бы никто не мог украсть данные
    * что бы никто не мог украсть алгоритмы
    * что бы никто не мог навредить соседним устройствам
    Эта сложнейшая не решена, но в частных случаях есть какие то решения, типа обфускации алгоритма и структур данных для удорожания их понимания и внесения изменений... т.е. вся защита будет строиться на экономической целесообразности процесса, если взлом будет дороже профита от него, этим заниматься не будут.
    Отличный пример - вместо запуска кода на машине пользователя, его можно запустить на защищенной удаленной машине, к которой доступ только по определенным правилам, тупой пример - удаленное управление машиной, на которой запущено требуемое приложение в режиме kiosk-mode, т.е. без интерфейса ОС и возможности выйти за границы этого приложения. Сломать или как то проанализировать приложение в этом случае невозможно, а автоматизация для кражи данных решается лимитами доступа к ним.
    Ответ написан
    Комментировать
  • Как проводится нагрузочное тестирование на проекте?

    @rPman
    Непрерывно! но не тестирование а мониторинг уже имеющейся нагрузки.

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

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

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

    @rPman
    Бесконечные сессии и на браузере возможны, это как разработчик приложения решил, так и сделал.

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

    Грубо говоря, бесконечная сессия, это если ты ничего не сделал, что бы ее уничтожать.
    Ответ написан
  • Как узнать длину видео в PHP?

    @rPman
    Установить пакет ffmpeg и использовать утилиту ffprobe
    Вот информация о видео в json:
    ffprobe -v quiet -print_format json -show_format example.avi

    или вот конкретно одно поле с длительностью в секундах
    ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 example.avi


    соответственно на php выполни эту команду, например:
    $duration=`ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$filename"`';

    и получишь в $duration секунды в float или пусто при ошибке.
    Ответ написан
    1 комментарий
  • Как из https://m.vk.com/captcha.php?sid=183721452994&dif=1 взять капчу в виде byte[]?

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

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

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

    Из дешевых рекомендую какой нибудь AMD Ryzen 5 8500G (18.р.) - холодный, достаточно производительный, мало ядер (играм не надо, да домашнему пользователю и не нужно больше) или Intel Core i5-12600KF (20т.р.) больше ядер, горячее...

    upd. https://pastebin.com/nVi3wfZF из прайса dns на сегодня и бенчмарк
    spoiler
    исключительно из эксперимента код для извлечения данных с вебстраниц и их обработки писал claude sonnet 3.5, главное правильно давать задания и проверять результат, ошибок в коде было минимум
    t6sbyashsfs1h7-wsnaatb1kf-i.png
    Исходя из анализа лучше выбирать эти процессоры (по верхней грани, те что ближе к началу изгиба):
    Процессор Intel Core i3-14100F OEM [LGA 1700, 4 x 3.5 ГГц, L2 - 5 МБ, L3 - 12 МБ, 2 х DDR4, DDR5-4800 МГц, TDP 110 Вт]	10499	3789
    Процессор AMD Ryzen 5 7600 OEM [AM5, 6 x 3.8 ГГц, L2 - 6 МБ, L3 - 32 МБ, 2 х DDR5-5200 МГц, AMD Radeon Graphics, TDP 65 Вт]	20999	4143
    Процессор AMD Ryzen 5 9600X OEM [AM5, 6 x 3.9 ГГц, L2 - 6 МБ, L3 - 32 МБ, 2 х DDR5-5600 МГц, AMD Radeon Graphics, TDP 65 Вт]	31499	4587

    А вот анализ стоимости производительности (bench/price)
    e9kiebz1d9qeihciijmqv9ervjm.png
    тут в районе 20т.р.-30т.р. лучшими оказываются
    Процессор AMD Ryzen 5 8500G OEM [AM5, 2P x 4.1 ГГц, 4E x 3.2 ГГц, L2 - 6 МБ, L3 - 16 МБ, 2 х DDR5-5200 МГц, AMD Radeon 740M, TDP 65 Вт]	18299	3920
    Процессор Intel Core i5-12400T OEM [LGA 1700, 6 x 1.8 ГГц, L2 - 7.5 МБ, L3 - 18 МБ, 2 х DDR4, DDR5-4800 МГц, Intel UHD Graphics 730, TDP 74 Вт]	24299	3515
    Процессор Intel Core i9-11900F OEM [LGA 1200, 8 x 2.5 ГГц, L2 - 4 МБ, L3 - 16 МБ, 2 х DDR4-3200 МГц, TDP 65 Вт]	28999	3402
    Процессор Intel Core i7-12700K OEM [LGA 1700, 8P x 3.6 ГГц, 4E x 2.7 ГГц, L2 - 12 МБ, L3 - 25 МБ, 2 х DDR4, DDR5-4800 МГц, Intel UHD Graphics 770, TDP 190 Вт]	31299	4025

    Ответ написан
    3 комментария
  • Почему ответ на русском языке в терминале VSC не принимается и просто скипается?

    @rPman
    Добавь в switch case секцию default: и выведи на экран что у тебя в age (что бы увидеть невидимые символы типа табуляция, \n и т.п, сериализуй его чем то типа json или если у тебя java 15 версии String.escape() ) либо отладкой проанализируй содержимое после ввода слова с консоли.

    Еще момент, у тебя switch подчеркнут варнингом, скорее всего из-за отсутствия default, но есть еще вариант, на сколько я знаю до кажется 7 версии строки в switch использовать нельзя (в том же c++ это вообще было типа не ошибка, но строки не сравнивались, а использовались указатели на них, соответственно это работало как ожидается только для констант) может оно об этом тебе и говорит?

    upd. в windows, java Scanner нужно принудительно указать в какой кодировке будет поступать ввод, что бы она корректно конвертировала во внутреннее представление, можно это сделать так
    Scanner scanner = new Scanner(System.in, "CP866");
    или при запуске приложения
    java -Dfile.encoding=cp866 Switch
    Ответ написан
  • В чем причина невозможности запустить windows-xp с флэшки?

    @rPman
    Настоятельно рекомендую вместо установки windows xp классическим способом, сделать это на быстрой и удобной машине, в виртуалке, затем перенести установленную систему любым известным способом, например backup/restore (я использую linux и dd либо штатную partclone, умеющие и ntfs, работает быстрее dd).

    Мало того, процесс установки можно прервать на первой перезагрузке (когда установщик копирует себя на диск и устанавливает минимальный загрузчик на диск), собственно сама установка windows и драйвера, происходят уже после первой перезагрузки.
    Ответ написан
    Комментировать
  • Почему остаётся след от спрайта?

    @rPman
    Типовой способ, каждый кадр все видимое поле очищается и ПОЛНОСТЬЮ перерисовывается, что бы не мигало, делают это в виртуальный буфер, который после этого копируется на экран.

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

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

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

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

    По умолчанию, каждая открытая модель, доступная для локального запуск, поставляются с проектом с исходниками и подробными инструкциями по их запуску, для самых новых и топовых решений это обычно единственный способ. Для этого решения требования к железу самые высокие, а именно, много оперативной памяти gpu, на одной материнской плате. Обычно это по одному байту на вес сети (8бит квантизация) плюс память на размер контекстного окна, размера вопроса и ответа (зависит от модели, от 2гб до десятков), например llama70b будет требовать 70гб+ещё 10гб+-.). Я покупал nvidia 4060ti 16gb vram, у них самая дешёвая память за гигабайт и работает достаточно быстро именно для нейронок (она дешёвая потому что для геймеров тормозная).

    Некоторые (многие, даже топовые, с задержкой в месяц) появляются в llama.cpp или основную на ней ollama, которая очень эффективно работает без видеокарты и даже если оперативной памяти видеокарты чуть чуть не хватает. Я запускал lllama70b на 64гб обычной ram, 5бит квантизация, скорость 1.5токена в секунду... Всякие 8б летают но они глупые.
    Ответ написан
    Комментировать