• Как получить данные из базы данных и вернуть их?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    // ....
    ResultSet result = stat.executeQuery("SELECT damage FROM bleed WHERE nickname = '" + nickname + "'");
    rs.next(); // от это!!!!
    int count = result.getInt(1);
    // ...

    Ну и на почитать - https://java-online.ru/jdbc-resultset.xhtml

    PS.
    При открытии набора данных ResultSet курсор расположен перед первой строкой, и первый вызов next передвигает его на первую строку.
    Ответ написан
    Комментировать
  • Как сделать auto increment колонку, которая увеличивается относительно другой колонки?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Никогда, никогда, и ни при каких обстоятельствах нельзя использовать автоинкремент. Это абсолютно неправильный паттерн программирования в SQL (да и вообще в базах данных).
    Более того, нормальные базы данных автоинкремента не имеют!
    Что использовать, спросите Вы? Используйте GUID/UUID и прочие уникальные идентификаторы.
    Для каждой записи генерируйте свой, уникальный UUID, и используйте его как первичный-вторичный ключ для ссылок на записи.
    Ответ написан
    4 комментария
  • Как добавить в реакцию анимированные эмодзи со своего сервера?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    А какая проблема? Послать на бота текст с эмодзи, и посмотреть, что приходит. Повторить!
    Ответ написан
  • Как из txt файла вытащить строки с одинаковым началом?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    f=open("test.rtf","r")
    for line in f:
        words=line.split()
        if words:
            if words[0] == "mom":
               print(words[0])
               print(line)
    
    f.close()
    Ответ написан
  • Eсть ли простые аналоги zabbix?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    В качестве базы - influxdb. В качестве агентов - telegraf (есть и под винду), в качестве отображалки - grafana.
    Influxdb и grafana разворачиваете, где хотите.
    Агенты на каждый хост для сбора, данеые сыпятся в influxdb.
    Время установки с чтением документации - 1 час!
    Ответ написан
    3 комментария
  • Как балансировать трафик между двумя провайдерами в двух объединенных ЛВС?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Простой ответ - никак!
    Сложный - регистрируйте свою AS и рулите трафиком, как вам угодно.
    Ответ написан
    Комментировать
  • Виртуальные консоли в linux?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    ДА, программно можно переключать консоли, например на 4-й
    sudo chvt 4
    Проблема с новыми дистрами только одна, сейчас консоли отданы под управление systemd-login, туда и копать.
    Ну и очень большая проблема, если хотим например поднять несколько Xwindow на разных консолях!
    Тут нужно заменить оригинальный DM на самописный, ибо современные уже не умеют поднимать несколько инстансов иксов. Можно взять мой - https://github.com/leahch/display-manager - работает стабильно на порядка 300 тонких клиентах. Плюс нужно будет опять же поколдовать с настройками systemd-login, немного...
    Ответ написан
    Комментировать
  • Как правильнее сравнить на практике языки программирования, чтобы понять, какой изучать?

    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 комментарий