понедельник, 19 сентября 2016 г.

Хватит использовать Debian и Ubuntu как базовый образ для Docker

Если пройтись по образам на docker hub, то подавляющее большинство окажется построенными на базе Ubuntu и Debian. Хотя уже встречаются робкие попытки, в официальных сборках популярных пакетов, выкладывать альтернативные образы на базе Alpine linux. Но в общей массе это капля в море. А между тем Alpine подходит для базового образа куда лучше, чем такие знакомые и родные Debian с Ubuntu.

вторник, 19 июля 2016 г.

Меню с нечётким поиском в консоли


Сегодня будет сказка о утилите fzf (command line fuzzy finder). В основе лежит простая идея: fzf читает строки из STDIN, отображает в виде меню с нечётким поиском в консоли и пишет выбранную строку в STDOUT. Несмотря на, скажем даже, примитивность, такой подход позволяет удобно интегрировать со стандартными утилитами командной строки и делать интересные вещи. Ниже приведу несколько примеров того, что на её основе можно сделать.

понедельник, 11 июля 2016 г.

Линтеры в облаках

Сегодня тема - интеграция GitHub и линтеров, на примере Go. Впрочем, кроме "Go Report Card" - сервисы мультиязычны. О пользе линтеров вообще, объяснять я думаю не нужно. А вот в защиту линтеров в облаках в частности, пару слов скажу. Конечно удобнее настроить редактор и править предупреждения локально, но это не всегда возможно. Для редактора может банально не найтись нужного плагина, настройка зачастую сложна, поддерживать в актуальном состоянии плагины тяжело. И оформление результатов у сервисов куда как лучше, я не видел ни одну IDE с графиками, плашками, агрегированными метриками для ошибок и т.п.

вторник, 5 июля 2016 г.

Подсветка нового текста в Emacs (volatile-highlights)

Нашёл интересный пакет для Emacs, который подсвечивает изменения в буфере, связанные со вставкой текста. Например если выполнить операцию undo или paste, новый текст подсветится, после следующей нажатой клавиши подсветка исчезнет. Расширение простое, но делает редактирования текста приятнее.


понедельник, 27 июня 2016 г.

CI для Go на базе Github

Сегодня поговорим о тестировании. На изучение темы применительно к Go меня сподвигла задача минимизации HTML (подробнее в "Веб поиск на Go. Краулер. Как не хранить лишнее"). Реализация имела так много особых случаев, что без тестов удержать их в голове стало невозможно. А чуть позже природная лень сподвигла меня настроить автоматическую прогонку тестов.



понедельник, 20 июня 2016 г.

Компиляция во всплывающем буфере Emacs

Начну с описания проблемы, которая давно меня раздражала в Emacs. Запускаем, допустим, компиляцию, и она открывает буфер в непредсказуемом месте, замещая уже открытые. Логику по которой она выбирает себе место - я так и не постиг. Но зато нашёл плагин, который борется с такими своевольными операциями - popwin.

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

Оптимизация работы с SSD: Планировщики ввода/вывода в Linux

Поговорим сегодня о планировщиках ввода/вывода (I/O Scheduler) в Linux, какие они бывают, чем отличаются и как их можно поменять. С практической точки зрения тема может быть интересной для оптимизации работы системы с SSD.

вторник, 7 июня 2016 г.

Emacs как IDE для Go

Цель статьи дать обзор инструментов в Emacs для работы с Go кодом. Настроить горячие клавиши, возможно добавить алиасы и сделать их удобнее для повседневного использования - на вашей совести. Хочу отметить, что поддержка языка в Emacs - на высоком уровне: подсветка кода, автодополнение, сниппеты, рефакторинг, подсветка ошибок, отображение документации, тестирование, компиляция и многое другое. Сразу оговорюсь, что проверял я только под Linux, под альтернативные OS могут быть особенности, которые тут не освещены.

понедельник, 30 мая 2016 г.

Заворачиваем Chrome в Docker контейнер

Сегодня будем заниматься засовыванием Chrome в Docker контейнер. Я этим занялся, поскольку планирую перенести пакеты, которые не входят основной репозиторий - в контейнеры. Это безопаснее, реже ломается, быстрее в развёртывании и обновлении, не тянет ненужных зависимостей. Плюс интересно приобрести опыт в работе с контейнерами, которые имеют GUI. Chrome хороший, в этом плане, кандидат - много неочевидных нюансов в настройке. Приступим.

понедельник, 23 мая 2016 г.

Веб поиск на Go. Краулер. Как не хранить лишнее

В предыдущей статье, я написал, как можно на этапе скачивания отбросить лишние страницы до непосредственной загрузки. Оставшиеся приходится хранить. Несмотря на большие и дешёвые диски, объёмы получаются существенными. Например, у меня сейчас в БД загружено 12 тыс страниц. И чистый HTML без картинок и прочего весит 900 МБ. Это неприемлемо много, поскольку для одного только habrahabr в очереди на скачивание осталось 20 тыс. страниц, в действительности их больше, т.е. только один сайт займёт более 2 ГБ на диске. Нужно как-то решать проблему.