тестирование python приложения в docker

В этой статье речь пойдет о том, как я тестирую свой python код внутри docker контейнера с Alpine Linux. Для тех, кто не знает, что такое docker, поясню, что это инструмент для управления контейнерами, который использует “слоёные” файловые системы и написан на Go. Для меня основное преимущество docker перед привычной виртуализацией, например Qemu/KVM, в его легковесности. За счет AuFS/OverlayFS базовый образ системы и контейнер занимают до нескольких сотен мегабайт, а новые контейнеры используют тот же образ, что и старые, что позволяет экономить еще больше места.

смотрим фильмы с компьютера на TV

Новогодние праздники, полторы недели выходных, новый телевизор с wifi, ethernet и выходом в интернет.
Естественно, мне стало интересно, как подружить мой домашний сервер на линуксе (старый писюк) с телевизором, чтоб невозбранно смотреть фильмы в высоком качестве на большом экране.
Если вам это тоже интересно, тогда читайте дальше.

как собрать deb пакет

Постараюсь как можно доступнее изложить процесс создания deb пакетов на примере ruby-zookeper. Предупреждаю сразу, что описанный мной метод пакетирования ruby gems неправильный, лучше использовать gem2deb для этого, но т.к. из исходников с помощью gem2deb собрать ruby-zookeper последней версии у меня не получилось, то вот самый простой метод сборки.

mercurial server hooks

Понадобилось сделать mercurial hook для проверки json файлов на валидность. К сожалению, документация mercurial оставляет желать лучшего, поэтому напишу, как я реализовал эту задачу.

Так, у нас есть сервер с репозиторием, мы хотим сделать так, чтобы при изменении, добавлении невалидного json в репозиторий, push отваливался с ошибкой.

Для начала, напишем сам hook. Было решено написать его на python.

повседневное использование mercurial

Я являюсь сторонником системы контроля версий Git, но на работе приходится использовать Mercurial он же hg. При переключении с git на hg некоторые вещи кажутся неочевидными. Хочу изложить свои ежедневные незамысловатые действия при работе c mercurial. После того, как вы изменили файлы, я настоятельно рекомендую сделать перед коммитом hg pull -u Mercurial (далее hg) почему-то не умеет fast-forward, как git, и если кто-то менял какие-то файлы до вас, которые вы даже не трогали, то если вы закоммитите, а потом попробуете запушить изменения при устаревшей копии репозитория, то hg откажется пушить, ссылаясь на то, что вы создаете новый head.

как включить логирование sftp

Я постараюсь тезисно изложить информацию о настройке логирования действий sftp пользователей для rsyslog. Если вы используете Debian подобные ОС (Ubuntu, Mint), то статья как раз для вас. Для начала, представим, что у вас уже есть sftp пользователь vpupkin с чрутом в /storage. Вот его секция в изначальном виде /etc/ssh/sshd_config Match user vpupkin ChrootDirectory /storage ForceCommand internal-sftp Все работает, логи по умолчанию у вас пишутся в /var/log/auth.log, но вдруг вы захотели писать логи для вашего пользователя в отдельный файл, что делать?

как узнать java heap memory size

Для вычисления необходимого размера кучи (heap) мы воспользуемся опцией -XX:+PrintFlagsFinal. В Java размер изначального (initial) и максимального (maximum) размера кучи (heap) выделяется по эргономическому алгоритму, дополнительно ссылки для java 7 и для java 8. Если коротко то все это расчитывается по следующей формуле: Изначальный размер кучи (initial heap size) Соотношение 1⁄64 от количества физической памяти на 1GB Максимальный разер кучи (maximum heap size) Соотношение 1⁄4 от количества физической памяти на 1GB К примеру рассмотрим вот такую машинку: RAM: 6 GB JDK: 1.7 Для отображения необходимой информации необходимо выполнить следующую команду: java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize' Вот такой результат мы должны увидеть на экране: Итого по полученным данным: Изначальный размер кучи (initial heap size) InitialHeapSize = 97801152 байт (97,8 Мб) Максимальный разер кучи (maximum heap size) MaxHeapSize = 1566572544 байт (1,5 Гб) Выделенный размер кучи (heap memory size) довольно близок к результатам эргономики: Изначальный размер кучи (initial heap size) 6144 Мб / 64 = 96 Мб Максимальный разер кучи (maximum heap size) 6144 Мб / 4 = 1536 Гб Для установки изначального размера кучи (initial heap size) используют -Xms, а для максимального размера кучи (maximum heap size) используют -Xmx.

linux на ноутбуке dell xps 13

Моему рабочему ноутбуку Toshiba Satellite исполнилось пять лет и я решил обновить его. Критерии выбора были такие: автономность около 8 часов, небольшой размер — 13-14 дюймов и небольшой вес, хороший дисплей с разрешением FullHD и больше, RAM не меньше 8ГБ, SSD или возможность его поставить. Под эти критерии попали всего две модели MacBook Pro Retina 13 и Dell XPS 13 (9343) 2015 года. Т.к. я не фанат Apple, то решил взять Dell.

puppet модули в отдельных репозиториях

Современная инфраструктура немыслима без автоматизации. Практически никто уже не настраивает сервера вручную, не вносит правки непосредственно в конфиги. Мир инфраструктуры заполонили системы управления конфигурациями, такие как puppet, saltstack, chef, ansible и пр. Каждый хипстер-программист обязан написать свою собственную систему управления конфигурациями. Но не будем о велосипедостроении, посмотрим на недостатки таких систем глазами пользователей. В данной статье я хочу затронуть проблему сваливания всего puppet кода в один большой репозиторий, где копошатся несколько людей, привнося свою лепту в общий процесс энтропии.

локальная установка пакетов

Вы наверняка сталкивались с ситуациями, когда нужно установить какой-то пакет, а его нет в репозиториях. Приходится скачивать и устанавливать его локально. Это не рекомендуемый вариант, но все же нужно знать, как установить пакет локально. Ниже опишу способы, которыми пользуюсь для установки пакетов в системах Debian/RedHat. Debian Для установки пакетов в Debian-based системах предусмотрено несколько программ: dpkg apt-get aptitude Эти программы идут из коробки, так сказать. К сожалению, из коробки не предусмотрено нормальной установки локального пакета с разрешением зависимостей.