вторник, 21 июля 2015 г.

Ansible - встроенные возможности

В предыдущих сериях 1 2 3, были примеры того какие возможности в плане расширения предоставляет ansible, на примере работы с пакетами в archlinux. Сейчас я попробую решить пару - задач декларативными средствами ansible, принципиально не используя самописные плагины и вызов внешних скриптов напрямую. Заодно будет повод ознакомиться с тем, что собственно ansible предоставляет из коробки. Тем более, что они в playbook умудрились добавить поддержку циклов, условий, переменных и т.п. Интересно понять насколько удобно ими пользоваться.

воскресенье, 19 июля 2015 г.

Ansible - плагины

В предыдущей статье я показал как можно написать для ansible свой модуль, на примере установки пакетов из AUR. Это делает меня на один шаг ближе к цели - создать решение для максимально полного сохранения конфигурации своего домашнего компьютера, однако остаются нерешенные задачи. В частности хотелось бы список пакетов, которые нужно устанавливать - хранить в отдельном конфигурационном файле, а не прописывать их в playbook. Это позволит н-р в одном случае прочитать конфиг и вернуть из него только неустановленные пакеты, подав их на вход модуля yaourt, в другом случае - можно будет сравнить список явно установленных пакетов в системе и выдать те, которые ещё не прописаны в конфиге и т.д.

вторник, 14 июля 2015 г.

Ansible - модули

В предыдущей статье удалось заставить ansible работать со стандартными модулями, в частности устанавливать пакеты через менеджер pacman. Однако в archlinux одним pacman сыт не будешь, большинство "вкусных" пакетов находится в пользовательском репозитории пакетов AUR. А разработчики дистрибутива заняли принципиальную позицию, что никогда не будет официального способа ставить неофициальные пакеты, мол если уж решились - то качайте и ставьте самостоятельно. Сообщество выпустило несколько альтернативных менеджеров для работы с AUR, одним из самых популярных считается yaourt. Я это всё к тому, что из ansible просто необходимо уметь вызывать yaourt, а такого модуля у них нет. В принципе это даже хорошо, поскольку даёт повод немного глубже окунуться в ansible и написать такой модуль самостоятельно.

суббота, 11 июля 2015 г.

Ansible - введение

Есть такой класс инструментов, как системы управления конфигурациями. Они сейчас довольно многочисленны: chef, puppet, salt и другие. Отличия в них не принципиальные - одна проще в настройке, другая стабильнее и чуть больше умеет, но в целом выбрав одну из них, вы так или иначе сможете добиться поставленных целей. Я к сожалению не обладаю достаточной компетенцией, что бы их сравнивать, поскольку со всеми знаком только на уровне статей\документации. Лично для себя, что бы познакомиться с этим классом инструментов я выбрал ansible. Судя по отзывам он наиболее логичен, прост в освоении, активно развивается и написан на python. Последнее важно, т.к. я более или менее знаком с этим языком, в отличии от часто используемого для таких инструментов ruby.

понедельник, 29 июня 2015 г.

Отображение непечатаемых символов в emacs

Отображение непечатаемых символов в emacs с одной стороны очень простая тема, выполняем "M-x whitespace-mode" и пробелы, символы табуляции, перес строк будет сразу видны на экране, выполняем команду ещё раз - режим выключается. Настройки по умолчанию в принципе неплохие и если они устраивают, то на этом можно и закончить изучение режима. Но это же emacs, и "под капотом" скрывается на удивление много настроек для этого режима. К сожалению информация о нем раскидана по разным уголкам интернета, а кое-что пришлось узнавать экспериментальным путём. Так что сейчас попробую описать важные на мой взгляд опции этого режима.

воскресенье, 28 июня 2015 г.

Расширенная проверка орфографии в emacs


В предыдущей статье я рассказал как можно настроить двуязычную проверку орфографии, однако такая проверка работает с каждым словом в отдельности, не учитывая контекст. Это безусловно полезная проверка, но её одной мало, хочется расширенного анализа: проверки расстановки дефисов, пунктуации, стиля и т.п. Конечно же в emacs нашёлся способ проводить и такой анализ текста. Делается это при помощи плагина работающего с приложением languagetool.

суббота, 20 июня 2015 г.

Изучаем английский

Кому-то иностранный язык даётся просто, пару раз увидел\написал слово и запомнил, а вот у меня с этим плохо, не даётся и все тут. Я перепробовал довольно много разных способов изучать его. Начиная от сильно разрекламированного lingualeo, заканчивая написанием своей собственной программы. Кончалось все одинаково, через пару тройку месяцев энтузиазм заканчивался, я начинал пропускать занятия и в конце концов забрасывал это дело ещё на пол года. За годы экспериментов сформировалось, сугубо личное конечно, мнение о том, какое должно быть приложение, для изучения иностранного языка. И как ни странно, я его нашёл, там есть что улучшать, куда расти, но идеология и направление движения очень правильные.

вторник, 16 июня 2015 г.

Двуязычная проверка орфографии в Emacs

Я в последнее время почти полностью перешёл на Emacs, как универсальный редактор для всего, в связи с чем часто пишу там тексты. А поскольку уроки русского языка со школы уже основательно позабылись, то текст приходится часто копировать в LibreOffice для проверки орфографии, что надо признать жутко неудобно. Плюс ко всему я в текстах использую и английские слова, поэтому хотелось бы проверять сразу 2 языка. Найти готовую инструкцию по проверке орфографии в Emacs для такого случая не получилось. Поэтому пришлось разбираться со всем самостоятельно.

воскресенье, 14 июня 2015 г.

Компиляторы иногда ругаются по делу

Буквально только что натолкнулся на забавную особенность языка C++, уже встречался с ней раньше, но каждый раз удивляет. Имеем вот такой код:
void foo(uint32_t v)
{
    ...
    CTimeout t(std::chrono::seconds(v));
    ...
}
Компилятор объявление переменной интерпретирует как объявление функции, считая его эквивалентом вот этого:
CTimeout t(std::chrono::seconds v);
Т.е. он просто решил, что скобки тут лишние и убрал их. Искать такую ошибку в большом проекте можно очень долго. К счастью компиляторы сейчас пошли умные и о таких ситуациях предупреждают (по крайней мере clang), хотя и компилируют. Но когда проект компилируется с парой сотен ворнингов, отыскать важный сложно. Выводу, я думаю очевидны.

воскресенье, 7 июня 2015 г.

Конфиг для python скриптов

Захотелось тут на днях написать небольшую утилиту на python, дабы пользу себе нанести и язык заодно вспомнить. И оказалось, что требует она для своей работы конфиг. В мозгу сразу возникли слова: json, ini, xml, yaml и т.п. Но вот незадача - кто-то из них в стандартной библиотеке python отсутствует, где-то комментарии не поддерживаются, что-то имеет ужасный интерфейс работы из под python, опять же произвольную вложенность не везде можно использовать. И в добавок абсолютно все не поддерживают типизацию. Я уж было совсем приуныл, но в этот момент постучалась в мою голову одна светлая мысль: а python ведь скриптовый язык.