вторник, 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. Он неожиданно для меня даже получил какую-то популярность, несколько человек попросили добавить туда несколько новых возможностей. В итоге я всё же поборол свою лень и наконец реализовал то, что просили. Сейчас постараюсь изложить, что появилось нового.