Задать вопрос
  • Как развернуть почту отдельно?

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

    На основном веб-сервере настроить реверс-прокси на почтовый. При этом почтовый сервер может работать во внутренней сети по http без сертификата, а снаружи будет виден основной сервер по https.

    С почтовым сервером есть нюансы. Вам надо будет запросить у провайдера, выдавшего вам IP-адрес, добавление PTR-записи в его DNS. Без PTR многие почтовые серверы не будут принимать от вас почту, считая спамером.
    Так же нужно настроить SPF, DKIM и DMARK.
    TLS и/или STARTTLS на SMTP-сервере желательны, но не обязательны.
    Ответ написан
    8 комментариев
  • Что именно запретили в IP телефонии?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    2 комментария
  • Как с помощью sed перед первой строкой, соответствующей шаблону подставить другую строку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    sed '0,/^XXX/{s/^XXX/ZZZ\nXXX/}' tes.txt
    Ответ написан
    Комментировать
  • Как определить язык по автомату с магазинной памятью (ДМПА)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Анализировать переходы.
    delta(q0,c,Z) = {(q0,cZ)} - состояние q0, на входе символ 'c', в стеке пусто. Остаёмся в q0, в стек кладём 'c'.
    delta(q0,c,c) = {(q0,cc)} - состояние q0, на входе 'c', с вершины стека снят 'c'. Остаёмся в q0, в стек кладём 'c', 'c'.
    И так далее.
    lambda - это пустой символ λ.
    Ну а язык, вроде, cna2n+1b*
    Ответ написан
    1 комментарий
  • Как определить MAC-адрес в ОС AstraLinux активной сетевой карты?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ip a | grep -A 1 'state UP' | grep ether | gawk '{print $2}'
    Ответ написан
    7 комментариев
  • Как нарисовать ёлку вложенным циклом?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    for r in range(x):
      print(' ' * (x - r - 1), '#' * (r * 2 + 1), sep='')
    Ответ написан
    Комментировать
  • Шаблон, чтобы выбрать все эмодзе?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Например, так:
    \u2600-\u27BF\u1F000-\u1FAFF]
    Или откройте какой-нибудь сайт по юникоду, (например, symbl.cc) и выберите нужные вам диапазоны.
    Ответ написан
    Комментировать
  • Как решать задачу на булеву логику?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    С помощью тождеств
    not(A and B) = not A or not B
    not(A or B) = not A and not B
    Ответ написан
    Комментировать
  • Как подключить подсветку через умное реле и ИК-кнопку?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не получится. Такая комбинация устройств так как вам хочется работать не будет, по крайней мере без серьёзной переделки.
    все подключил как мне подсказал чат жпт
    А в случае пожара из-за неверного подключения вам тоже чатгопота будет компенсацию платить?
    Ответ написан
    4 комментария
  • Почему методы length() и codePointCount() для знака копирайта (с) возвращают одинаковую длину?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В UTF-16 знак копилефта (а не копирайта) U+1F12F занимает два символа: D8 3C (high surrogate code point) и DD 2F (trail surrogate-DD2F), образующие одну кодовую точку.
    А методы возвращают разную длину:
    System.out.println("\uD83C\uDD2F");                      // тостер не поддерживает utf8mb4
    System.out.println("\uD83C\uDD2F".length());             // 2
    System.out.println("\uD83C\uDD2F".codePointCount(0, 2)); // 1
    Ответ написан
    Комментировать
  • Правильно ли записывается CNAME?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Неправильно. Добавьте точку в конце.
    xxx IN CNAME veliona.no.
    Ответ написан
    1 комментарий
  • Как в Postfix-e заблокировать прием с определенного домена?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Создать файл со списком доменов/IP /etc/postfix/my_blacklist
    .aporolo.ru REJECT

    Хэшировать этот файл
    postmap /etc/postfix/my_blacklist

    Добавить в /etc/postfix/main.cf после reject_unauth_destination
    smtpd_client_restrictions =
        ...
        reject_unauth_destination,
        check_client_access hash:/etc/postfix/my_blacklist,
        ...


    При изменении списка сайтов перехэшировать файл.
    Ответ написан
    7 комментариев
  • Что нужно сделать чтобы код заработал как надо?

    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.
    Ответ написан
    6 комментариев
  • Правильно ли выражение парсится в ПОЛИЗ форму?

    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
    Для правильного вопроса надо знать половину ответа
    Бэкап не имеет смысла делать на рейд. Ну, если вы, конечно, не ожидаете, что диски с бэкапом выйдут из строя одновременно с основной копией. Два бэкапа тоже нет особого смысла делать по той же самой причине.
    Лучше периодически проверять, что из бэкапов можно восстановить данные за приемлемое время.
    Ответ написан