Задать вопрос
  • Комьютер работает не от всех розеток в квартире, почему так?

    @rPman
    Для начала открой документацию по материнской плате и смотри, что значат 5 писков (у разных вендоров разный порядок индикации звуком)

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

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

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

    в документации по nodejs приведет сразу же пример простейшего веб сервера, ищи что то похожэее, смотри в каких файлах идет вызов и соответственно запускай этот код

    p.s. есть практика размещать все необходимое для запуска приложения в настройках пакета, тогда запуск будет что то типа:
    npm install
    npm build
    npm run-script start

    Т.е. install установит и обновит зависимости проекта, build запустит скрипты подготовки и оптимизации (например webpack), в общем что указано разработчиками, ну и запуск run-script start

    И конечно, если это сделать в каталоге проекта в терминале, то закрытие терминала все закроет автоматически, поэтому это нужно будет прописать в виде сервиса systemd или каким то другим способом, принятом в твоей ОС
    Ответ написан
    Комментировать
  • Возможно ли выгрузить часть слоёв в VRAM видеокарты AMD, если основная - NVIDIA?

    @rPman
    Да, но поддержку пилить придется самому.

    Например llama.cpp есть поддержка нескольких видеокарт, на сколько я знаю есть возможность с разными вендорами через opencl.

    Там есть библиотека ggml, чтобы свои сети пилить и даже конвертировать их их pytorch
    Ответ написан
    Комментировать
  • Какие лимиты в ChatGpt-4 за 20 долларов?

    @rPman
    Используй api, в документации кода готового достаточно, лимиты практически отсутствуют (там больше речь о непрерывной нагрузке) и оплатой по факту использования, минимальная оплата 5$ (иначе не будет доступа к gpt4), деньги на счёте будет год лежать до их траты (там оплачиваешь план, остатки сгорают через год)

    К сожалению голосовой ассистент по api недоступен. Так же не доступны агенты и плагины, включая поиск по сети.

    P.s. claude anthropic 32к контекст в бесплатной версии, несколько исходных файлов влезают в контекст, работает неплохо

    P.p.s. напоминаю даже gpt4 отвратительно работают с большим контекстом, пропуская информацию до 80% фактов по тестам.
    Это родовая болячка gpt из-за квадрата в трудоемкости и требованиям к памяти от размера контекста, их обучают по особому, что значительно понижает качество работы в таких условиях
    Ответ написан
    Комментировать
  • Есть ли разница втыкать приёмник радио канала для мышки в USB 2.0 или USB 3.0?

    @rPman
    Один момент, при покупке usb разветвителя (usb-hub) нужно найти, в каком режиме работают его порты STT или MTT (Single / Multiple Transaction Translator), если это будет STT то подключенное в хаб устройство с низкой скоростью и версией usb (например usb2) даже если хаб поддерживает usb3 версию, все остальные подключенные устройства перейдут в режим usb2, т.е. низкой скорости. Особенно обидно если подключить старую клавиатуру usb1, при этом скорость упадет до 1мбита.

    Первая же статья в гугле https://habr.com/ru/articles/430220/ (там есть про это часть)
    Ответ написан
    Комментировать
  • Как сделать globbing строки в php?

    @rPman
    Ответ - регулярные выражения, синтаксис чуть сложнее чем * и ? но возможности выше
    preg_replace для однобайтовых кодировок или mb_ereg_replace для любых.

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

    upd. совсем забыл, preg_replace с модификатором /u понимает utf8 строки
    Ответ написан
    4 комментария
  • Какую оперативную память лучше использовать для таких 3D редакторов как Blender и Unreal Enginie 5?

    @rPman
    ECC серверная обычно дороже, да еще и медленнее.
    Разница в скорости будет на грани погрешности 3-5%, и то только в специфических задачах
    Чтобы словить сбой на не ecc памяти десктопному пользователю нужно держать заполненной память на 100% и работать непрерывно годами.

    Поэтому не рекомендую для рабочей станции покупать ecc.
    Ответ написан
    Комментировать
  • Как скачать целую ветку форума 4pda и скормить нейросети?

    @rPman
    4pda основан на ip.board, все загружается без танцев с бубном, только осторожно, без авторизации получаются другие страницы чуть в ином формате. Вот пример кода на основе simple_html_dom:
    <?php
    include('simple_html_dom.php');
    
    // ссылка на первую страницу темы
    define('START_URL','https://4pda.to/forum/index.php?showtopic=1084129');
    // количество страниц &st= из ссылки » в навигаторе по страницам
    define('PAGES_CNT',580);
    
    @mkdir('data');
    
    for($i=0;$i<=PAGES_CNT;$i+=20)
    {
    	// формируем url
    	$url=START_URL.($i==0?'':'&st='.$i);
    	// имя кеш файла чтобы не загружать повторно
    	$cache_fn='data/'.md5(START_URL).'.'.$i.'.html';
    	if(!file_exists($cache_fn))
    	{
    		// Загружаем страницу
    		$data=file_get_contents($url);
    		// сохраняем страницу в кеше
    		file_put_contents($cache_fn,$data);
    		// пауза между запросами к серверу для защиты его от ddos
    		sleep(1);
    	} else
    	{
    		// читаем из кеша
    		$data=file_get_contents($cache_fn);
    	}
    
    	$html=str_get_html($data);
    	$num=0;
    	foreach($html->find('div[class]:not([class=""]') as $post)
    	{ // перебираем посты в теме
    		// пропускаем первый пост темы, он дублируется на каждой странице
    		if($num++==0) continue;
    		// выводим пост на экран
    		$post_html=$post->find('div.post_body',0)->text();
    		echo $post_html.PHP_EOL;
    	}
    	// вставляем разделитель между постами
    	echo '<hr/>'.PHP_EOL;
    	$html->clear();
    }
    ?>

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

    Страницы можешь вручную указать for($i=0;$i<=PAGES_CNT;$i+=20) вместо 0 - начальный (с шагом 20) и PAGES_CNT конечный пост.

    Вместо текстового представления $post_html=$post->find('div.post_body',0)->text(); можешь сложнее структуру сообщения анализировать, выявляя цитирования и к примеру исключая их из текста (они занимают большую часть всего, дублируя многократно информацию).

    Конкретно этот пример не влезет в контекстное окно бесплатного claude - это 70к токенов. Поэтому дели на куски.
    Ответ написан
  • Какую выбрать LLM для быстрого локального запуска?

    @rPman
    llama3-70b и Codestral 22B единственные открытые сетки, которые давали мне адекватный вариант на не простые задачи (я почти не трогал qwen и command r+ а они тоже хороши).

    Чтобы оценить требования памяти в зависимости от размера модели и ее квантизации, полистай сообщения этого бота, например вот для llama70b

    p.s. llama.cpp позволит разместить часть весов в GPU а часть в RAM, это имеет смысл если оперативной памяти чуть чуть не хватает, а квантизация уже на грани понижения качества, я так codestral 22b с квантизацией 5bit на 16gb запускал, указав 48 из 57 слоев на gpu с такими скоростями:
    llama_print_timings:        load time =    1997,65 ms
    llama_print_timings:      sample time =     790,28 ms /   256 runs   (    3,09 ms per token,   323,94 tokens per second)
    llama_print_timings: prompt eval time =   21593,29 ms /  7650 tokens (    2,82 ms per token,   354,28 tokens per second)
    llama_print_timings:        eval time =   33864,88 ms /   255 runs   (  132,80 ms per token,     7,53 tokens per second)
    llama_print_timings:       total time =   55938,24 ms /  7905 tokens
    Ответ написан
    Комментировать
  • Почему консоль всегда выводит, что я програл?

    @rPman
    c = rand() % 2;у тебя тут ошибка, c у тебя равно символу с кодом либо 0 либо 1,
    if (u == c)
    а сравниваешь с символом '0' либо '1', у них код 48 и 49 соответственно

    поэтому добавляй к c еще код символа '0' (он в ascii кодировке перед '1')
    c = rand() % 2+'0';
    p.s. из-за исторических наслоений, символ не считается несовместимым типом с числом, иначе бы ты увидел эту ошибку в сообщениях компилятора
    Ответ написан
    Комментировать
  • Почему торрент сам запускается даже с выключенной автозагрузкой?

    @rPman
    Sysinternails autoruns покрывает большую часть способов автозапуска
    Ответ написан
    Комментировать
  • Имеют ли VPN-провайдеры юридическое право не хранить логи пользователей?

    @rPman
    Где размещаешь vpn сервер, законы той страны и изучай.

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

    Это будет работать с любым протоколом, хоть vpn, хоть прокси, хоть ssh подключение (сложнее но реально, можно выявить типичные паттерны работы ssh socks port forwarding) и не важно, официальный ли ты vpn протокол используешь или маскируешь трафик под https сессию.

    Т.е. в результате провайдеру vpn достаточно хранить только платежную информацию и время начала каждой vpn сессии, привязанной к этой информации.

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

    @rPman
    посмотри, может ip whitelist есть в самом принтере?
    Либо поставь между принтером и сетью 'любой' дешевый роутер (т.е. управляемый) и разруливай ограничения либо NAT-ом либо подсетку сделай исключительно для принтера
    Ответ написан
  • Как лучше всего хранить данные для доступа к api?

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

    Самое простое, размести свой config файл где-нибудь вне каталога с исходными файлами (например в /etc/ ) а в проекте размещай и поддерживай config.example со всеми доступными настройками с комментариями (грустно, что этот момент часто забывают и не документируют, и приходится выковыривать нужные настройки из исходников)

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

    Так же существуют готовые централизованные инструменты по хранению и управлению такими данными (например централизованно отозвать доступ у машины, или сменить пароль и т.п.) типа azure key vault.
    Ответ написан
    Комментировать
  • Низкая скорость передачи данных после переноса дисков?

    @rPman
    Для начала выяснить что именно тормозит - диски или сеть. Для этого во время отсутствия нагрузки запустить какой-нибудь бенчмарк, для диска (crystaldiskinfo) и для сети (iperf) по отдельности.

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

    Если причина в дисках - начинать изучение с анализа SMART, затем проверить работоспособность порта контроллера (переключить диск в другой порт) и конечно сменить кабель SATA, они (а скорее всего разъемы) очень часто бывают причиной слабо объяснимых проблем с дисками.
    Ответ написан
    Комментировать
  • Есть ли аналоги ide типа phpstorn, pycharm, sublime для iPad?

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

    Иначе, искать облачные решения, например самый простой - арендуешь полноценную машину на vps, настраиваешь удаленный доступ (если windows - то rdp, если linux - то x2go) и работаешь.

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

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

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

    В windows есть два способа:
    1. старый, постепенно ломаемый макйрософт - windows for work group, имеет смысл для маленьких сетей (кажется до 6 машин, точнее это ограничение одновременных подключений к одной машине), это значит логин и пароль на сервере (где настроена шара) и клиенте (кто подключает каталог, повторяю, сессия а не компьютер) должны совпадать, иначе будет запрошен логин пароль или будет отказано в подключении.
    2. домен контроллер, в этом случае оба компьютера должны быть подключены в один домен (или разные но с настройками доверия, там помню тьма особенностей), в этом случае права на доступ можно настраивать используя пользователей домена (сессия на клиенте так же должна быть на основе доменного пользователя а не локального)

    В обоих случаях необходимо настроить права как на шару так и на каталог (т.е. необходимо выдать разрешение на доступ обоих местах на одного и того же пользователя/группу)
    Ответ написан
    Комментировать
  • Как отследить нажатие кнопки назад?

    @rPman
    anchor навигация?

    Непрерывно опрашивай на setInterval значение location.href, и при его изменении вызывай свой метод, это сработает с гарантией где угодно но с лагом, т.е. если интервал будет недостаточно маленьким, и в его пределах пользователь нажмет дважды 'назад', то этот метод укажет только на одно событие... чтобы понять что произошло больше переходов, смотреть в history.length, само собой если пользователь успеет нажать не назад а вперед, или туда-сюда несколько раз, это так же не даст верную информацию, но мне кажется на столько отслеживать перемещение по истории пользователя обычно не требуется.
    Ответ написан
  • Как установить Win 10 поверх Win 7 (с сохранением файлов)?

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

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

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

    И еще - рекомендация по обновлению ОС. Делать это нужно не скачкообразно, не нужно перескакивать через промежуточные версии. Правильно - windows 7 -> windows 8 -> windows 10 (причем уже две или три значительно крупные ревизии прошли, рекомендую брать старую 8-летней давности windows 10 msdn, а там на нее автоматически приедут обновления, это кстати ОЧЕНЬ долгий процесс, занимающий сутки или больше)
    Ответ написан
    3 комментария