Задать вопрос
  • Что нужно сделать чтобы код заработал как надо?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ох уж эти программисты, не помнящие школьный курс математики. Всего то надо решить две системы линейных уравнений:
    m₃     m₄   | -1630.2
    m₃z₃   m₄z₄ | 88464
    
    m₃     m₄   | -4636.8
    m₃z₃   m₄z₄ | -9772.88

    import math
    
    def main():
        m_values = [40, 50, 60, 71, 76]
        z_values = [160, 240, 320]
        for m3 in m_values:
            for m4 in m_values:
                for z3 in z_values:
                    for z4 in z_values:
                        d = m3 * m4 * (z4 - z3)
                        if d == 0:
                            continue;
                        x3 = (-1630.2 * z4 - 88464) * m4 / d
                        x4 = (88464 + 1630.2 * z3) * m3 / d
                        y3 = (-4636.8 * z4 + 9772.88) * m4 / d
                        y4 = (-9772.88 + 4636.8 * z3) * m3 / d
                        r1 = math.sqrt(x3 * x3 + y3 * y3)
                        r2 = math.sqrt(x4 * x4 + y4 * y4)
                        if 42 <= r1 <= 88 and 42 <= r2 <= 88:
                            print("Найдено решение, удовлетворяющее условию 42 <= r <= 88:")
                            print(f"  x3 = {x3_val:.2f}, x4 = {x4_val:.2f}")
                            print(f"  y3 = {y3_val:.2f}, y4 = {y4_val:.2f}")
                            print(f"  r1 = {r1:.2f}, r2 = {r2:.2f}")
                            print(f"  Параметры: m3 = {m3}, m4 = {m4}, z3 = {z3}, z4 = {z4}")
                            return
        print("Не найдено решений, удовлетворяющих условию 42 <= r <= 88.")
    
    if __name__ == "__main__":
        main()

    Не найдено решений, удовлетворяющих условию 42 <= r <= 88.
    Ответ написан
    4 комментария
  • Правильно ли выражение парсится в ПОЛИЗ форму?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    IMHO, вы неправильно поняли польскую обратную запись.
    Каждая строка должна включать одно действие, выполняемое над стеком.
    00: 10          10: :=          20: i
    01: &a          11: i           21: output
    02: :=          12: 0           22: 
    03: a           13: >
    04: 10          14: 12
    05: +           15: 4
    06: &b          16: <=
    07: :=          17: and
    08: 12          18: 22
    09: &i          19: jz

    А после оптимизации код должен вообще стать пустым.
    12 <= 4 всегда false, заменяем.
    На момент вычисления условия i всегда 10, заменяем.
    10 > 0 всегда true, заменяем.
    true and false всегда false, заменяем.
    Условие всегда false, поэтому выбрасываем if вместе с содержимым.
    Переменная i получает значение, но не используется, выбрасываем.
    Переменная b получает значение, но не используется, выбрасываем.
    Переменная a получает значение, но не используется, выбрасываем.
    Ответ написан
    Комментировать
  • Как зашифровать сообщение алгоритмом Эль Гамаля с помощью закрытого ключа?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А почему вы решили, что открытый и закрытый ключи взаимозаменяемы? Схема асимметричная, шифрование идёт с помощью открытого и сессионного ключей, дешифрование с помощью закрытого ключа.
    Ответ написан
    3 комментария
  • Не помешает ли ODBC работе Астериска с MySQL?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    По большому счёту, ODBC мешать не должен. Просто будет два соединения с базой - через нативный MySQL и через ODBC. Если сейчас CEL через MySQL не используется, то можно писать в ту же базу, просто это будет отдельная таблица `cel`.
    Ответ написан
  • Как заменить псевдокласс has?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Через чистый CSS никак не заменить. Только если вешать JS обработчик на input и менять класс label.
    Если бы убрать :before, то можно было бы использовать
    Нельзя. Селектор с :has у вас относится к label, а без него - к input.
    Ответ написан
    Комментировать
  • Можно ли в Linux на файловой системе EXT4 запретить именовать файлы одинаково с разным регистром букв?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Надо включить поддержку регистронезависимости при создании файловой системы
    mkfs -t ext4 -O casefold /dev/диск
    или позднее
    umount /dev/диск
    tune2fs -O casefold /dev/диск
    mount /dev/диск

    Затем установить у нужного каталога атрибут регистронезависимости
    chattr +F /путь/к/каталогу
    Ответ написан
    7 комментариев
  • Почему с фильтром PostgreSQL выдаёт больше записей?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    До группировки в первом случае в исходную выборку попадают строки, в которых invoice_id == NULL, среди которых есть такие, что time_start < '2024-01-01 00:00:00'. Соответственно, customer_id из них отсеивается в HAVING.
    Пример:
    |-------------+------------+---------------------|
    | customer_id | invoice_id |      time_start     |
    |-------------+------------+---------------------|
    |         1   |     null   | 2023-12-31 00:00:00 |
    |         1   |        1   | 2024-02-01 00:00:00 |
    |-------------+------------+---------------------|

    В первом случае в предварительную выборку попадают обе строки и, поскольку MIN(time_start) == '2023-12-31 00:00:00' < '2024-01-01 00:00:00', то customer_id == 1 в финальную выборку не попадает.
    Во втором случае в предварительную выборку попадает только вторая строка и, поскольку MIN(time_start) == '2024-02-01 00:00:00' > '2024-01-01 00:00:00', то customer_id == 1 попадает в финальную выборку.
    Ответ написан
    Комментировать
  • Что надежнее софтовый raid1 из 2-х дисков, или просто две идентичных копии на 2-х дисках?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Бэкап не имеет смысла делать на рейд. Ну, если вы, конечно, не ожидаете, что диски с бэкапом выйдут из строя одновременно с основной копией. Два бэкапа тоже нет особого смысла делать по той же самой причине.
    Лучше периодически проверять, что из бэкапов можно восстановить данные за приемлемое время.
    Ответ написан
  • Как предоставить доступ с терминалов на ВМ с полной имитацией работы на локальном ПК?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это называется "тонкий клиент". Есть как готовые (стоят, обычно, дороже, чем компьютеры с теми же параметрами), так и чисто софт, который можно установить на любой компьютер или грузить по сети. Смотрите ThinStation или wtWare.
    Ответ написан
    Комментировать
  • Как хранить настройки сайта?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Два базовых правила:
    1. Всё, что передаётся пользователю, он может увидеть.
    Если не хотите, чтобы пользователь что-то видел, просто не передавайте это на фронт. Отправляйте только то, что пользователю можно видеть.
    2. Всё, что приходит от пользователя требует проверки.
    Если вы не хотите, чтобы пользователь мог прислать на бэк недостоверные данные, просто не принимайте их без проверки.
    В обоих случаях, чтобы знать, что конкретному пользователю можно видеть и что он может прислать требуется аутентификация/авторизация как минимум для пользователей с повышенными правами.
    Ответ написан
  • CNAME определяет каононические имя только для/вместо A/AAAA записей, или для прочих тоже?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В MX-записи указывается каноническое имя A-записи. Использование CNAME в MX запрещено RFC2181 (раздел 10.3).
    Ответ написан
    8 комментариев
  • Что такое уровни абстракции в книге 'Чистый код' Мартина?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Уровни абстракции - разбиение программы на модули, каждый из которых реализует свой уровень, предоставляя интерфейс для следующего уровня и скрывая от него детали реализации.

    Например:
    Первый уровень - драйверы базы данных. Они реализуют соединение с базой, протокол обмена данными.
    Второй - универсальный интерфейс базы данных (PDO). Он реализует работу с любой базой данных в едином стиле.
    Третий - ORM. Он представляет объектную модель данных, хранящихся в БД.
    Четвёртый - основные операции бизнес-логики.
    Пятый - бизнес-логика верхнего уровня.

    При этом, драйвер БД использует сетевой интерфейс, у которого семь уровней абстракции (модель OSI), не вдаваясь в детали реализации.
    Ответ написан
    Комментировать
  • Как решать задачу с графом?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Рекурсивный перебор в глубину из узлов-выходов, ограниченный временем жизни лабиринта, с обнулением посещённых узлов (можно через список посещённых).
    Запоминаем маршрут с максимальной выгодой, потом разворачиваем его, получая прямой путь.
    Отдельно надо обрабатывать вариант, когда два узла соединены путём с нулевым временем. Тут обход может зациклиться.
    Вариант на PHP

    <?php
    
    /*
     * Комната 0 введена для унификации алгоритма.
     * Из неё можно попаст в любой выход, в неё попасть из других комнат нельзя.
     */
    const NODES = [
        0 => ['battleTime' => 0, 'loot' => 0],
        1 => ['battleTime' => 5, 'loot' => 15],
        2 => ['battleTime' => 2, 'loot' => 1],
        3 => ['battleTime' => 3, 'loot' => 5],
        4 => ['battleTime' => 3, 'loot' => 6],
        5 => ['battleTime' => 4, 'loot' => 7],
        6 => ['battleTime' => 5, 'loot' => 9],
        7 => ['battleTime' => 7, 'loot' => 16],
        8 => ['battleTime' => 2, 'loot' => 3],
        9 => ['battleTime' => 0, 'loot' => 0],
        10 => ['battleTime' => 0, 'loot' => 0],
    ];
    
    const ROUTE_TIMES = [
        0 => [9 => 0, 10 => 0],
        1 => [2 => 1],
        2 => [1 => 1, 8 => 2, 9 => 3, 4 => 1],
        3 => [9 => 2, 4 => 4],
        4 => [3 => 4, 2 => 1, 5 => 3],
        5 => [4 => 3, 10 => 1],
        6 => [10 => 4, 7 => 4],
        7 => [8 => 4, 6 => 4],
        8 => [2 => 2, 7 => 4, 10 => 6],
        9 => [3 => 2, 2 => 3],
        10 => [5 => 1, 8 => 6, 6 => 4],
    ];
    
    const MAX_LIFETIME = 25;
    
    function findRoute(array $state): array
    {
        $bestState = $state;
        foreach (ROUTE_TIMES[$state['currentNode']] as $nextNode => $travelTime) {
            $nodeTime = $state['lifetime'] + $travelTime +
                (in_array($nextNode, $state['route']) ? 0 : NODES[$nextNode]['battleTime']);
            if ($nodeTime > MAX_LIFETIME) {
                continue;
            }
            $nodeState = findRoute([
                'lifetime' => $nodeTime,
                'currentNode' => $nextNode,
                'wealth' => $state['wealth'] + (in_array($nextNode, $state['route']) ? 0 : NODES[$nextNode]['loot']),
                'route' => [...$state['route'], $nextNode],
            ]);
            if ($nodeState['wealth'] > $bestState['wealth']) {
                $bestState = $nodeState;
            }
        }
        return $bestState;
    }
    
    $state = findRoute([
        'lifetime' => 0,
        'currentNode' => 0,
        'wealth' => 0,
        'route' => [],
    ]);
    
    echo "Route: ", implode(' => ', array_reverse($state['route'])), "\n";
    echo "Wealth: ", $state['wealth'], "\n";
    echo "Time: ", $state['lifetime'], "\n";

    Route: 8 => 2 => 1 => 2 => 4 => 5 => 10
    Wealth: 32
    Time: 25
    Ответ написан
    Комментировать
  • Можно грохнуть эти параметры пользователя AD?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это параметры Exchange, для Postfix/Dovecot они роли не играют.
    Ответ написан
    Комментировать
  • Asterisk вызвать свой скрипт после завершение вызова?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А зачем так усложнять себе жизнь? У tcpdump есть фильтр, в нём можно настроить адрес и порт, которые будут записываться. Просто запустите его в отдельном терминале через screen и получите дамп всего обмена с вашим шлюзом.
    А может вам вообще лучше подойдёт sngrep.
    Ну или смотрите в сторону опций F и g у Dial.
    Ответ написан
    Комментировать
  • Как установить AD DS на win server 2019?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А пароль точно у администратора? Пользователь "Администратор" и пользователь в группе "Администраторы" - это не одно и то же.
    Ответ написан
  • SQL сумма продажи за день?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    SELECT DATE(payment_date) AS `date`, SUM(amount) AS income
      FROM payment
      WHERE payment_date >= '2005-07-01' AND payment_date < '2005-08-01'
      GROUP BY `date`
    Ответ написан
    4 комментария
  • Почему meta charset="utf-8"/ работает только если сместить кавычку на meta "charset=utf-8"?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Раз код писали в блокноте, то, скорее всего, в Windows. Значит сохранили в кодировке windows-1251.
    Когда пишете тэг правильно, <meta charset="utf-8">, то указанная вами кодировка utf-8 не совпадает с реальной кодировкой текста, отображаются вопросики.
    Когда пишете тэг неправильно, то он игнорируется и кодировка распознаётся правильно, отображается нормальный текст.
    Кодировка, указанная в тэге, должна соответствовать кодировке, в которой сохранён текст.
    Ответ написан
    1 комментарий
  • Где в функции ошибка?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ноль не относится к положительным числам.
    Ответ написан
    Комментировать
  • Где можно посмотреть, почитать про troubleshoot серверов как ос так и железа?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Стандартно. Заменить диски. Вывести старые диски из массива и ввести в него новые или пометить новые как hot spare, в зависимости от реализации raid. Дождаться завершения перестроения массива, убедиться, что всё в порядке.
    Ответ написан
    Комментировать