Python 3.6 f-strings rant

Python 3.6 introduced a new way to format strings, called Formatted string literals, or just f-strings. Everyone on the internet seem to be happy about it. I'm definitely not.

For starters, Python 3 already had 3 built-in ways of doing it before. Just think about it... 3 ways to format strings in language that declares simplicity as a goal:

There should be one-- and preferably only one --obvious way …

more ...

Python Type Hints are awesome

I really love Julia Evans's blog, she writes with such excitement and enthusiasm about every new bit of technology she learns. For me, this is what makes our job so great - we can learn something new and cool almost every day.

And recently I've felt very excited with some of new abilities Python now have. I'm talking about including of PEP 484, which describes Type Hints, in Python 3.5 …

more ...

О пользе Python и костылях с Docker

В процессе организации авто-очистки Docker Registry 2, устав ждать в появления в нем столь "ненужного" функционала, как удаление образов с диска (DELETE запросы удаляют тег, но сами данные остаются на диске и жрут место), я в очередной раз прибег к помощи скрипта из delete-docker-registry-image, и уперся в то, что этот самый скрипт (написанный изначально на bash) невероятно медленно работает на большом Registry.

К примеру, удаления одного тега для repository с …

more ...

Плагин к Collectd для сбора метрик Riak CS

На днях наконец-то дошли руки до модернизации той части мониторинга, которая отвечает за сбор метрик, и набивший оскомину Munin был окончательно заменен на Graphite + Collectd. Теперь воцарилась идиллия - Icinga2 складывает метрики из perfdata в Graphite, и Collectd отправляет все метрики туда же.

Хочется отдельно отметить, что несмотря на то, что изначально Collectd мне не очень понравился (кому может сейчас понравиться Apache-подобный конфиг?), при дальнейшем изучении я был приятно поражен богатством …

more ...

Балансировка в HAProxy на основе данных cAdvisor

Для запуска Docker-контейнеров у меня в данный момент выделено достаточно много серверов, причем аппаратная часть у некоторых из них отличается друг от друга. Соответственно, при настройке на чудесном балансировщике HAProxy такого параметра балансировки как "вес сервера", приходится это различие в аппаратной части учитывать.

Можно, конечно, подобрать значения весов самостоятельно на основе данных мониторинга, а при появлении нагрузки от соседних Docker-контейнеров эти веса корректировать, но это не наш метод.

Не так …

more ...

Мониторим Docker-контейнеры с cAdvisor и Nagios/Icinga2

После того, как я научился мониторить память в Docker-контейнерах, я решил мониторить еще и нагрузку на CPU. Поскольку это дело не самое тривиальное, и хотелось не писать свой велосипед, а пользоваться чем-то популярным и поддерживаемым, я решил попробовать cAdvisor.

И вот что я могу сказать - отличный инструмент! Ресурсов практически не потребляет (около 20 Мб оперативной памяти и неизмеримо мало CPU), обладает простым API для доступа к собираемой им информации, имеет …

more ...

Научился мониторить использование памяти в Docker-контейнерах

Я сегодня занимался мониторингом, а конкретно нашими докер-контейнерами.

Лирическое отступление: Для мониторинга я теперь (уже на другом месте работы) использую наследника Nagios - Icinga2. Пока все нравится, ребята очень круто переписали Nagios, реализовали гораздо более вменяемый формат конфигурации, и кучу новых возможностей.

Используя Docker для автотестов я уже ловил проблемы, когда интерпретатор Ruby кушал всю выделенную память в контейнере и тихо умирал от рук OOM Killer.

Поскольку теперь я использую Docker …

more ...

Lyrics Tagger

Предыстория

Я езжу на работу в общественном транспорте, и слушаю там музыку со смартфона. Достаточно часто хотелось почитать тексты прослушиваемых в данный момент песен, но искать их в интернете было не слишком удобно, да и вообще интернета до недавнего времени в метро не было.

Решение выглядит очевидным - надо встроить тексты песен в сами музыкальные файлы. Благо, основные форматы это позволяют. Музыку я храню во FLAC, а на смартфон закидываю в …

more ...

Разбирался с page-cache в Linux

Читая книгу "Разработка ядра Linux" за авторством Роберта Лава, я решил поглубже разобраться в том, как работает кэш в Linux, и набрел на вот эту статью на Хабре от Яндекса.

Сама статья весьма познавательна, особенно видео - рекомендую. Так вот, в этом видео Роман Гущин, с помощью простой утилиты, наглядно показывающей размер кэша, показывал как работает файловый кэш.

Конечно, мне захотелось в образовательных целях написать такую утилиту для себя, чтобы можно …

more ...

s/Ruhoh/Pelican/

Переехал с Ruhoh на Pelican, потому что Python.

А если подробнее - потому что Ruhoh написан на Ruby, и не особо развивается. А Pelican написан на Python, который является моим основным языком, и уже давно и активно развивается, и обладает обширной базой плагинов и тем.

more ...