Задать вопрос
  • Как подключить все 4 вентиляторы в пк на один разьём 4 pin?

    Vamp
    @Vamp
    Прочитайте инструкцию к корпусу. Раздел "Controlling lighting modes".

    688617385bff4179886456.png

    У контроллера свое отдельное питание через sata коннектор, подключающийся напрямую к блоку питания. В разъёмы с 1 по 6 вставляете rgb коннекторы от кулеров. В разъемы 7-12 вставляете питание кулеров. Провод "4 Pin PWM fan connector" вставляете в материнскую плату в разъём SYS_FAN1. Провод "5V / 3 Pin Addressable RGB adapter" никуда не вставляете, раз материнка не поддерживает управление подсветкой. Управлять подсветкой можно будет через кнопку reset, если подключить её к контроллеру.

    В вашем корпусе в комплекте идёт 4 кулера. Почти наверняка они уже будут с завода воткнуты в контроллер как надо. Останется только контроллер подключить к материнке, sata питанию и кнопке reset.
    Ответ написан
    24 комментария
  • Определить стандартный пароль от API IP камер dahua DH-IPC-HFW2449SP-S-IL-0280B?

    Vamp
    @Vamp
    Новые камеры нужно сначала инициализировать через программу ConfigTool или мобильное приложение DMSS. В процессе инициализации можно будет установить свой пароль. Если у вас есть видеорегистратор dahua, то инициализацию можно сделать через него.

    Если камеры уже были ранее инициализированы, то их можно сбросить нажатием и удержанием кнопки reset на самой камере. Далее заново инициализировать по инструкции выше.
    Ответ написан
    2 комментария
  • Какое отставание MySQL Slave от MySQL master считать проблемным?

    Vamp
    @Vamp
    1. SQL_Delay и SQL_Remaining_Delay относятся к так называемой отложенной репликации. Когда репликация всегда намеренно отстаёт на заданное в конфиге время.

    2, 3. Вам нужно смотреть на параметр Seconds_Behind_Master. Как раз он показывает отставание от мастера в секундах. Может показывать null если репликация полностью остановилась из-за ошибок каких-нибудь.

    Какое отставание MySQL Slave от MySQL master считать проблемным?

    Для mysql проблемным становится такое отставание, когда мастер уже успел отротировать и удалить старые бинлоги, которые слейв ещё не успел обработать.

    Для приложений критичность отставания сильно зависит от бизнес требований к самому приложению. Кому-то и 5 секунд уже катастрофа, а кому-то и 24 часа норм.
    Ответ написан
    1 комментарий
  • Скачивание файла средствами php без ожидания загрузки файла?

    Vamp
    @Vamp
    Скорее всего дело в сессии. Попробуйте вставить вызов session_write_close() непосредственно перед выводом файла:
    header('Pragma: private');
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
    header('Content-Length: ' .filesize($file));
    session_write_close(); // <--- вот здесь         
    readfile($file);
    exit();
    Ответ написан
    Комментировать
  • Почему возникает deadlock?

    Vamp
    @Vamp
    У вас тут гонка, а не дедлок. Методы second и third не успевают встать в ожидание condition.

    Если визуализировать пошагово:
    1. first - захватил блокировку объекта lock
    2. second - захватить lock не может, так как он уже захвачен, поэтому встаёт в ожидание
    3. third - захватить lock не может, так как он уже захвачен, поэтому встаёт в ожидание
    4. first - пишет в консоль "first"
    5. first - сигналит condition1
    6. first - релизит lock
    7. second - просыпается и захватывает lock
    8. second - встаёт в ожидание condition1, которое будет бесконечным, потому что condition1 за всё время триггерится однократно и этот триггер уже отработал на 5 шаге

    Ваш код сможет успешно завершиться если подобрать нужный тайминг. Например, так:
    var c = new SomeClass();
    try (var t = Executors.newFixedThreadPool(3)) {
        t.submit(c::second);
        t.submit(c::third);
        Thread.sleep(100);
        t.submit(c::first);
    }
    Ответ написан
    3 комментария
  • Точь в точь ли маппятся поля json-сущности на поля в таблицах базы данных?

    Vamp
    @Vamp
    Опишу проблему: я не совсем понимаю связь между json-сущностями которые отгружаются rest-методом и таблицами в базе данных.

    А её и нету, связи этой.

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

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

    Каждый ли ключ обязательно должен маппится с полем в какой-то таблице?

    Не должен.

    Так что же тогда нужно понимать под фразой "сущность отгружается полностью"?

    Где вы эту фразу услышали?

    На всякий случай отмечу: я знаю, что "одна таблица не равно одна сущность". Сущность может быть раскидана по нескольким таблицам.

    Аналогично и схема REST API не обязана в точности соответствовать структуре базы.

    Мой вопрос больше про маппинг полей в json-объектах отгружаемых Postman/Devtools и полями в таблицах бд.

    Не припомню чтобы Postman/Devtools как-то относились к базам данных.
    Ответ написан
    2 комментария
  • Лишние переводы строк в ответе сервера (echo)?

    Vamp
    @Vamp
    Почти наверняка лишние переводы строк находятся перед <?php.

    Или после ?> в db.php
    Ответ написан
    1 комментарий
  • Как сейчас работать с CloudFlare?

    Vamp
    @Vamp
    Отключайте проксирование в настройках DNS, тогда CF будет работать как простой DNS сервер. Именно так используется CF у dtf и vc. Что касается фильтрации трафика, то vc использует сервис qrator. Dtf же сидит на ip адресах selectel. Возможно они фильтруют трафик и защищаются средствами самого селектела.

    или же переходить на аналоги ? bunny, к примеру

    Если речь только про хостинг DNS, то можно оставаться в cloudflare. Если хотите защиту от дудоса и фильтрацию трафика и при этом не страдать от блокировок, то лучше подоборать какую-нибудь альтернативу.
    Ответ написан
    Комментировать
  • Почему длина long int 4 байта?

    Vamp
    @Vamp
    Размер этого типа данных не специфицирован. У автора на 32-битном процессоре он оказался 4 байта. У вас же 64-битный процессор, поэтому показывает 8 байт.
    Ответ написан
    Комментировать
  • Как сделать нестандартную рамку?

    Vamp
    @Vamp
    Конкретно на этом сайте рамка отрисована картинкой и вставлена через css стиль background-image.

    https://videoexpress.ai/fbdeal/assets/images/banne...
    Ответ написан
    Комментировать
  • Почему PHP считает int числа после математических операций как float?

    Vamp
    @Vamp
    Все потому, что в операции деления у вас получается float, так как операнды не поделились друг на друга без остатка. Умножение int на float в дальнейшем тоже приводится к умножению float на float.
    Ответ написан
    Комментировать
  • Где хранить ключи api используемые для тестирования открытого по?

    Vamp
    @Vamp
    Стандартной практикой является коммит в репозиторий файла phpunit.xml.dist в который прописываются все настройки по умолчанию, кроме чувствительных к безопасности (api ключи, пароли и пр). Файл phpunit.xml добавляется в .gitignore. Таким образом, если пользователю нужно кастомизировать какие-то параметры, он просто копирует файл phpunit.xml.dist в phpunit.xml и добавляет свои секреты в последний. Это безопасно, так как phpunit.xml заигнорен.

    То что вы описываете - это уже не unit, а интеграционное тестирование. Скрипты для интеграционного тестирования обычно делают в отдельном testsuite и скипаются по умолчанию. Для запуска юнит тестов не должна требоваться какая-либо подготовка - только "склонировал репозиторий, запустил". Для интеграционных подготовка уже нужна. Например, юзер должен будет модифицировать phpunit.xml (не .dist!), вписав туда свой тестовый api ключ.

    Соответственно, для юнит тестов достаточно в тестируемый код передать мокнутого http клиента, который будет возвращать ответ, который вернуло бы реальное стороннее api (в guzzle это делается с помощью MockHandler). Поэтому если надо просто запустить юнит тест, то ничего делать не нужно - phpunit автоматически подхватит phpunit.xml.dist, если не найдет phpunit.xml. Если надо запустить интеграционные, то юзер должен будет скопировать phpunit.xml.dist в phpunit.xml и добавить туда api ключ.
    Ответ написан
    1 комментарий
  • Как хранить ключи в Python?

    Vamp
    @Vamp
    Храните свои ключи в SharedPreferences, EncryptedSharedPreferences (если sdk 23 и выше) или KeyChain.
    Ответ написан
    Комментировать
  • Как реализуются лицензии по ядрам?

    Vamp
    @Vamp
    определяется лицензия -> макс кол-во ядер и на основании этого создается пул потоков заданного размера
    Так оно и есть.
    Ответ написан
    Комментировать
  • В чём преимущество Clang перед GCC? Что использовать для кросс-компиляции?

    Vamp
    @Vamp
    Зачем Clang использует gcc? Для компиляции?
    Сам компилятор не используется. Только линкер и стандартная библиотека.

    Почему считается, что использовать Clang для (кросс-)компиляции, и в CMake лучше, если он использует тот же gcc?
    Потому что clang строго следует букве стандарта, в отличии от gcc, который трактует стандарт вольно и в целом ориентирован на поддержку экзотических костылей и исторически сложившихся традиций. Поэтому при использовании clang проще писать кроссплатформенный код.
    Ответ написан
    4 комментария
  • Как использовать разные буферы для чтения и записи в FileChannel и AsynchronousFileChannel?

    Vamp
    @Vamp
    Буфер нужно переключать между режимами чтение/запись:

    FileChannel channel = FileChannel.open(Path.of("test.txtx"),StandardOpenOption.CREATE, 
    				StandardOpenOption.WRITE, StandardOpenOption.READ);
    		
    ByteBuffer buffer = ByteBuffer.allocate(15);
    buffer.put("hello world".getBytes()); // записали в буфер данные
    buffer.flip(); // <--- переключили буфер из режима записи в режим чтения
    channel.write(buffer, 0); // теперь channel.write сможет прочитать записанные в 
                              // буфере данные и записать их в файл
    		
    ByteBuffer buffer2 = ByteBuffer.allocate(15);
    channel.read(buffer2, 0); // channel.read прочитал данные из файла и записал их в буфер
    buffer2.flip(); // <--- переключаем из записи в чтение
    System.out.println(StandardCharsets.UTF_8.decode(buffer2)); // decode читает данные из буфера
                                                                // и составляет из них строку
    
    // Здесь ничего не выводилось, потому что без flip ничего и не записалось в файл.
    System.out.println(new String(buffer2.array())); // ничего не выведет
    Ответ написан
    Комментировать
  • Почему PHP выполняет математические операции неправильно?

    Vamp
    @Vamp
    Потому что типом данных double нет возможности представить число 0.58. Поэтому компьютер берёт наиболее близкое к 0.58 число, которое double может выразить.

    Если вам нужны точные вычисления, то следует воспользоваться специальными функциями:

    $format = bcdiv("580000000", "1000000000", 2); // "0.58"
    
    var_dump(bcmul($format, "100")); // string(2) "58"


    Существует даже специальный сайт, рассказывающий о данной особенности математики чисел с плавающей запятой: https://0.30000000000000004.com/
    Ответ написан
    Комментировать
  • Как ограничить подключение к MongoDB?

    Vamp
    @Vamp
    На уровне ОС это можно сделать через фаервол.
    На уровне базы через настройку authenticationRestrictions в аккаунте пользователя.
    Ответ написан
  • Как пробросить сервер за NAT провайдера?

    Vamp
    @Vamp
    У cloudflare есть решение для этой задачи - cloudflare tunnel.

    Cloudflare Tunnel provides you with a secure way to connect your resources to Cloudflare without a publicly routable IP address. With Tunnel, you do not send traffic to an external IP — instead, a lightweight daemon in your infrastructure (cloudflared) creates outbound-only connections to Cloudflare's global network.
    Ответ написан
    1 комментарий
  • Как исправить проблему с mail php и заголовками для gmail?

    Vamp
    @Vamp
    Заголовки To и Subject подставляются автоматически функцией mail. Вам не нужно добавлять их самостоятельно. Просто удалите строки:

    $headers .= "To: $to\r\n";
    $headers .= "Subject: $subject\r\n";
    Ответ написан
    1 комментарий