• Как перенести и запустить Docker образы на автономной машине?

    @SunTechnik
    Документация по Docker Desktop говорит, что работа в offline режиме возможна.

    Docker образы можно экспортировать (save) и импортировать (load).
    Понятно, что надо проверять и на время первого запуска лучше что бы интернет был рядом, чтобы не далеко бегать...
    Ответ написан
    Комментировать
  • Почему на мобильном устройстве при нажатии на ссылку сразу происходит загрузка новой страницы без выполнения JQuery?

    scoffs
    @scoffs
    Frontend | C# | Student
    Возможно, проблема в том, что в мобильных браузерах и в Web App Telegram код события клика на ссылке выполняется асинхронно. Из-за этого прелоадер не успевает отобразиться перед переходом на следующую страницу.

    Вы можете вмешаться в процесс отправки формы или перехода по ссылке, чтобы показать прелоадер перед переходом. Для этого вы можете использовать событие отправки формы ($('form').submit(...)) или метод window.location.href для перехода по ссылке.

    Пример кода для реализации этой идеи может выглядеть так:
    $(function() {
    
            $('a').click(function(event) {
              event.preventDefault(); // Отменяет переход по ссылке
              var url = $(this).attr('href');
              $(".loader_inner").fadeIn();
              $(".loader").fadeIn();
              setTimeout(function() {
                window.location.href = url; // Переход по ссылке после отображения прелоадера
              }, 400); // Задержка, чтобы прелоадер успел отобразиться
            });
          });
          
          $(window).on('load', function() {
            $(".loader_inner").fadeOut();
            $(".loader").delay(400).fadeOut("slow");
          });


    UPD 31.05.23: Код обновлён
    Ответ написан
    9 комментариев
  • Как пробросить webhook Telegram бота на домашний компьютер через виртуальный сервер с OpenVPN и Docker?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Первое и очень простое решение - можно вообще не использовать вебхуки для тестового бота. Например, пусть у нас будет в конфиге опция, по которой мы запускаем либо сервер для вебхуков, либо поллинг:

    import config
    
    if __name__ == '__main__':
        if config.POLLING:
            ... start_polling
        else:
            start_webhook(...


    Всё-таки основная часть бота - его бизнес-логика. Каждый раз проверять работу его вебхуков необязательно.

    Если всё же хочется вебхуков, то организуем VPN по любой инструкции, коих тысячи, получаем туннель с парой IP. Например, 10.10.10.1 на сервере и 10.10.10.2 локально. На сервере поднимаем nginx, в котором настраиваем что-то типа
    location /path/to/api_test {
      proxy_pass http://10.10.10.2:порт/path/to/api_test
    }


    Обязательно настраиваем https, можно с Let's Encrypt, но можно и с самоподписанным сертификатом. В последнем случае надо будет загрузить этот сертификат в Telegram через API при настройке вебхука.

    Локально у себя пробросить в докере тот самый порт в нужный контейнер с ботом.

    Возможны разные вариации, не изменяющие общий принцип. Например, можно не настраивать https на сервере, пробросить весь порт "как есть" через nginx stream, haproxy, двойной нат или нат с policy routing, а сам https настраивать у себя локально.
    Ответ написан
    Комментировать
  • Почему телеграм бот отключается от БД после ночного простоя?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега AIOHTTP
    Седой и строгий
    Во-первых, курсор в принципе не стоит переиспользовать. Во-вторых, соединения не вечны и не стабильны.
    Ответ написан
    2 комментария
  • Почему сервер на Docker иногда даёт 504 ошибку?

    @vitaly_il1
    DevOps Consulting
    Как и с обычным сервером, контейнер имеет ограничения по производительности.
    Так что посмотрите логи контейнера, возможно дело в конфигурации апп. сервере, возможно, в ресурсах - CPU/RAM.
    В первом случае помогут настройки, во втором - можно увеличить ресурсы контейнера или поднять несколько контейнеров с loadbalancer.
    Ответ написан
  • Почему сервер на Docker не справляется с aiohttp запросами?

    zenwalker
    @zenwalker
    0xABADBABE
    1. Если docker на сервере стоит за nginx или другой проксей, там может быть выставлено ограничение на ответ бэкенда (у nginx по умолчанию 30 сек), после чего соединение рвется, а клиент получает 504.

    2. aiohttp применен не к месту, вызываемая здесь https://github.com/rahiel/open_nsfw--/blob/master/... функция classify() — не асинхронная и будет блокировать процесс, до тех пор, пока не завершится. Одним словом, у вас обычное однопоточное приложение, из коробки несколько одновременных запросов такое решение обработать не сможет. Нужно либо запускать несколько контейнеров, с балансировщиком перед ними, либо как-то менять подход, например запускать классификатор в отдельном пулле процессов через loop.run_in_executor() или разнести API и классификатор в разные сервисы, поставив между ними очередь сообщений.
    Ответ написан
    5 комментариев
  • Как получать картинку с url, как-будто это локальный path?

    @AWEme
    Retard Soft Inc.
    Напиши функцию, которая будет определять, передан локальный путь или нет. Если нет, то отправляй запрос, результат сохраняй не в файл, а в стрим - он реализует такой же интерфейс как и у файла, открытого локально.
    Шо делает твой код не знаю, но думаю не сломается.
    Ответ написан
    1 комментарий
  • Как конвертировать .jar в .exe на JDK 11?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Ну начнем по порядку.
    Java как язык и среда крайне консервативная и любые нововведения как правило воспринимаются в штыки. Плохо это или хорошо вопрос крайне тонкий и в глазах потребителя всегда разный. Со стороны энтерпрайза это просто восхитительно, есть огромный выбор в хороших специалистах, есть огромное время поддержки нужной версии которая обкатана годами и уже почти все известно о всех тонкостях. Со стороны мелких инноваторов и разработчиков развитие идет непостижимо медленно а значит есть отставание от трендов и оно значительное.
    Предрекая вопрос что за бред привожу следующий факт по поддержке версий:
    J2SE 1.4 выход 2002 год, конец поддержки 2013
    J2SE 5.0 выход 2005 год, конец поддержки 2015
    J2SE 6 выход 2006 год, конец поддержки 2018
    J2SE 7 выход 2011 год, конец поддержки 2022
    J2SE 8 выход 2014 год, конец поддержки 2025
    J2SE 9-10 вышли в 2017/18 годах, проходные бэты и ключевой момент развития и политики java в котором произошло множество огромных изменений политики. Особенно изменилась лицензия по моему именно где то тут и очень сильно, рекомендую почитать холивары на эту тему.
    J2SE 11 вышла в 2018, конец поддержки 2026 год.
    Если вдаваться в абстракцию могу предложить следующую иллюстрацию. (еще раз это просто иллюстрация для понимания и попыток провести параллель с чем то иным).
    Предположим что майкрософт идет тем же трендом что и оракл как и весь мир большого бизнеса. На выходе имеем следующее:
    -основная ОС на которую ориентируются большие игроки рынка софта и игр является winXP.
    -миром до сих пор правят однопоточные но многогерцовые процессоры которые правда уперлись в 5Ггц. Зачем менять то что и так прекрасно в простоте. Просто удешевляем и "ухолодняем" производство. Да и вообще у основной массы все еще камни уровня 1 поток и 3.4 ГГц. Ориентируемся на это.
    -миром видеокарт до сих пор правят dx9c без новомодных нововведений, без cuda\opencl, без dxr, без подходом низкоуровнего апи вида вулкана\dx12. Зачем менять то что итак прекрасно работает и давно известно с каждой стороны. Видеокарты выходят давно упер в возможности выходя из ревизии к ревизии с фиксами багов и удешевлением производства. Да и в общем то зачем что то новое, т.к. у основной массы еще графика уровня встройки.
    - всякие nvme\m2\pcie4 все от лукавого, зачем это если у массового пользователя все еще sata2 hdd который едва ли выдает что то среднее.
    -мониторы у всех в среднем 800х600 пикслей, а зачем больше то?
    + На выходе с этими ориентировками имеем универсальный продукт(софт\игру) которая будет работать вообще у всех в среднем отлично, все возможные баги были известны и пофикшены еще 10 лет назад. Новомодное все от лукавого и только у единиц энтузиастов, а значит не берем их в расчет или берем пытаясь выдать это как фичу.

    Теперь немного пояснений к вышесказанному, разработчики, большие естественно, получают колоссальное преимущество т.к. их много, есть выбор, они знают и понимают что и как происходит, у них есть богатый стаж как делать можно и как нельзя, а главное почему. Изучение языка и стандарта версии крайне подробное, тонны книг, курсов, обсуждений. С другой стороны никаких новшеств нет, все как на уровне 10 лет назад так и осталось, хочешь круглую кнопочку так забудь или только медленными костылями за которые сразу объявят костылеписателем рукожопом.

    Надеюсь параллель понятна. Теперь к вопросу.
    Сейчас, я напомню 2019 год, скажу честно видел не один десяток энтерпрайз решений которые до сих пор все еще развиваются на jre7. Есть те кто скрипя зубами переходит на jre8, но пока, опять же лично мои наблюдения, это вот прям скрипя зубами о асфальт, очень нехотя, очень не хочется.

    Касательно компиляции в ехе, нет такого понятия в мире java. Опять же дам пояснения.
    Java это про изоляцию хостового железа от софта. Т.е. у Вас есть софт которому глубоко фиолетово сколько там ядер, какая ФС, какая ОС и т.д. .JRE это "виртуальная машина" и в этом ее прелесть, "есть один бинарник который работает везде и которому пофиг где он был запущен" главное чтобы была JRE.
    И вот тут возникает прикол, самих реализаций JRE множество, есть платные, есть бесплатные, есть условно платные, у каждой своя лицензия и ограничения Каждая решает свои проблемы.

    Так вот, предложу очередную аналогию. Предположим Вы создали автомобиль который ездит на "топливе", все замечатально, в вашем определении топливо "все что горит". На практике же на бензине он как бы работает и так как ожидалось. На дизельном как то вообще не очень. На авиационном, ну работает правда не долго. На водородном вот даже не заводится.

    Ну ладно хватит вокруг да около, а то развел демагогию. Лично мое мнение и практика, JAVA приложения вообще нельзя, еще раз НЕЛЬЗЯ собирать в ехе или любую другую самодостаточную сборку.
    Банально но потому что Вы врезаете пользователя или СЕБЯ в лицензию или ограничения. Ну например вы собрали ехе который по сути включает jre под win10 и скинули мне, а у меня winXP и нифига не работает, а если работает то с совершенно непонятными логами багов. Вот скинули бы jar файл с пометкой что собран под jre7 то проблем бы не было от слова совсем.

    А, и к слову, даже встроенный механизм java по сборке так называемых native сборок не решает проблем разношерстности от слова совсем.

    PS. надеюсь не зря написал такое эссе и донес свою мысль. Мысль основывается на моих наблюдениях и опыте.
    Ответ написан
    7 комментариев
  • Подключение класса из vendor в Yii2 - Class not found?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.
    1)Какое отношение Ваш вопрос имеет к "github"
    2) Вы делали обновление автозагрузчика после того, как сделали запись в composer.json? Если нет - сделайте composer dump-autoload
    3) Или возьмите с packagist.com пакет, установите через composer и не мучайтесь.
    Ответ написан
    22 комментария
  • Как сверстать шапку сайта?

    ArsenyMatytsyn
    @ArsenyMatytsyn Куратор тега CSS
    Руководитель frontend направления, предприниматель
    Если мы говорим о структуре:
    <header>
        <div class="container">
         …

    То для header можно использовать псевдоэлементы :before и :after с этим самым цветом в заливку. Ну а для того, чтобы это реализовать flex-box тебе в помощь.
    Ответ написан
    2 комментария