• Как преобразовать строку в функцию?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Если функция next определена в том же модуле, где callback_inline, то

    globals()[callback_data.data](user_last_message)

    Если в импортированном модуле, например с именем example, то

    getattr(example, callback_data.data)(user_last_message)
    Ответ написан
    Комментировать
  • Как правильно чистить логи в journald (systemd)

    lmrvsk
    @lmrvsk
    IT/Web
    Для очистки логов по условиям: до даты или обрезать до такого-то размера (в кол-ве записей или в Мб) можно использовать встроенные команды:
    journalctl --vacuum-size=128M
    journalctl --vacuum-time=1d
    Ответ написан
    1 комментарий
  • Как циклично записывать видео с камеры, в файлы небольшого размера при помощи ffmpeg?

    @3do
    Получилось рабочее решение в пару строк - может кому пригадится.
    1. Запуск ffmpeg в screen с именем record.
    screen -d -m -S record ffmpeg -rtsp_transport tcp -i rtsp://192.168.0.100/avstream -c copy -map 0 -f segment -segment_time 1800 -segment_format mp4 -reset_timestamps 1 -copyts -flags global_header -strftime 1 /home/user001/video/%Y-%m-%d_%H-%M-%S.mp4

    Запуск ffmpeg с параметром -f segment пишет поток rtsp непрерывно, разбивая автоматически на файлы длительностью 1800 секунд ( параметр -segment_time 1800 ), т.е. по 30 мин. Имя фа
    -rtsp_transport tcp пришлось добавить, т.к. без этого терялись пакеты.

    2. В /etc/crontab добавляем стоку
    *  *	* * *	root	ls -t /home/user001/video/* | sed -e '1,96d' | xargs -d '\n' rm

    которая раз в минуту проверяет данную директорию на количество файлов и оставляет только 96 самых свежих файлов, а остальные удаляет (96 по полчаса = 2 суток).
    Ответ написан
    Комментировать
  • На повестку дня: Ruby On Rails или Node.js или php или Python?

    webus
    @webus
    Golang | Python | NodeJS | Java
    Python / Django.

    Мода на Ruby / Rails прошла. Владельцу проекта нужна предсказуемость и прозрачность работы фреймворка, на котором построен его проект. Этого достаточно сложно добиться с "магией" Ruby, которую понять то сложно, если пришел с других языков. Это первое.

    Второе, как ни крути но Ruby медленный. Да я пробовал последний Ruby 2.1 с последними Рельсами, и говорю он медленный. Да я знаю, что можно запускать Рельсу на всяких passanger, thin и unicorn. Знаю что есть JRuby и прочие реализации. Знаю что можно закешировать все что можно. Я это пробовал. И все равно, Руби - медленный. К слову реализаций Python тоже много, есть и Jython, PyPy, Stackless Python. Django на фоне Rails выглядит просто молнией, быстрый старт и прозрачность работы. Нет никакой магии, все понятно как работает от начала и до конца.

    Третье, Django достаточно консервативный фреймворк. В него никогда не добавят какую-нибудь сомнительную фичу, как это бывает в Rails (например никому не нужный turbolinks). Скоро выходит версия 1.7. Где достаточно много плюшек действительно нужных.

    Вам будут говорить про разветвление Python на версию 2 и 3. Что все плохо. Не верьте. Это все ерунда. В настоящее время большинство популярных библиотек уже давно на Python 3. Django, Flask уже давно. Мы все новые проекты начинаем на Python 3 и проблем никаких нет.

    На счет NodeJS. Использовать можно, но... Неудобно. Переносимость кода client side < - > server side по факту равна менее 10%. Сейчас большинство используют NodeJS как платформу для запуска нужных тулз для сборки фронтэнда, например Grunt / Gulp, Bower и прочее. Конечно пакетный менеджер npm.

    Надеюсь ответил на ваш вопрос.
    Ответ написан
    4 комментария
  • Классификация почтовых серверов?

    EKrava
    @EKrava
    postfix/exim — humar readable configs, как лично по мне то в exim более readable, но он монолитный, postfix — модульные, теоретически расширять его должно быть проще, но меня доканал тот момент, что письмо в процессе перекидывания меж процессами несолько раз меняло свой message-id и в логах из за этого разобратся сложнее, если что-то работает не так как ожидаемо.

    есть уже «собранные комбайны», тот же Zimbra, Zarafa, Open-XChange.
    если пользователей мало, можно попробовать CommuniGate(<=10), Axigen(<=100)
    Ответ написан
    Комментировать