Задать вопрос
  • Свой почтовый сервер?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    1) не делать свой почтовый сервер
    2) хорошо подумать, и не делать свой почтовый сервер
    3) если все равно хочется сделать, но еще раз подумать, и не делать почтовый сервер.
    Ну и нужно настроить:
    - записи MX, SPF, DKIM
    - настроить подписи DKIM
    - установить SMTP-вервер (opensmtpd например),
    - установить POP и/или IMAP серверы
    - настроить TLS на всем этом с сертификатами
    - очень желательно настроить антиспам типа spamassist
    А также по просьбе старого друга и авторитетного администратора крупных почтовых (и не только) сервисов Alexey Dmitriev
    Просьба добавить в свой правильный список - настройку записи DMARC и PTR - для полноты картины.

    Без этого тоже никуда никто не едет.
    И еще раз крепко подумать, нужна ли Вам эта головная боль и разбирательства, "почему меня все блокируют"...
    Один из выходов, хостить почту у провайдеров почты, а себе забирать архивы раз в день...

    PS, И да, если уж речь зашла о настройках, Всякие PTR, SPF, MX, DKIM, DMARC и прочие вещи я не всегда знаю сам как автоматизировать. В основном ручками все собираю по привычке и правлю конфиги. А в больших инсталляциях еще и разношу на несколько серверов.
    И все равно, почта требует практически еженедельного (если не ежедневного, в больших инсталляциях) присмотра и ухода, чистки очередей, разгрузки сервисов, борьбы со спамом и прочей хренью.

    PPS. Лет 25 назад доставляло мне удовольствие, забирать отдавать почту по UUCP по модемному коннекту на организацию в 100 человек :)
    Теперь нет никакого удовольствия. Это все равно что содержать ftp-сервер. Старый протокол, старые технологии, куча говна и палок.

    Ну и коли пошла такая пьянка, некоторые корпоративные почтовики оборудуют всякими фильтрами:
    - первое письмо не проходит, и его нужно ставить в отдельную очередь на минут 20-30 для повторного ответа - не выдержал таймаут - БАН
    - первое письмо просто валится в спам - повторная отправка - БАН
    - нельзя отправлять почту более 10 ресипиентам - БАН
    - пигн-понг короткими сообщениями - иначе БАН

    Ну и прочие чудеса эквилибристики почтовых администраторов.
    Ответ написан
    7 комментариев
  • Что именно имел ввиду Линус Торвальдс?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Он имел ввиду главенство архитектуры над кодом. И у него это неплохо получилось.
    Прежде чем писать код, тесты и прочее, сначала проработайте архитектуру, и в частности архитектуру данных, их взаимосвязи.
    В программировании есть метод DOA - data-driven-architecture https://habr.com/ru/company/timeweb/blog/590675/
    Такой подход становится очень популярным. А с появлением современных языков програмирования, еще и очень удобным. Например в clojure.
    Ответ написан
    6 комментариев
  • Проверка бд каждую минуту без блокировки бота aiogram?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    я немного не понял рекурсии: в функции check_time вызываем сами себя? Кажется (покопавшись в мозгах своих), так делать не очень хорошо.
    И вместо asyncio.ensure_future(check_time()) пишем loop.ensure_future(check_time())
    Сделайте еще одну функцию, которая будет запускать в бесконечном цикле последовательно check_time и asyncio.sleep
    import asyncio
    from datetime import datetime
    
    async def check_time():
        utc = datetime.now()
        print(utc)
    
    async def checker(timeout):
        while(True):
            await asyncio.sleep(timeout)
            await check_time()
    
    loop = asyncio.get_event_loop()
    task = loop.create_task(checker(60))
    loop.run_forever()


    ЗЫю пришлось открыть редактор... блин...
    Ответ написан
  • Зависимость скорости интернета от роутера и длины провода?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    - если провода идут по воздуху, то нужно обязательно его землить и кабель брать с землей! Типа FTP. Иначе на нем скапливается статика, особенно в сухую погоду. А уж про грозу и говорить не хочу. И для наружной укладки.

    - если провод идет по земле или прикопан, землить тоже надо, и брать кабель для укладки в почву. Иначе туда проникает влага и мешать прохождению сигналов.

    - второй роутер не нужен
    На кабеле есть маркировка метража, так что нужно точно знать, что не более 100 метров

    - я бы ушел на оптику, купил бы два трансмиттера и кусок оконцованного оптического кабеля, и закрыл бы проблему навсегда! Кстати, будет даже дешевле, чем FTP.

    PS. Кстати, только что заказал для проекта два медиаконвертера TP-Link FL-311A-2 и TP-Link FL-311B-2, плюс оптический патчкорд на 120 метров SC/UPC-SC/UPC, SM 9/125, 120 м, LSZH.
    Все вместе: 5400 рублей!
    Ответ написан
    Комментировать
  • Как сделать уведомление на сайте для всех пользователей?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вариантов несколько:
    - использовать WebSocket
    - использовать SSE
    - использовать технологию Long Pooling

    Все это работает на liferay (про sse не уверен конечно). Например WS - https://liferay.dev/blogs/-/blogs/define-websocket...

    Но на springboot все эти технологии работают!
    Ответ написан
  • Как фильтровать документы в Elasticsearch по условию если был просмотрен пользователем?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Идея как их отмечать на стороне еластика: иметь в документе поле например USERID_VIEW и добавлять в него ID пользователей которые отметили этот документ, ну и в поиске игнорировать доки которые содержат ID пользователя в USERID_VIEW .

    Идея не очень хорошая. Потому что ...
    Будет ли еластик держать в поле список 100K+ значений?

    Нет, не будет.

    Предложить можно следующее:
    - держать список просмотренных пользователем документов отдельно от эластика, в отдельной базе (можно использовать какое нибудь KV-хранилище или просто SQL-базу)
    - просмотренные документы дополнительно фильтровать программно по этому списку
    - если просмотренных документов мало, то вставлять их в запрос на исключение
    - или держать короткий список просмотренных документов, например 100-200 позиций, или формировать его, например по дате, и вставлять в запрос
    Ответ написан
    1 комментарий
  • Как очистить размер корневого каталога в Linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Если загрузка по EFI, то проблем особых быть не должно.
    Загрузитесь с Live CD и через GParted подвигайте разделы.
    То лучше переставить систему через clonezilla например.
    Ответ написан
    3 комментария
  • Как подключить IP камеру к Java?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Установите gstreamer и используйте биндинги к яве https://github.com/gstreamer-java/gst1-java-core
    Ответ написан
  • Как из принятых геолокаций передать данные в БД с геометрией?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Лучше всего для данной задачи подходят базы данных, основанные на алгоритмах класса r-tree/r-tree+. Например postgis для постгреса или elasticsearch.
    Ответ написан
    Комментировать
  • Как сравнить 2 словаря в парсинге?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Используйте set и операцию дизьюнкции ^
    Примеры в ответе здесь https://stackoverflow.com/questions/32815640/how-t...
    Или здесь https://www.google.com/amp/s/www.geeksforgeeks.org...
    Ответ написан
    Комментировать
  • Как перенаправлять запросы по DNS на второй IP адрес если первый не доступен?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Самый простой способ - установить реверсивный прокси. И уже в нем настроить политики отдачи и перенаправления. Это есть и в nginx (см. upstream), и в haproxy (см. use_backend и acl), и в новомодном caddyserver (см. reverse_proxy).
    Если нужно проксировать не только http/https, то я бы посмотрел на haproxy внимательней.
    Ответ написан
  • Зачем нужно DTO в простых сервлетах?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Смотрите, entity в базе данных может содержать гораздо больше полей и объектов, чем Вы хотите передать на верх, или получить в виде формы.
    Как пример, вывод информации о пользователе. В entity скорее всего будут содержаться поля о хеше пароля, аклах (ACLs), дополнительных связях с другими объектами. На верх же, скорее всего эту информацию передавать не стоит, это внутренняя кухня вашего приложения. Для этого и создают DTO (data transfer object), в котором присутствует ровно то, что нужно передать. И да, нужно делать мерджинг или инкапсуляцию между entity и dto каждый раз туда и обратно. С одной стороны - лишние действия и преобразования из объектов в объекты, в другой - гарантия безопасности и разделение логики хранения и логики передачи сущностей.
    Нужно ли это конкретно в вашем приложении - не скажет никто, кроме Вас. Но, хорошая практика - делать dto на каждый случай.
    Ответ написан
    Комментировать
  • Как передавать данные датчиков arduino на django?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Поставьте на стороне сервера с django брокер MQTT, например https://mosquitto.org/
    Собирайте с датчиков информацию и отправляйте в брокер на стороне ардуинки.
    Напишите сервис для отдачи данных из брокера (можно и на django).
    Или напрямую забирайте данные из брокера через javascript + websocket - www.steves-internet-guide.com/using-javascript-mqt...
    Ну, как-то так...
    На почитать - https://habr.com/ru/post/463669/
    Ответ написан
    Комментировать
  • Почему нет доступа к MongoDB из докер контейнера?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Пробрасывать порт нужно 27017, а не 5000!
    ....
         ports:
            - '27017:27017'
    ....

    PS. И не надо картинки постить. Копируйте текст в теги code, это так просто. Из картинок его не выдрать, а набирать - лень! Я вот поэтому вообще отвечать не хотел...
    Ответ написан
    1 комментарий
  • Как спарсить данные из папки почты mail.ru через python?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Подключаетесь к ящику через imap, качаете содержимое, потом разбираете получившееся.
    Imaplib и email.parse вам в помошники на питоне.
    Ответ написан
    Комментировать
  • Как избавиться от повторяющегося кода в сервлете на данном примере?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Можно написать фильтр (имплетентировать javax.servlet.Filter), в который вставить эти строчки - tutorials.jenkov.com/java-servlets/servlet-filters.html
    Да и вообще, в фильтр можно вынести всю работу с пользователем...
    Ответ написан
    Комментировать
  • Почему SQL запрос не выполняется, показывая ошибку?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    ....
                    return int(result.get("money",0))
    Ответ написан
  • Как правильно выбрать ячейку SQLite3?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Начните с ознакомления с синтаксисом SQL и конкретно команды INSERT, полезно бывает :) - www.sql-tutorial.ru/ru/book_operator_insert.html

    servers_sql.execute(f"INSERT INTO servers(admin_channel) VALUES ('{channel}')  WHERE guild = '{guild}' ")
    Ответ написан
    Комментировать
  • Как вывести сообщение?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    if vvod in (Apteka1|Apteka2):
      print("Есть")
    else:
      print("У наших конкурентов точно есть! (адреса конкурентов)")
    Ответ написан
    Комментировать
  • Как организуется техническая архитектура в случае наличия филиалов и нескольких отделов?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Все просто
    1) На каждый офис по маршрутизатору. (Я бы брал программный на линуксе. Просто комп или сервер с нужным количеством интерфейсов, с с установленным линуксом. Но это я)
    2) В каждом офисе своя выделенная и замаскараденная сеть - другими словами, никто никуда не ходит, только интернет.
    3) Каждый офис наводит VPN/VLAN/VxLAN с центральным, и по необходимости с нужными соседями
    4) На маршрутизаторах разрешаем, какие ресурсы будут доступны внутри центра и филиалов
    5) Все доступные ресурсы убираем в зоны DMZ

    Во первых, подозреваю, что никому не нужно ходить из офисов непосредственно на компы.
    Во вторых, извне все должно быть прикрыто, даже от офиса, ибо нефиг по компам шастать.
    В третьих, общие ресурсы тоже не должны быть совместно с компами, ибо иногда их ломают...
    В четвертых, тут много всякого, от броадкаста, до dhcp, авторизации и разделения...

    Ах, да, есть коммутаторы L3, которые могут не только VLAN, но и VxLAN, и MPLS, и маршрутизацию.
    Такие ставьте в центр сети, и рулите маршрутами, доступом и прочим...
    Ответ написан
    2 комментария