Popstas

Записки о Linux

18 Mar 2017, 22:20 - 2 мин читать

Продублировать последний аргумент текущей команды в zsh, zle widget

В последнее время я упоролся по тюнингу своего zsh. Потратил на это кучу времени, но есть и плюсы: поучаствовав в правке пары плагинов, я начал понимать, как работает вся эта магия, которой я давно пользуюсь.

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

ls filename.ext
cp <Alt+.> <Alt+.>

То есть, я сначала вводил команду-пустышку, такую, чтобы в историю попала команда, где последним аргументом будет путь к файлу. Потом через Alt+. вставлял 2 раза последний аргумент предыдущей команды.

Другие примеры использования:

  • mv path/file1 path/file2
  • cp config.example config
  • mc /home/user /home/user

Теперь я могу делать так:

cp filename.ext <Alt+,>

В действии:

13 Mar 2017, 00:30 - 2 мин читать

Подсветка Python синтаксиса в PhpStorm

Я долго терпел, но сегодня решил выяснить: можно ли добавить поддержку Python в PhpStorm.

Оказалось, что можно и делается хоть и не за минуту, а за 5-10 минут.

Tl;dr: можно сделать только подсветку, Solarized Dark нельзя. Официальная документация

9 Mar 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 минуту:

8 Mar 2017, 01:00 - 3 мин читать

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

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

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

Особенности

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

26 Feb 2017, 04:14 - 5 мин читать

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

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

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

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

24 Feb 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.

22 Feb 2017, 01:19 - 1 мин читать

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

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

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

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

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

19 May 2016, 00:47 - 5 мин читать

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

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

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

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

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

11 Apr 2016, 05:01 - 2 мин читать

Bash on Ubuntu on Windows: первый блин

Итак, дождался обновления Windows, поставил в нее Ubuntu по инструкции, вот что было дальше: Tl;dr: оно очень сырое, не работает почти ничего. Первым делом захотелось родной zsh, берем aptitude, ставим, Ubuntu же! Шелл открылся под root, так что sudo не нужен. $ aptitude install zsh Конечно, ничего не вышло :) Во-первых, aptitude не нашел файл /var/lock/aptitude, нет проблем, ставим через apt-get, но оказывается, что нет инета. Про это есть issue#14 (а багов за 4 дня открыли 40+), оказалось, дело в DNS, лечится так: