понедельник, 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 ГБ на диске. Нужно как-то решать проблему.

 

среда, 4 мая 2016 г.

Emacs: скопировать в буфер обмена полный путь к текущему файлу

Иногда нужно скопировать текущий путь в буфер обмена, а Emacs не имеет встроенной команды для этого, но как всегда небольшая функция поможет справиться с проблемой:



понедельник, 18 апреля 2016 г.

Перенос браузера на ram диск в linux

Я тут задумался над оптимизацией работы своей системы с диском. И задался целью выявить, кто же больше всего пишет на диск, благо в Linux это сделать не сложно. Нужно запустить из консоли:
sudo iotop -oPa
Для пущего эффекта перед запуском команды закройте браузер, а потом запустите вновь. Не скажу как насчёт Chrome и остальных, а вот Firefox с парой десяток вкладок в первые 5 минут после запуска запросто записывал на диск - пол гигабайта. Даже когда я в нём ничего не делал, он продолжал что-то писать. Ни один другой процесс больше у меня так активно с диском не работал.

вторник, 12 апреля 2016 г.

Emacs: Переименование и удаление текущего буфера вместе с файлом

Время от времени, чаще всего, когда я рефакторю код, мне нужно быстро переименовать файл и буфер, связанный с ним. Есть конечно "M-x rename-file", но она к сожалению не переименовывает буфер и не очень удобна в обращении. Но простая обёртка поможет решить проблему:

понедельник, 28 марта 2016 г.

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

Я думал, что написать программу скачивающую сайт - на пару часов делов то. Всё ведь просто - скачиваем первую страницу и рекурсивно проходимся по всем найденным внутри ссылкам. Однако с таким подходом примерно 20% страниц оказались мусором, который мне не пригодился. Ниже я объясню, как я с таким мусором боролся. 

понедельник, 21 марта 2016 г.

Стоит ли использовать json protobuf в проекте с Python?

Появилась тут вдруг необходимость связать 2 приложения на С++ и на Python между собой. После недолгих раздумий был выбран вполне очевидный вариант - HTTP(s) + json. Human readable, удобно тестировать и всё такое прочее. API было решено строить на базе REST (хоть и на не совсем идиоматичном), ибо он сейчас модный и хипстерский. Можно было бы сделать всё к примеру на SOAP, но боюсь потом спать не смогу. Ещё хотелось отметить, что сервером является приложение на С++, проекты находятся в разных репозиториях и есть вероятность, что в дальнейшем Python часть будет делать человек не знающий плюсы.

среда, 9 марта 2016 г.

Веб поиск на Go. Начало. Выбор БД.

Мой первый опыт знакомства с Go только по документации и статьям получился довольно неудачным, язык казался страшным и неудобным по большинству параметров. Но раз так много и упорно о нём в последнее время говорят, значит что-то в Go есть?! В общем я решил познакомиться с ним поближе. И по моему глубокому убеждению, проекты типа "hello world" для этого очень плохо подходят. Нужна большая интересная задача, в режиме "хотя бы пара месяцев по вечерам после работы". В общем я начал писать свой маленьких поисковик.

среда, 24 февраля 2016 г.

Развитие моего плагина для Emacs: multi-compile

Я как-то писал про свой небольшой плагин для Emacs - multi-compile. Он неожиданно для меня даже получил какую-то популярность, несколько человек попросили добавить туда несколько новых возможностей. В итоге я всё же поборол свою лень и наконец реализовал то, что просили. Сейчас постараюсь изложить, что появилось нового.

воскресенье, 3 января 2016 г.

Подводим итоги 2015 года

Поздравляю всех с наступившим Новым Годом! Настала пора подвести итоги прошедшего года в около-ИТ области.