Задать вопрос
  • ОС для создания терминала киоска?

    Adamos
    @Adamos
    Debian ISO + preseed.cfg + kiosk.sh = киоск, запускающий нужную страницу в Хроме kiosk-mode и не пускающий ни на какие другие сайты (iptables DROP).
    Ставится за полчаса на полном автомате, кроме указания ручками preseed и загрузки-запуска скрипта (поленился делать кастомный образ системы, не так часто это надо).
    Несколько лет стабильной работы цеха, машинки уровня P4 + 512M/1G RAM с IDE HDD.

    Сейчас, правда, собрался весь этот металлолом заменить на OrangePi 4 LTS в глухом металлическом корпусе, чтобы перестать периодически чистить эти старые гробы от цеховой пыли. Аналогичная система на OrangePi One уже показала успешную работу.
    Ответ написан
    Комментировать
  • JPG vs PNG что лучше?

    Moskus
    @Moskus
    Если не вдаваться в извращения и неподдерживаемые ни кем особенности формата, то разница приблизительно такая:
    PNG сам по себе - формат сжатия без потерь, то есть он позволяет сохранить изображение один к одному, а JPEG сжимает изображение с потерями (при том потери можно регулировать несколькими параметрами, собственно "качество" и цветовая субдескретизация, то есть степень потери информации в цветоразностном канале).
    Оба формата поддерживают прогрессивную загрузку, но по-разному: JPEG - по блокам, PNG - черезстрочно.
    PNG поддерживает прозрачность в двух вариантах: прозрачный/непрозрачный и 256 градаций прозрачности, а JPEG прозрачность не поддерживает.
    PNG может хранить цвет в полноцветном режиме TrueColor (24 бита) и в палитровых режимах (до 256 цветов), а JPEG бывает только полноцветный или 256 градаций серого.
    Степень сжатия JPEG при одинаковых настройках изображения, но разных картинках зависит от плавности цветовых переходов в картинке, а степень сжатия PNG - от наличия повторяющихся одинаковых пикселей.
    PNG не поддерживает хранение метаданных в EXIF, а JPEG - поддерживает.
    Если что-то осталось неясным - спрашивайте в комментариях к ответу.
    Ответ написан
    8 комментариев
  • Какая библиотека для создания telegram бота на Python лучше и удобнее?

    • Если ожидается большой проект с высокой посещаемостью и долгой поддержкой то у aiogram нет альтернативы. У них беда с документацией, но есть чат в TG где всегда подскажут. Там можно пообщаться и с разработчиком данной библиотеки.
    • Если это что-то простое на десяток хэндлеров и лень долго разбираться то у python-telegram-bot очень подробные wiki, документация, снипеты. Можно без опыта очень быстро разобраться... в асинхронность тоже умеет простым декоратором @run_async, можно даже запустить serverless на какой нить azure/google/aws/yandex functions с бесплатным лимитом в 1000000(azure) обращений за месяц
    • Если ограничения bot api слишком тесные и вы хотите делать то что может только клиент (например выгружать файлы больше 40Мб), то посмотрите в сторону telethon (тоже async) плюс он общается с серверам телеграма не через request-respons, а по протоколу MTProto. В частности можете посмотреть на Garnet — bot-friendly telethon
    Ответ написан
    1 комментарий
  • Сможет ли Ansible вот такое?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    вам это в синтаксисе ансибла записать осталось )
    Ответ написан
    Комментировать
  • Сможет ли Ansible вот такое?

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

    Некоторые вещи можно делать косвенным путём, копируя и генерируя конфиги, запуская свои кастомные команды через таск shell, итд итп. Например, конфигурить sudo можно через создание файла с нужным содержимым в /etc/sudoers.d, не трогая основной конфиг.

    В общем, даже если останутся некоторые задачи, которые ansible не сможет автоматизировать достаточно хорошо, во всём остальном он очень сильно облегчит сопровождение серверов, особенно подготовку новых.
    Ответ написан
    Комментировать
  • Как работает изнутри метод remove in Python?

    Vindicar
    @Vindicar
    RTFM!
    Тыц.
    Если коротко - перебирает элементы списка, сравнивает с каждым. Если нашёл равный - удаляет.
    Удаление, походу, делается через срезы. Занятно.
    Ответ написан
    4 комментария
  • Как получить время с time.google.com?

    Mi11er
    @Mi11er
    A human...
    Вписать в гугол "python ntp client" и увидеть это
    Ответ написан
    Комментировать
  • Как реализовать запись следующего сообщения?

    Vindicar
    @Vindicar
    RTFM!
    На гитхабе вариант с несколькими стейтсами, а мне нужен один.

    В приведённом примере явно два состояния - ожидание фразы "ввести имя" и ожидание собственно имени. Одним тут не обойдёшься. Или изменяй сценарий (нафиг вообще вводить фразу "ввести имя"?) или используй два состояния.
    Ответ написан
    Комментировать
  • Как решить проблему в телеграм-боте ('utf-8' codec can't decode byte 0xca)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Судя по ошибке, кодировка файла не utf-8.
    Ответ написан
    7 комментариев
  • На каком этапе обучения стоит учить ООП?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    ООП это не та тема, которую изучил между for и while
    это довольно большой и комплексный кусок знаний, который в любом случае придется учить долго.
    Поэтому раньше начнешь - раньше будет результат.
    Ответ написан
    Комментировать
  • Python Ошибка Traceback (most recent call last): Как исправить?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Ну у вас же все перед глазами, нужно включить немного щепотку логики. Вот через print выводите pages_count:
    print('Всего страниц пейджинации:', pages_count
    Результат видно в консоли. Проблема в том, несмотря на то, что четко видно, что список пустой, вы пытаетесь взять его нулевой элемент:
    for url in range(int(pages_count[0])):
    Решение - проверять список, перед тем как делать это.
    Ответ написан
    Комментировать
  • Python Ошибка Traceback (most recent call last): Как исправить?

    deepblack
    @deepblack Куратор тега Python
    Python Ошибка Traceback (most recent call last)

    Ошибка IndexError: list index out of range

    В строке:
    for url in range(int(pages_count[0])):

    Но сервер отдает 503, видимо тебя забанили немножко

    Как исправить?

    Разобраться с причиной блокировки.
    Ответ написан
    Комментировать
  • Как разделить строку на части?

    @AlbertForest
    import re
    l = re.findall('(.{5}|.+$)' , '123456789')
    for i in l:
        print(i)
    Ответ написан
    Комментировать
  • В чем различие == и IS в Python?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    is проверяет, что переменные указывают на один и тот же объект в памяти. Но особенность в том, что, для экономии памяти, булевы типы, числа и строки могут кешироваться.
    Ответ написан
    Комментировать
  • В чем различие == и IS в Python?

    - оператор==проверяет равенство значений двух объектов
    - оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти

    Python (CPython, если быть точнее) в целях производительности кеширует короткие строки и малые целые числа, поэтому возможны такие казусы:

    >>> str1 = 'hello'
    >>> str2 = 'hello'
    >>> str1 == str2
    True
    >>> str1 is str2
    True
    >>>


    Но стоит сделать строку длиннее и всё встаёт на свои места:

    >>> str1 = 'hello, my crazy world'
    >>> str2 = 'hello, my crazy world'
    >>> str1 == str2
    True
    >>> str1 is str2
    False
    Ответ написан
    2 комментария
  • Почему разные значения в операторе is в Python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Предполагаю, что CPython при компиляции скрипта сохраняет литерал 1234 в соответствующую область памяти, а потом в переменные a и b записывает на него ссылку. В консоли же у него нет единицы компиляции, из которой можно выделить общие литералы.
    Ответ написан
    Комментировать
  • В чём разница между статическими либами и пакетами?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Пакет - это набор файлов, распространяемых вместе. В пакете могут быть любые файлы, не обязательно библиотеки.
    $ dpkg -L libfftw3-bin
    /.
    /usr
    /usr/bin
    /usr/bin/fftw-wisdom
    /usr/bin/fftw-wisdom-to-conf
    /usr/bin/fftwf-wisdom
    /usr/bin/fftwl-wisdom
    /usr/bin/fftwq-wisdom
    /usr/share
    /usr/share/doc
    /usr/share/doc/libfftw3-bin
    /usr/share/doc/libfftw3-bin/copyright
    /usr/share/man
    /usr/share/man/man1
    /usr/share/man/man1/fftw-wisdom-to-conf.1.gz
    /usr/share/man/man1/fftw-wisdom.1.gz
    /usr/share/man/man1/fftwf-wisdom.1.gz
    /usr/share/man/man1/fftwl-wisdom.1.gz
    /usr/share/man/man1/fftwq-wisdom.1.gz
    /usr/share/doc/libfftw3-bin/NEWS.gz
    /usr/share/doc/libfftw3-bin/README
    /usr/share/doc/libfftw3-bin/README.Debian
    /usr/share/doc/libfftw3-bin/changelog.Debian.gz
    Как видите, в пакете бинарники, доки и маны.
    $ dpkg -L libfftw3-dev
    /.
    /usr
    /usr/include
    /usr/include/fftw3.f
    /usr/include/fftw3.f03
    /usr/include/fftw3.h
    /usr/include/fftw3l.f03
    /usr/include/fftw3q.f03
    /usr/lib
    /usr/lib/x86_64-linux-gnu
    /usr/lib/x86_64-linux-gnu/libfftw3.a
    /usr/lib/x86_64-linux-gnu/libfftw3_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3_threads.a
    /usr/lib/x86_64-linux-gnu/libfftw3f.a
    /usr/lib/x86_64-linux-gnu/libfftw3f_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3f_threads.a
    /usr/lib/x86_64-linux-gnu/libfftw3l.a
    /usr/lib/x86_64-linux-gnu/libfftw3l_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3l_threads.a
    /usr/lib/x86_64-linux-gnu/libfftw3q.a
    /usr/lib/x86_64-linux-gnu/libfftw3q_omp.a
    /usr/lib/x86_64-linux-gnu/libfftw3q_threads.a
    /usr/lib/x86_64-linux-gnu/pkgconfig
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3.pc
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3f.pc
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3l.pc
    /usr/lib/x86_64-linux-gnu/pkgconfig/fftw3q.pc
    /usr/share
    /usr/share/doc
    /usr/share/doc/libfftw3-dev
    /usr/share/doc/libfftw3-dev/copyright
    /usr/lib/x86_64-linux-gnu/libfftw3.so
    /usr/lib/x86_64-linux-gnu/libfftw3_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3_threads.so
    /usr/lib/x86_64-linux-gnu/libfftw3f.so
    /usr/lib/x86_64-linux-gnu/libfftw3f_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3f_threads.so
    /usr/lib/x86_64-linux-gnu/libfftw3l.so
    /usr/lib/x86_64-linux-gnu/libfftw3l_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3l_threads.so
    /usr/lib/x86_64-linux-gnu/libfftw3q.so
    /usr/lib/x86_64-linux-gnu/libfftw3q_omp.so
    /usr/lib/x86_64-linux-gnu/libfftw3q_threads.so
    /usr/share/doc/libfftw3-dev/NEWS.gz
    /usr/share/doc/libfftw3-dev/README
    /usr/share/doc/libfftw3-dev/README.Debian
    /usr/share/doc/libfftw3-dev/changelog.Debian.gz
    Опять же видим, что dev-пакет содержит файлы, необходимые разработчику - заголовки (.h), статические (.a) и разделяемые (.so) библиотеки.

    Библиотека - это отдельный файл для статической линковки или разделяемый (.so).
    Ответ написан
    1 комментарий
  • Как отключить контекстное меню в яндекс браузере?

    @u007
    А теперь ещё и "Настройки - Переводчик - Переводить выделенные слова и фразы".

    Так, вдруг кто тоже мучается этой проблемой.
    Ответ написан
    3 комментария
  • Как отключить контекстное меню в яндекс браузере?

    @dimkasklyar
    Настройки -> Дополнительные настройки -> Контекстное меню -> снять галочку с пункта "Показывать при выделении текста кнопки "Найти и "Копировать""
    Ответ написан
    Комментировать
  • Возможно ли использование телефонного кабеля вместо сетевого?

    @TheBigBear
    СтарОдмины мы
    много лет назад пара VDSL2 конвертеров (модемов) Planet у меня держала 30 Мбит на 600 метров на обычной полёвке (кабель такой телефонный) кинутой вдоль силовых кабелей
    А на 50 метрах 100 Мбит - легко
    Найти на Авито пару VDSL2-конвертеров сейчас несложно
    Но если объекты в прямой видимости - сейчас проще всего WiFi мост с направленными антеннами. Правильное оборудование пробивает до 11 километров, так что 40 метров - это ни о чём.
    И сразу рекомендую ставить 5 ГГц (2.4 уже основательно засран, особенно в городе)
    Ответ написан
    Комментировать