09.03.2017, 08:00 - 7 мин читать

ansible-role-zsh: zsh терминал с autosuggestions, fzf и красивым удобным prompt

Репост моей статьи с хабра.

Я провожу в терминале много времени, поэтому хочется, чтобы все было красиво, быстро и удобно. Из этого рождается постоянное желание его настраивать, пробовать разные плагины. Шеллом я выбрал для себя zsh лет 5 назад, пару лет назад нашел oh-my-zsh для его удобной настройки. Со временем к этому конфигу добавились некоторые сбоку торчащие части в виде powerline и percol.

Недавно я решил пересобрать все так, чтобы избавиться от ненужных плагинов, добавить нужные, сделать легкую установку и обновление. В итоге появилась роль ansible-role-zsh, которая полностью настраивает терминалы на локалке и на моих серверах.

Особенности:

  • устанавливается одной командой (кроме шрифта и темы вашего терминального клиента)
  • быстро загружается, быстро работает
  • полностью настраивается через ansible, ~/.zshrc
  • полностью локальная (в систему ничего не ставится, все хранится в ~/.oh-my-zsh)
  • оставляет возможность юзеру вносить свои настройки через ~/.zshrc.local
  • одинаково работает на macOS, старом Debian, Ubuntu, CentOS
  • нормально выглядит на разных цветовых схемах (но лучше всего на Solarized Dark)
  • встроенная подсветка синтаксиса (помогает реже ошибаться и лучше читать длинные команды)
  • автодополнение по истории команд (помогает реже нажимать Ctrl+R)
  • отображение времени для долго выполняемых команд (помогает реже использовать time)

Демонстрация фич за 1 минуту:

ansible role zsh

08.03.2017, 01:00 - 3 мин читать

Мой процесс написания ansible роли с Molecule и Gitlab CI

Опишу процесс, к которому я пришел на данный момент.

TODO: concurrent TODO: несколько дистрибов

Особенности

  • Стремление не писать роли
  • Постепенное ужесточение требований при написании, от “Лишь бы прошло с 10 раза” к “Скорее всего Travis пройдет с первого раза”
  • Тестирование на разных машинах

build progress

26.02.2017, 04:14 - 5 мин читать

Настройка кеширующего прокси apt-cacher-ng для ускорения тестирования ansible ролей с Molecule, Gitlab CI и Docker

В предыдущей статье я настраивал apt-mirror для тех же целей. У того способа нашлось несколько недостатков.

В статье ниже описано, как решить ту же проблему, используя apt-cacher-ng.

Tl;dr: на этот раз все получилось, этот способ меня устроил.

apt-cacher-ng and gitlab ci for ansible

24.02.2017, 17:39 - 5 мин читать

Как я создал и отказался от локального репозитория apt-mirror для Ubuntu для ускорения тестирования ansible ролей

При тестировании плейбуков на чистой Ubuntu (а как же еще?) самые большие накладные расходы по времени (субъективно) и уж точно самые большие по трафику уходят на установку пакетов из системного репозитория. Особенно это заметно, когда видишь, что один и тот же тест Travis CI прогоняет в 1.5 раза быстрее.

Ниже описано, как создать зеркало из http://mirror.yandex.ru/ubuntu и подружить его с Gitlab CI и molecule.

Tl;dr: не делайте локальный репозиторий через apt-mirror для мелких задач, не стоит оно того. Вместо этого нужно поднять кеширующий сервер через apt-cacher-ng.

Tux and servers

22.02.2017, 01:19 - 1 мин читать

Извлечение одной из папок в git репозитории в отдельный репозиторий с сохранением истории - git-extract-subproject

Занялся я тут распиливанием большого проекта (дерево ansible ролей) на отдельные репозитории.

Для этого надо:

  1. Извлечь директорию подпроекта в отдельный репозиторий
  2. Удалить из проекта папку подпроекта
  3. Добавить в большой проект зависимость от подпроекта

Ниже написано, как сделать 1-й шаг одной командой через скрипт git-extract-subproject.

Git projects extract

19.05.2016, 00:47 - 5 мин читать

Kapacitor: часть 1. Введение, сравнение с Monit, установка с Ansible и без, настройка

Несколько недель назад я начал разбираться с Kapacitor, попутно записывая свои действия. Конца разбирательствам было не видно, записей становилось все больше и накопилось на серию.

Речь пойдет о Kapacitor, последнеем слое из стека TICK от InfluxData, набора программ для сбора, отображения и обработке метрик.

Tl;dr: думаю, что Kapacitor нужен только тем, кто уже использует InfluxDB для сбора метрик. С установкой могут быть проблемы, если руки кривые.

А также небольшое замечание о том, как делать Pull request'ы из браузера за 2 минуты

Kapacitor

07.04.2016, 00:26 - 2 мин читать

Windows 10 build 14316 со встроенной Ubuntu и bash через программу Microsoft Insider Preview доступна не всем

Все конечно слышали, что Microsoft и Canonical сговорились и встроили в винду линукс. Так вот, его пока еще нельзя потрогать.

UPD 11.04.2016: сборка 14316 дошла до меня, смотрите инструкцию по настройке.

06.03.2016, 10:09 - 7 мин читать

CHANGELOG.md: ручное и автоматическое ведение истории изменений проекта в Git

С начала января я веду свой проектик, на котором обкатываю новые для меня технологии:

  • Статический анализ кода, phpcs, phpmd, Scrutinizer
  • Автоматическая сборка, Travis CI
  • Unit тесты, PHPUnit
  • Покрытие кода, Coveralls
  • Работу через задачи для любых изменений, Github Issues, PhpStorm tasks
  • Документирование всего: README, CHANGELOG, сайт проекта, –help

В этом посте изложена история изменений моего мнения о разных генераторах историй изменения.

Tl;dr: conventional-changelog, стандартизация коммитов.

changelog

02.03.2016, 00:49 - 5 мин читать

Интеграция Git, Gitlab и Planfix почти как на Github

Распробовал тут на неделе интеграцию задач Github и самого Git issue tracker.

Ниже будет написано, как настроить в Планфиксе такое поведение:

  • В коммите упоминаем задачу, например, Правки футера шаблона, https://test.planfix.ru/task/123456
  • После push в удаленный репозиторий в упомянутой задаче появляется комментарий с текстом коммита и ссылкой на страницу коммита на Gitlab, если проект подключен к репозиторию.

Tl;dr: настраивается post-receive hook в Git на удаленном сервере, после каждого пуша анализируются сообщения пришедших коммитов, коммиты, содержащие ссылки на задачи отправляются в задачи по email.

Вся интеграция делается в одном файле, код хука лежит здесь - git-hook-post-receive

planfix

29.02.2016, 03:46 - 2 мин читать

average: измерение среднего времени выполнения команды в bash

Периодически хочется посчитать среднее время, у меня были такие сценарии:

  • простая проверка скорости загрузки страницы
  • подбор оптимальных параметров к команде
  • сравнение разных команд

Раньше я просто запускал несколько раз с time, смотрел результат, у уме делил. Но мне это надоело, поэтому написал скрипт average.

27.02.2016, 14:48 - 7 мин читать

Как я обрабатываю входящие потоки контента через RSS и Pocket или моя воронка статей

Хочу поделиться своим способом быть в курсе всего интересного в мире IT, читать много статей и знать, где быстро найти нужную статью.

Tl;dr: RSS + Twitter + Email → Pocket → Firefox → Twitter + закладки.

content pyramid

26.02.2016, 21:29 - 7 мин читать

Docker в картинках

Оставлю здесь свой пост с хабра.

Перевод поста Visualizing Docker Containers and Images, от новичка к новичкам, автор на простых примерах объясняет базовые сущности и процессы в использовании docker.

Если вы не знаете, что такое Docker или не понимаете, как он соотносится с виртуальными машинами или с инструментами configuration management, то этот пост может показаться немного сложным.

Пост предназначен для тех, кто пытается освоить docker cli, понять, чем отличается контейнер и образ. В частности, будет объяснена разница между просто контейнером и запущенным контейнером.

docker layers

25.02.2016, 23:31 - 4 мин читать

Большой тачпад как замена мышки

Наслушавшись рассказов про то, какой на макбуке офигенный большой тачпад и как он легко заменяет мышку, нашел способ испытать это на себе бесплатно. Описываю свои впечатления как обычно: плюсы, минусы, грабли, способы обхода.

touchpad

31.01.2016, 02:00 - 2 мин читать

Проверяем изменения на странице через cron

Сегодня хотел заказать ароматизаторов на Baker Flavours, дошел до страницы заказа, и увидел “Уважаемые заказчики! В связи с чрезвычайно большим количеством заказов, прием заказов временно прекращен.".

Ок, будем ждать, пока эта надпись не пропадет, а чтобы не проверять руками, будем делать это на автомате и ждать уведомления.

Строчка для crontab:

0 20 * * * curl -s http://bakerflavors.ru/formbf.htm | iconv -f windows-1251 -t utf-8 | grep "временно прекращен" > /dev/null || { echo "BF order started" | terminal-notifier && open http://bakerflavors.ru/formbf.htm }

Подробности под катом.

31.01.2016, 01:43 - 2 мин читать

E.ggtimer: таймер в пару кликов в любом браузере

Бывает, что надо вспомнить о чем-то в ближайшее время: выключить чайник, выйти к подъезду через 10 минут, бросить заниматься фигней через полчаса - для таких вещей идеально подходит таймер. От таймера требуется только одно: возможность установить его в течение 5 секунд. Недавно я нашел такой с такими плюсами:

  • Настроить нужно один раз, после этого будет работать на всех системах, если включена синхронизация настроек браузера
  • Пользоваться легко

UPD 05.03.2017: до сих пор пользуюсь через раз, либо этим способом, либо: “Окей, гугл, таймер на пять минут”.

UPD 12.04.2020: больше не пользуюсь, теперь в каждой комнате есть колонка с Алисой, проще сказать: “Алиса, таймер на 5 минут”.

egg timer

17.01.2016, 08:22 - 6 мин читать

Автоматическое скачивание торрентов с Weburg в Transmission и статистика на InfluxDB & Grafana

UPD 20.05.2020: я уже несколько лет как не абонент Планеты, но Вебургом продолжаю пользоваться.

Теперь я использую её так:

  • В браузере стоит юзерскрипт, который позволяет ставить на закачку в Transmission в 1 клик (на сервере должен быть запущен принимающий скрипт)
  • Когда смотрю какой-то сериал, ставлю в cron задачу на ежедневное докачивание новых серий

У моего интернет-провайдера Планета есть бонусная программа поощрения раздачи торрентов с weburg.net, дающая бонусы, их можно тратить на абонентскую плату. У меня комп постоянно включен, я сразу стал участвовать.

Поддержку раздач можно разбить на несколько задач:

  1. периодически скачивать новинки фильмов
  2. скачивать новые серии популярных сериалов
  3. удалять то, что плохо раздается

Через пару месяцев мне это надоело, задумался об автоматизации этого процесса и вот в новогодние каникулы родился transmission-cli - консольная утилита, решающая часть этих задач.

transmission-cli grafana

17.01.2016, 07:50 - 1 мин читать

Быстрое обновление PhpStorm EAP на Mac OS через bash

Надоело постоянно обновлять PhpStorm руками. На Ubuntu последнее время делал это с помощью ansible, под Mac этот плейбук не расчитан, к тому же версию ему надо было указвать вручную. Поэтому написал скрипт, не совместимый с Ubuntu :)

UPD: 06.06.2016 Сегодня вышла EAP 2016.1.1, так вот, теперь app ставится не в PhpStormEAP, как раньше, а с версией, поэтому мой скрипт перестал работать.

UPD: 30.03.2018 JetBrains выпустил официальный инструмент для автообновления всего: Toolbox App

phpstorm

14.12.2015, 08:16 - 6 мин читать

Разворачиваем Drupal 8 с помощью Otto

Репост моей статьи с хабра.

Этот пост получился в результате моего ознакомления с Otto, одним из последних продуктов Hashicorp, о котором уже была обзорная статья на хабре.

Мой пост носит более практический характер. Я решил поднять на otto стандартный проект, чтобы сразу не наткнуться на тонкости настройки, а чтобы было интересно, выбрал Drupal 8, вышедший недавно.

Otto