Приветствую, коллеги!
Хочу рассказать вам о нашем проекте — Geeknote. Это консольный клиент для Evernote. Проект Open Source и исходные коды доступны на Github. Geeknote позволяет работать с Evernote из командной строки. Реализованы все основные функции Evernote — создание/удаление заметок, создание блокнотов и тегов, поиск, а так же редактирование через обычный текстовый редактор заметок в формате markdown. То есть можно использовать Evernote в bash скриптах, cron, любых приложениях, где нельзя использовать Evernote SDK. Расскажу подробнее про проект.
Идея проекта
Мы активные пользователи Evernote и используем его в наших делах, личных и не личных, а так же глубоко верим в удобство идеологии Evernote — храни все в одном месте. И раз Evernote это сосредоточение информации для нас, мы подумали, что было бы удобно его использовать и в целях сбора статистики серверов, которые мы ведем. Так пришла мысль написать простой клиент для командной строки, который можно было бы использовать в cron + bash скриптах наших серверов.
Что было и сделано. В результате использования нам в Evernote прилетает информация:
- Критические и не очень ошибки на серверах
- Статистики по бекапам
- Статистика по нагрузке
- Различная информация с наших сайтов
- Прочая информация, которая так или иначе мониторилась
Просто шаблон мониторинга изменился — все стало приходить в отдельно выделенные блокноты в Evernote. Нам понравилось, это оказалось очень удобным. Мы решили сделать публичный клиент, для всех. И назвали его Geeknote, думаю понятно почему.
Что Geeknote умеет?
Вся функциональность Geeknote описана в документации, с примерами использования каждой команды. Но я заострю внимание на особенных вещах, которые мне нравятся.
Редактирование в текстовом редакторе
Geeknote позволяет редактировать заметку в обычном консольном текстовом редакторе, который вам нравится — nano, mcedit и т.д.
1
|
geeknote
edit
--
note
"Shoplist 22.05.2012"
--
title
"Shoplist 23.05.2012"
--
content
"WRITE"
|
Передаем слово WRITE в качестве атрибута контента и открывается текстовый редактор по умолчанию. О редактировании заметок в документации. После редактирования заметки в текстовом редакторе она прогоняется через markdown обработчик и сохраняется в Evernote.
Создание заметки — напрямую и из файла
В Geeknote можно создавать заметку напрямую через консоль, или указать в качестве источника файл, который вы хотите загрузить. Файл должен быть текстовый, Geeknote пока работает только с текстовой информацией.
Пример создания просто заметки:
1
|
geeknote
create
--
title
"Shopping list 22.04.2012"
--
content
"Don`t forget to buy milk, turkey and chips."
--
notebook
"Family"
--
tags
"shop, holiday, important"
|
И из файла:
1
|
geeknote
create
--
title
"Web-site queues"
--
content
/
home
/
website
/
queues
.log
--
notebook
"Projects"
--
tags
"queues, logs"
|
Вывод --url-only
В Geeknote можно выполнять поиск с атрибутом --url-only, таким образом в результатах поиска вы увидите ссылки на веб-версию каждой заметки.
1
|
geeknote
find
--
search
"Shopping"
--
url
-
only
|
Интерактивный веб-терминал
Для демонсттрации работы Geeknote на сайте мы разработали интерактивный веб-терминал, который умеет работать с реальными аккаунтами Evernote и с Sandbox, если хотите просто потестировать. Авторизация происходит через oAUTH.
Терминал имеет весь функционал Geeknote, даже редактирование через edit. Отключены системные команды, такие как login и settings.
Технически веб-терминал Geeknote работает на web-sockets + Tornado в бекенде и временными сессиями.
Сохранение предыдущей сессии поиска
Если вы выполняли поиск, вы можете обращаться к найденным заметкам через их индекс в результатах. Geeknote запоминает последнюю сессию поиска в базе данных. Пример:
1
|
geeknote
find
"*"
|
1
2
3
4
5
6
7
8
9
10
11
|
Search
request
:
intitle
:
*
Total
found
:
9
1
:
02.07.2012
Go
shopping
2
:
02.07.2012
Shopping
list
22.04.2012
3
:
01.07.2012
webpp
.
ru
log
4
:
01.07.2012
The
title
5
:
23.06.2012
Shopping
list
25.04.2012
6
:
23.06.2012
Shopping
list
22.04.2012
7
:
20.06.2012
Martin_Dzhordzh
-
Igra_prestolov_Kniga
_I
8
:
20.06.2012
2012
-
06
-
15
-
are
-
you
-
a
-
problem
-
or
-
a
-
solution
9
:
20.06.2012
2012
-
06
-
13
-
pedagogical
-
poem
-
by
-
anton
-
makarenko
|
Синхронизация директорий
В пакете Geeknote мы добавили приложение gnsync, которое предназначено для синхронизации локальных директорий с файлами с блокнотами в Evernote.
Например есть у вас директория, куда каждый день складируются отчеты о состояниях, логи и т.д. Каждый день — новые файлы. Настраиваете по крону через gnsync синхронизировать эту директорию с нужным блокнотом в Evernote и все, все новые файлы будут добавляться в качестве новых заметок.
Пример команды gnsync:
1
|
gnsync
--
path
/
home
/
project
/
xmpp
/
logs
/
--
mask
"*.logs"
--
logpath
/
home
/
user
/
logs
/
xmpp2evernote
.log
--
notebook
"XMPP logs"
|
Автокомплит команд
Если вы будете работать с Geeknote вручную, то можете использовать двойное нажатие TAB для автокомплита команд и подсказок.
Проект сегодня
Проект участвует в конкурсе Evernote Devcup. Судя по голосам и лайкам, а так же фидбеку за неделю, как мы запустились — идея проекта востребована. Если вам понравился Geeknote, пожалуйста, поддержите нас голосом в конкурсе.
Наша страница на проекте. Будем благодарны.
Проект будет и дальше развиваться, так как мы используем его для своих нужд, а так же получили фидбек и это радует. Если у вас есть идеи о функциональности, прошу оставить их в комментариях или на странице Github проекта.
Об авторах
Меня зовут Родненко Виталий, мои коллеги Моисеенко Семен и Гуреев Иван, наша студия: webpp.ru.
Резюме
Geeknote — консольный клиент для Evernote. Позволяет работать с Evernote из командной строки, открывая тем самым возможности использования Evernote в автоматизации, системном администрировании, программировании bash скриптов и т.д.
- Адрес проекта: geeknote.me
- Документация: geeknote.me/documentation
- Интерактивный терминал: geeknote.me/try
- Проект на Github: github.com/VitaliyRodnenko/geeknote