Задать вопрос
  • Регулярка для удаление текста через строку?

    @rPman
    по количеству символов
    /^.{42,42}$/
    Ответ написан
    1 комментарий
  • Какую выбрать 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 комментария
  • Возможно ли ускорить вывод 400+ услуг с ценами на одной странице?

    @rPman
    Я не работал с modx, документация говорит что это php+mysql.

    17 секунд на формирование всего 400 записей это необычно долго. С высокой вероятностью там происходит что то типа - на каждую запись выполняется сложный запрос вместо того, чтобы сделать все одним.
    Традиционно, в любом приложении, узкие места начинают искать с помощью профилирования - оценке времени выполнения разных мест в коде (как долго в сумме в какой функции идет выполнение) и sql запросов (можно средствами базы данных, а можно все тем же профилировщиком кода).
    Ключевые слова для гугла - php-spx, xhprof

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

    Почти наверняка можно данную задачу решить не средствами фреймворка modx, а напрямую, написав вручную sql запрос и сформировав страницу кодом на php, тем более изначально php это язык создания шаблонов.
    Сделали, загрузка примерно 1-2 сек
    вот тут наверняка этот запрос и сделали, почему бы его и не вставить напрямую в страницу вывода цен, а не формировать html капк кеш.
    Ответ написан
    Комментировать
  • Можем ли мы быть уверены в несуществовании в каждом компьютере "подпольных" программ?

    @rPman
    Гарантий никаких.
    Но, весь мир держится на 'авось' и 'неуловимом джо', иначе все развалится.

    Ты забыл еще про аппаратные жучки, оставляемые производителем материнских плат (биос) и другой периферии (например драйвера в uefi), мало того, любое устройство на линиях pci-e имеет рут доступ к памяти а значит всем что там работает.

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

    p.p.s. начинать нужно с модулей pipi (pip python) и npmjs (nodejs), там такой садом и гомора, что за голову хватаешься
    Ответ написан
    3 комментария
  • Прием оплаты картами, но поступления на крипту?

    @rPman
    анонимный прием оплаты на сайте.
    ...
    покупатель оплачивает картой РФ/СБП
    ...
    сразу мне на криптовлюту.
    начиная с этого момента ты не сможешь дальше продвинуться, по факту это непреодолимая преграда, пока не будет обновлено законодательство (а оно не будет) или не изменится ситуация с изоляцией россии от глобальной финансовой системы (маловероятно в ближайшие годы)

    если убрать из списка требований Россия - то подобный функционал исторически предлагали крупнейшие криптовалютные биржи типа binance, гуглить cryptocurrency merchant.

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

    @rPman
    Попробуй посмотреть в /proc/$pid там куча файлов, описывающих процесс
    Ответ написан
    Комментировать
  • Как подключить айфон как IP камеру?

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

    p.s. возможно провайдер 3g/lte не позволяет подключиться к веб сервисам на iphone, потому что там стоит nat (это часто происходит, так как ipv4 не хватает на все мобильные), это не обойти естественными способами, так как провайдер часто запрещает простейший upnp (автонастройка перенаправления портов на роутере)
    Ответ написан
    Комментировать
  • Как передать информацию о событии с клиента по RDP (без особых прав)?

    @rPman
    нагуглил, есть виртуальные каналы, которые можно поднимать между терминальной сессией и машиной клиента.
    На основе этого кода claude ai (после некоторой беседы со мной, как же это шикарно что теперь так можно) вот тебе два приложения, не проверял:

    Файл server.cpp (запускается на сервере терминальных служб):
    #include <windows.h>
    #include <wtsapi32.h>
    #include <stdio.h>
    
    #pragma comment(lib, "wtsapi32.lib")
    
    DWORD OpenDynamicChannel(LPCSTR szChannelName, HANDLE *phFile);
    
    int main(int argc, char* argv[])
    {
        if (argc < 2) {
            printf("Usage: server.exe <message>\n");
            return 1;
        }
    
        HANDLE hFile;
        DWORD rc = OpenDynamicChannel("DVC_Sample", &hFile);
        if (ERROR_SUCCESS != rc) {
            printf("Failed to open dynamic channel. Error: %lu\n", rc);
            return 1;
        }
    
        printf("Waiting for client to connect...\n");
    
        // Wait for the client to connect and read something
        char buffer[1];
        DWORD bytesRead;
        ReadFile(hFile, buffer, 1, &bytesRead, NULL);
    
        // Send the message to the client
        const char* message = argv[1];
        DWORD bytesWritten;
        WriteFile(hFile, message, strlen(message), &bytesWritten, NULL);
    
        CloseHandle(hFile);
        return 0;
    }
    
    // Open a dynamic channel (same as in the original code)
    DWORD OpenDynamicChannel(LPCSTR szChannelName, HANDLE *phFile)
    {
        // ... (implementation same as in the original code)
    }

    Файл client.cpp (запускается на клиентской машине):
    #include <windows.h>
    #include <wtsapi32.h>
    #include <stdio.h>
    
    #pragma comment(lib, "wtsapi32.lib")
    
    DWORD OpenDynamicChannel(LPCSTR szChannelName, HANDLE *phFile);
    
    int main()
    {
        HANDLE hFile;
        DWORD rc = OpenDynamicChannel("DVC_Sample", &hFile);
        if (ERROR_SUCCESS != rc) {
            printf("Failed to open dynamic channel. Error: %lu\n", rc);
            return 1;
        }
    
        printf("Connected to server. Waiting for message...\n");
    
        // Notify the server that we're ready
        const char ready = 'x';
        DWORD bytesWritten;
        WriteFile(hFile, &ready, 1, &bytesWritten, NULL);
    
        // Read the message from the server
        char buffer[1024];
        DWORD bytesRead;
        ReadFile(hFile, buffer, sizeof(buffer), &bytesRead, NULL);
        buffer[bytesRead] = '\0';
    
        MessageBoxA(NULL, buffer, "Message from Server", MB_OK);
    
        CloseHandle(hFile);
        return 0;
    }
    
    // Open a dynamic channel (same as in the original code)
    DWORD OpenDynamicChannel(LPCSTR szChannelName, HANDLE *phFile)
    {
        // ... (implementation same as in the original code)
    }

    Сценарий работы:
    * Сначала запускается server.exe на сервере терминальных служб с аргументом - текстовым сообщением, которое нужно отправить клиенту.
    * Серверное приложение ожидает, пока клиент не подключится и не отправит символ 'x', указывающий, что он готов принять сообщение.
    * Затем серверное приложение отправляет указанное в командной строке сообщение клиенту и завершается.
    * Клиентское приложение запускается на клиентской машине, подключается к тому же виртуальному каналу "DVC_Sample" и отправляет серверу символ 'x'.
    * Клиентское приложение ожидает получения сообщения от сервера.
    * После получения сообщения, клиентское приложение показывает его в MessageBox и завершается.

    Обратите внимание, что в этом примере я использовал синхронные вызовы ReadFile/WriteFile для простоты. В реальных приложениях рекомендуется использовать асинхронные вызовы для избежания блокировок.

    p.s. кранты нашей цивилизации, мы разучимся думать, ведь это так удобно, когда машина за тебя вот ТАКОЕ делает.
    Ответ написан
  • Какая конструкция у кода должна быть без goto?

    @rPman
    Если объединить все твои последовательные if в непрерывную конструкцию
    if () {} elseif () {} elseif.... else {}
    то goto или return Rsa97 не понадобятся
    Ответ написан
    Комментировать
  • Как настроить удаленное управление ноутбуком с закрытой крышкой?

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

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