Задать вопрос
  • Как правильнее сравнить на практике языки программирования, чтобы понять, какой изучать?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Вот это хороший вопрос, но неполный. Было бы неплохо сказать что уже знаете.
    И я бы смотрел в сторону функциональных языков программирования, типа clojure, scala, shema, lisp..
    Или в сторону go, rust...
    Что не отменяет java :)
    На clojure последние два года, полет нормальный.

    По поводу сравнения C# и Java - они одинаковые, более того, первый вылез из второго. Сами языки простые, и по функциональным возможностям одинаковы. Набор библиотек богаче у явы, чуть полегче на C# (Хотя для меня как раз наоборот).
    Ответ написан
  • Как объединять несколько языков одном проекте?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Обычно объединяются через общие сервисы:
    - базы данных SQL и NoSQL
    - системы сообщений типа kafka, pulsar, rabbitmq
    - обмен JSON через микро и макро сервисы
    - вызов удаленных процедур и обмен переносимыми форматами данных gRPC, XML, ProtoBuf и прочее
    - вызов через обертки языков общих библиотек.

    Вариантов масса и все зависит от задачи.
    Ответ написан
    Комментировать
  • Как отображать картинки из бд в html?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Настраиваете web-сервис (например nginx или на python ) на отдачу изображений из C:\Сайт\static
    И все!
    Ну и я бы путь в формате unix хранил-бы и в не абсолютные, а относительные.
    Для джанги почитайте здесь - zetblog.ru/django-nastraivaem-static_root-staticfi... например...
    Ответ написан
    2 комментария
  • Ошибка при попытке перебора двумерного массива. Не могу решить проблему.?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    public class Main{
        public static void main(String[] args){
            int [][] number = new int[2][2];
    
            for( int i = 0; i < number.length; i++){
                for(int j = 0; j < number[i].length; j++){ // ЗДЕСЬ .lenght и j++
                    System.out.println(number[i][j]);
                }
            }
        }
    }
    Ответ написан
    Комментировать
  • Какой USB модем можно использовать для звонков через Linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    U.S. Robotics Courier V.Everything 56k помню был лучшим выбором из всего!
    К USB подключается через конвертер COM-порта.
    Ответ написан
    Комментировать
  • Как отсортировать json по времени?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    1) Ваш json невалиден! Приведите нормальные, не битые данные! И по стандарту - кавычки двойные!!!
    2) Как понятно из приведенного куска (хотя это кровь из глаз, так приводить данные!), структура данных такова (и это Вы в вопросе должны были сделать, а не тратить наше время на разбор бардака)
    {"0":  {"Date":  "2022-07-15 11:25:19" .....},
    "1":  {"Date":  "2022-07-15 11:26:19" .....},
    "2":  {"Date":  "2022-07-15 11:27:19" .....},
    "3":  {"Date":  "2022-07-15 11:28:19" .....}
    ...}

    3) Сортировать так
    import json
    import pprint
    
    data = """
    {
        "0":  {"Date":  "2022-07-15 11:25:19", "Name": "Name-0"},
        "1":  {"Date":  "2022-07-15 11:26:19", "Name": "Name-1"},
        "2":  {"Date":  "2022-07-15 11:28:19", "Name": "Name-2"},
        "3":  {"Date":  "2022-07-15 11:23:19", "Name": "Name-3"}
    }
    """
    
    data_ = json.loads(data)
    data__ = [v for v in  data_.values()]
    
    pprint.pprint(sorted(data__,  key = lambda measure: measure['Date']))
    Ответ написан
    Комментировать
  • Не приходит почта на сервер. Как подружить sendmail и dovecot?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Блииииин! Ну почему, почему sendmail, которому больше 35 лет! Который без M4 никак не настроить! Берите opensmtpd, конфиг в 10 строчек.

    1) что значит "не приходит"? MX запись настроили?
    2) что в логах пишет sendmail?
    3) почему sendmail?
    4) в каком формате maildir?
    5) имеет ли туда доступ в dovecot?
    6) у вас почта точно не отсекается по SPF? DKIM? DMARC?
    Ответ написан
  • Свой почтовый сервер?

    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/
    Ответ написан
    Комментировать