Задать вопрос
  • Заменить процессор для просмотра FHD/4K?

    @rPman
    без иксов
    и скорее всего без аппаратного ускорения, даже встройки должно было бы хватить.

    я помню на очень древней машине 2013 года! запускал в браузере FHD 60fps без лагов, на проце такое бы там не сработало.

    ставь иксы и проверяй что используется аппаратное ускорение
    Ответ написан
  • Есть ли какие то метрики для обнаружения брут форс атаки (метрики по которым можно отличить брут форс атаку от обычного ввода пароля)?

    @rPman
    да - количество запросов в секунду на один аккаунт

    при обнаружении, аккаунт блокируется на авторизацию (работа ранних авторизаций не блокируется), на почту владельца высылается ссылка с уникальным id для того чтобы легитимный пользователь мог авторизоваться при необходимости
    Ответ написан
  • Как собрать компьютер на базе ARM?

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

    До сих пор первенство в маложрущих энергию домашних пк (имеется в виду доступных) уверенно занимает интель, с его процессорами серии intel celeron N и потреблением 10 ват. Материнки легко достать с запаянным процессором, так и купить готовый ПК в формфакторе книга (до войны они в России были доступны с очень низкими ценами, теперь топать в китай). Самое главное это x86, со всеми фишками типа добавить дискретную видеокарту, оперативной памяти (правда был момент когда лимитировали ее 8гб), нормальный sata/nvme диск по ситуации и т.п. Ядер мало но производительность в однопотоке всегда была на достойном уровне
    Ответ написан
    Комментировать
  • Вызов VBS из другого скрипта с передачей текстовой переменной - как?

    @rPman
    у тебя следующие варианты:
    - передать в параметрах, заключив текст в ковычки и проследив чтобы этих ковычек не было в тексте (так же не было миволов новой строки и еще кучи других, скорее всего управляющих, других кодировок и т.п.)
    - сериализовать сообщение (преобразовать в другую строку) так чтобы в нем не было 'опасных' символов, к примеру самый простой это hex encoding
    Есть еще лимит на длину строки, но там на выбор 256, 4096, 16к,... смотря как WScript.Shell это реализует
    - НАИЛУЧШИЙ, сохранить строку в файле, передать его имя в качестве аргументов и прочитать его уже в vbs

    p.s. Wscript.Arguments.Item(0) не 0 а 1, нулевой элемент имя запускаемой программы/скрипта
    моя ошибка
    Ответ написан
  • Проблема с проводом для ssd. Как решить?

    @rPman
    да переходники есть.

    Потребительские ssd это скорее всего sata, это такой тонкий разъем с длинной щелью (тип мама) в виде буквы Г, а разем-штырек (папа) на диске.

    Непонятный доп. провод питания это устаревший стандарт molex 4 pin (им к примеру4 питались жесткие диски ide)

    Вот пример такого переходника

    Так же возможно использование разветвителя типа такого
    Ответ написан
    4 комментария
  • Как получить значение с querySelector?

    @rPman
    тебе так сложно нажать правую кнопку в инспекторе на нужной ветке и выбрать copy as css selector?
    не всегда оно красивое но браузер старается
    #processor > option:nth-child(1)

    по теме, воспользуйся css selector по значению атрибута
    #processor > option[value="6398"]

    p.s. тебе точно нужно выбирать по значению цены? может правильнее использовать querySelectorAll и перебирать каждое значение, проверять по условию и действовать?
    Ответ написан
    Комментировать
  • Как в контейнере из php apache увеличить выделенную память?

    @rPman
    посмотри полный путь до конфиг файла, так как в системе их будет несколько, один для php-cli, другой для php-apache, третий для php-cgi, там прямо в пути это название будет
    Ответ написан
    Комментировать
  • Как восстановить данные с мёртвого hdd?

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

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

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

    найди сервис онлайн и отправь диск почтой.
    Ответ написан
    Комментировать
  • Как организовать поиск в БД с 1000 таблиц?

    @rPman
    То что базу надо правильно проектировать уже сказали.

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

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

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

    Таблица может иметь вид: tablename, columnname, id, value (если это критично, вместо одного текстового поля value можно заводить по одному на каждый тип или представление данных, в форме, по которой проводится поиск), при заполнении, индексов у этой таблицы быть не должно, в этом случае заполнение будет максимально оперативным (особенно если ее физическое размещение будет на другом носителе, смотри как в твоей базе данных создавать таблеспейсы или иные методы), допускается использование другой базы данных, в каком то смысле это даже более оправдано. Пустые значения (null и под задачу '' и может даже 0) можно сюда не добавлять, если поиск таких значений не актуален. Так же можно пропускать какие то таблицы, поля и даже записи по каким то критериям, если они могут быть не важны для анализа (например фильтрация по дате).

    После заполнения в таблицу нужно добавить индексы по value, и опционально по columnname/tablename. Теперь простой запрос select * from эта_cache_table where value=? даст максимально быстро результат.

    p.s. если речь идет о простом анализе данных в базе, например изучение структуры человеком, который разбирается в sql, можно очень простым способом сделать sql дамп всей базы и искать нужные значения простым поиском по строке (осторожно, в зависимости от базы данных, символы в строках могут экранироваться различными способами), так же можно поэкспериментировать с разными методами экспорта данных (например почти все базы имеют утилиты экспорта в csv)
    Ответ написан
    3 комментария
  • Как постоянно получать данные с БД?

    @rPman
    Использовать базу данных как источник событий - плохая идея, т.е. это возможно, разные базы данных предлагают для этого разные инструменты, типа sqlite notifications, postgres notify, у mysql точно видел как мониторили изменения читая binary logs напрямую, в любом случае это извращения.

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

    @rPman
    options.add_argument('-P имя_профиля');
    так же попробуй --profile путь_до_профиля

    профиль создать нужно заранее
    Ответ написан
    1 комментарий
  • Интересный вопрос знатокам парсинга, парсили ли вы гугл тревел?

    @rPman
    да
    два противоположных метода решения задачи парсинга и автоматизации веб приложений:
    1. реверсинженеринг кода веб приложения, выявление структуры и порядок вызова запросов к серверу, и их вызов
    - много сил на реверсинженеринг, сложная поддержка
    + требует мало ресурсов для работы (считанные килобайты ram, т.е. можно запустить 100500 ботов)
    2. запуск браузера или его симулятора и симуляция действий пользователя
    + почти не требует сил на реверсинженеринг, все доступно прямо из браузера и его developer console, простая поддержка
    - требует много ресурсов для работы (сотни мегабайт ram на запуск одного инстанса и нагружает cpu)
    все остальные методы находятся между этими двумя противоположными.

    чтобы кликнуть на кнопку во втором методе требуется 15 секунд на выявление css selector нужного элемента и написание кода document.querySelector('...').click() (это не selenium, а инжект javascript кода на страницу с помощью tempermonkey), да понадобится еще чуть чуть кода на организацию порядка действий, проверку страницы по наличию элементов (например выявить конец пагинации) но это все несоизмеримо проще чем реверсить код сайта чтобы понять как получить куку авторизации из обфусцированного кода (когда владельцы сайтов защищаются от этого) и вычисление таймингов и порядок загрузки элементов страниц (которых может быть несколько) чтобы добраться до нужной... да конечно не все так защищаются, а многие даже с javascript не заморачиваются и фигачат сайты по старинке с server generated страницами, там тогда все тоже не сложно, но для понимания этого исследование провести придется.
    Ответ написан
    5 комментариев
  • Как в Битрикс реализовать AI поиск по фото?

    @rPman
    Задача получения текстового описания по картинке CLIP (что то типа обратная stable diffusion):

    https://github.com/mlfoundations/open_clip
    https://huggingface.co/laion/CLIP-ViT-H-14-laion2B...

    гуглить сразу CLIP image classification, тьма моделей начиная с openai, разбираться долго

    p.s. еще про анализ объектов на изображении начни копать от сюда или лучше segment-anything фейсбук много чего выкладывает

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

    @rPman
    У тебя тут сразу несколько технологий и задач, достаточно сложных и сильно друг от друга отличающихся:
    1. сбор данных с сайта
    целая вселенная - это и реверсинженеринг сайта, и борьба против автоматизированных сборщиков (в зависимости от того как заморочился с этим владелец сайта)
    Настоятельно рекомендую сразу работать с сайтом из браузера, техник много, от простого открытия сайта в обычном браузере с инжектом твоего javascript (например расширение tempermonkey), который будет ходить по сайту, до запуска безголового браузера и управление им из своей программы с помощью selenium, а там кликать кнопки и собирать данные, отправляя их тебе на сервер или сохраняя в локальной базе браузера - localStorage/indexeddb/...
    2. обработка данных
    тесно связана со сбором, данные нужно не просто собрать но и привести к машиночитаемому виду (бывают ситуации когда данные создаются людьми без определенного формата, в этом случае совсем туго), так же это тесно перекликается с технологиями борьбы владельцев сайтов с автоматическими собирателями данных
    Совет, вместе с текстовыми данными собирай информацию о расположении, гораздо проще догадываться о назначении данных, если знаешь их относительную позицию.
    3. анализ данных и поиск закономерностей плюс визуализация
    это не только нейронные сети, алгоритмов тьма, разбираться хотя бы на уровне что это и в каких ситуациях применять, придется... и самое главное результата может и не получиться но узнаешь ты только потом
    работа творческая, и готовых решений скорее всего нет (хотя спасибо, за последние лет 10 собран такой пласт библиотек для работы, один tenserflow и torch чего стоит. Загляни на weka, это огромный сет библиотек и алгоритмов (java) как источник информации об этих алгоритмах
    Ответ написан
    1 комментарий
  • Можно ли в PHP из дочернего процесса создавать еще дочерние процессы?

    @rPman
    php прекрасно создает процессы как с помощью popen так и с помощью exec/passthru, запуская како-нибйдь nohup или просто указывая в конце команды &, а еще есть расширение parallel
    Ответ написан
    7 комментариев
  • Как воспользоваться LLamaSharp?

    @rPman
    Оригинальные веса llama были выложены кажется на github
    magnet:?xt=urn:btih:ZXXDAUWYLRUXXBHUYEMS6Q5CE5WA3LVA&dn=LLaMA

    получаешь что то типа
    7B/checklist.chk
    7B/params.json
    7B/consolidated.00.pth
    13B/...
    ...
    tokenizer_checklist.chk
    tokenizer.model

    тебе нужны все tokenizer* файлы в корне и один из каталогов, соответствующий размеру модели (7B и 13B не знают русского и слабоваты)

    Этот c# проект - это биндинг к оригинальному проекту llama.cpp, там есть python скрипт convert.py (зависимости ставь сам, недостаточно requirements.txt нужен еще pytorch и еще что то, сам разберешься, в windows я не помогу) для конвертации из huggingface формата в суперэффективный ggml (этот формат постоянно меняется, где то раз в месяц, поэтому бессмысленно качать готовые, так как они будут привязаны к конкретной версии llama.cpp), его главная фича - mmap, веса не грузятся в память приложения а остаются в файловом кеше ОС, т.е. повторный запуск приложения моментальный.

    Будь готов к нескольким конвертациям, модели большие, особенно 65B, на диске тебе потребуется как минимум один раз хранить f16 версию (2 байта на вес, т.е. 130Gb для 65B модели) после его можно (но не обязательно) сконвертировать в формат с квантизацией (на вес будет требоваться к примеру 4 бита или 8), это значительно ускоряет работу ценой незначительного ухудшения качества.

    python convert.py --outtype f16 --outfile llama-7b-q4_0.ggml /torrents/LLaMA/7B
    вместо f16 можешь поставить f32, требования к памяти взлетят до 4 байт на вес но в теории это может быть тоже быстро (если критично, проведи бенчмарки), мои тесты показывают что f16 медленнее q4_0

    Опционально можешь провести квантизацию:
    ./quantize llama-7b-f16.ggml llama-7b-q4_0.ggml 2
    тут 2 это тип квантизации
    usage: ./quantize model-f32.bin [model-quant.bin] type [nthreads]
      type = "q4_0" or 2
      type = "q4_1" or 3
      type = "q5_0" or 8
      type = "q5_1" or 9
      type = "q8_0" or 7
    Очевидно что q4_... потребуют половину байта на вес (требования к 64b модели будут примерно 42+5GB ram), разница версий квантизации в скорости и качестве (q4_0 быстрее и чуть хуже q4_1 но я уверен что без синтетических тестов эту разницу на практике не заметишь даже между q16 и q4, она там единицы процентов, но вот скорость значительно отличается).

    Для работы llama.cpp нужен один файл .ggml (внутри и веса и токенизер) его и пиши в путь до модели.

    Поэкспериментируй с количеством threads в настройках, их нужно писать меньше чем позволяет процессор (тем более с гипертреадингом), так же я хз как у него с поддержкой gpu, она появилась относительно недавно, оптимизация по какому то одному конкретному тяжелому расчету.
    Ответ написан
    Комментировать
  • Есть 2USB mini USB кабель с дополнительным питанием, Вопрос, если на второй кабель подать Ипулсное напряжение 5 Вольт, не сгорит?

    @rPman
    может стать плохо и материнской плате
    настоятельно не рекомендуется так делать

    но если что, как минимум нужно объеденить земли блоков питания
    Ответ написан
    1 комментарий
  • Не получается использовать метод toFixed() в javascript на значение массива, как это сделать?

    @rPman
    там строка а не число, преобразуй ее в число с помощью parseFloat сначала (и по уму проверить на ошибки)
    Ответ написан
    1 комментарий
  • Как создать скрипт, который заходит на сайт и нажимает на кнопку каждый час?

    @rPman
    Для тех кому очень сложно программировать но есть минимальное понимание этого можно использовать плагин tempermonkey который инжектит пользовательский скрипт на сайт по ссылке или ее маске, а там нужна пара строчка вида:
    document.querySelector('css selector').click(); // кликнуть на кнопку
    setTimeout(()=>window.close(),3000); // закрыть окно через 3000 миллисекунд

    css selector определяется тупым копированием (в большинстве случаев) из инспектора (правая кнопка на элементе, инспектировать, правая кнопка на элементе в инспекторе, копировать как...)

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

    @rPman
    Можно взять уже обученную языковую модель (из открытых лучшие это bloomz и фейсбуковский opt, из нелегальных но кардинально лучших - llama, ну а чужие платные - chatgpt4 api, не уверен что там открыли доступ на дообучение) и дообучнить (finetune).
    Оцени модели на самом сложном бенчмарке MMLU, opt66b - 35, bloom175b - 39, llama65b - 68, gpt35 - 70, gpt4 - 86

    Есть набор алгоритмов peft, с помощью которого можно тюнить очень большие модели на слабом железе и небольшом количестве данных.

    Такие модели как llama и chatgpt4 можно использовать как обычного человека, буквально, предоставляя ему текст и задавая вопросы (текст+запрос+ответ+запрос... не должны превышать размер контекста, для llama это 2к токенов, для chatgpt - 4к или 8к). Если нужно перед вопросами залить в модель большой объем данных то используют дообучение. Внимание, это ломает модель, она запоминает обучаемые данные но начинает забывать области знаний, которых не было в дообучающей выборке, с этим борются в т.ч. подмешивая в нее данные из стартового датасета, на котором обучалась изначальная модель. Процент данных - вопрос экспериментальный, я не нашел (точнее статьи есть но их надо читать изучать, их много) примеров.

    свойство это катастрофическое забывание
    Ответ написан