Moving from Fish shell to zsh

Date Category IT Tags Fish / Zsh

I've been using Fish shell as my daily driver for more than 2 years. I don't want to insult Fish - this awesome shell provided me with wonderful out-of-the-box experience, introduced me to autosuggestions, and required almost no configuration.

But now, after 2 years of heavy usage, I've dropped it in favor of zsh.

The main reason for the switch is simple - Fish shell is not POSIX-compatible. And while many people …

more ...

Утилита gotests и плагин для Atom

Поскольку последнее время я все больше пишу на Go, мой workflow потихоньку обрастает различными полезными утилитами.

Одним из лучших открытий (после изумительного go-plus для Atom, который превращает Atom в полнофункциональную IDE для Go) стала утилита gotests, которая позволяет генерировать табличные тесты. При этом для нее есть плагины для Sublime Text 3 и Emacs.

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

Выглядит …

more ...

Все для HAProxy в Atom

Появилась у меня на работе задачка - взять 3 относительно разных конфига HAProxy, ответвившихся когда-то от общего предка, и обратно унифицировать их в один.

Конфиги хорошие, большие - 800 строк каждый.

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

Ну у нас же тут opensource, так что тут же был нагуглен архив с HAProxy.tmbundle, который …

more ...

Vendoring зависимостей в Go

После недавнего удаления модуля на 11 строк кода из npm, которое сломало всю Node.js инфраструктуру, я по-новому взглянул на то, как в проектах на Go реализованы зависимости от других пакетов.

Изначально, при знакомстве с go я был крайне недоволен отсутствием возможности задавать зависимости от конкретных версий (зависимость указывается только от репозитория, т.е. от master ветки) - ведь апстрим может ломать обратную совместимость, и твой проект просто не соберется. Причем …

more ...

Проверка образов Docker на уязвимости с Clair

Ни для кого не секрет, что контейнеры (и в частности Docker) не только решают много проблем (configuration drift, scalability, dependency hell), но и привносят новые (в частности, обновление базовых образов).

Я уже давно мониторил IT-мир на предмет появления хорошего инструмента для проверки Docker-образов на наличие известных CVE. До недавнего времени подходящего инструмента не было. Была парочка дистро-специфичных инструментов (например oscap-docker, с которым я помучался и забил), но ничего подходящего …

more ...

Открыл код db-checker

Недавно я открыл код еще одного инструмента, который уже около года использую на работе - db-checker.

Началось все с необходимости проводить регулярные проверки логической целостности данных в БД. Проще говоря - гонять мониторингом запросы к базе.

Сначала это была часть проекта, который проверял данные на нашем CDN. Проект этот сразу планировался многопоточным, поэтому написан на Go. Затем мухи были отделены от котлет, и проверка базы выделилась в отдельную сущность, но несколько legacy-моментов …

more ...

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

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

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

more ...

Рекомендую Advent Of Code

Закончил на днях решать задачи из замечательного набора программерских пазлов Advent Of Code (да, я тормоз и даже пропустил начало этого конкурса), и могу уверенно рекомендовать его любому.

Задачки веселые, разнообразные, в меру сложные, содержат много классических задач (задача коммивояжёра, задача о ранце и т.д.) в занятной обертке, так что их решение дает возможность отлично размять мозги.

Так же эти задачки отлично подходят для изучения нового языка, чем я …

more ...

Замена carbon-cache на go-carbon = Счастье

Пришлось на собственном опыте опробовать, насколько Graphite модульный.

При 200k metricsReceived наш Graphite, работающий на довольном старом сервере на обычных дисках, начал помирать. Carbon-cache постоянно был в топе потребления ресурсов, ни о какой отзывчивости в работе сервера речи вообще не шло.

"Хватит это терпеть!" - подумал я, и начал в который раз искать советы по тюнингу carbon для высокой производительности. В очередной раз ничего нового не найдя, я решил попробовать давно …

more ...

Немного житейского опыта

Решил поделиться небольшим набором "капитанских" жизненных практик, каждая из которых очень сильно упростила мне жизнь.

  1. Использование сервиса для чтения новостей/RSS.

    Я очень долго игнорировал RSS, считая его пережитком прошлого, но когда создавал свой VPS, поставил Tiny Tiny RSS и попробовал попользоваться.

    Сложно даже описать, сколько это мне сэкономило времени. Это оказалось настолько удобно, что теперь я не представляю свою жизнь без подобного сервиса, хоть от tt-rss и отказался вместе …

more ...