...

воскресенье, 2 февраля 2014 г.

Dic: быстрая память

image

Как часто вы не могли вспомнить ту или иную команду в Git, Vim, Linux, C++? Сколько времени вы тратите на поиск ответа в man или в интернете? Пробовали ли вы когда-нибудь писать свои собственные справочники и чем это заканчивалось? Хотели бы вы немного помочь вашей памяти?

Разрешите вам помочь. Под катом небольшая история эволюции моих справочников и утилита Dic.


Вспомнить все




После прочтения своей первой IT книги, я взял за правило писать подробные конспекты всего того, что узнал «понятным языком», дабы в будущем можно было вернуться к конспектам и напомнить себе забытое. Вскоре заметил, что чаще всего забываются мелочи, такие как названия нужных утилит или команд, а перечитывать конспект слишком долго. Тогда я решил действовать иначе и писать небольшие справочники, содержащие уже не основные мысли прочитанной книги, а описание основных команд и примеры их использования. Такой подход оказался намного эффективнее предыдущего, так как мое первое предположение оказалось ошибочным: если вы прочитали книгу, то ваш мозг без проблем вспомнит ее содержание, но ему будет сложно вспомнить мелкие детали, именно их и нужно конспектировать.

Сначала все шло хорошо, если я не мог чего-то вспомнить, то обращался к справочникам и (благодаря иерархической структуре) быстро находил нужную информацию, но иногда я охотнее откладывал решение задачи «на потом» потому, что мне было просто лень открывать нужный справочник и искать в нем (хоть и быстро) информацию. Сначала я не обращал на это внимание, сводя все к собственной лени, но с того самого времени, как я перешел на Xmonad, понял — дело вовсе не во мне. Проблема в том, что для нахождения очень небольшой порции информации я заставляю себя совершать слишком сложные действия: переходить в каталог со словарем, открывать словарь нужным редактором, используя мышь находить нужную информацию — все это слишком сложно для решения крошечной задачи, от того и лень ее решать. Для меня, как программиста любящего «велотренажеры» в программировании, это был вызов невиданной дерзости и я нашел решение!


Dic




За час я набросал «на коленке» небольшой Bash-скрипт, который предоставлял мне всю необходимую информацию оперируя короткими запросами. Весь алгоритм работы скрипта можно описать одним предложением: зная имя словаря и раздела, скрипт должен возвращать содержимое файла, описывающего данный раздел.На практике это выглядит следующим образом. Предположим мне нужно узнать, что делает команда git init, я набираю в терминале:

dic git init




и получаю краткое (в одно предложение) описание команды:

ЛОКАЛЬНЫЙ РЕПОЗИТОРИЙ
git init - создание репозитория в текущем каталоге

КЛОН
git clone <url> [<dir>] - клонирование репозитория по указанному адресу в текущий каталог (или в каталог dir)
Используйте dic имяСловаря имяРаздела


«Как быть, если я не помню имя команды, но знаю что она делает?» — спросите вы. Выход столь же прост:



dic git | grep ''инициализация нового репозитория''




на экране появится запись:

init — инициализация нового репозитория (init,clone)




говоря нам что нужно читать раздел dic git init.

Прирост в скорости поиска информации был очевиден. Если раньше мне нужно было минимум минута-две для поиска в справочниках или в интернете, то сейчас хватает десяти секунд (я даже засекал!).


Как это работает




Конечно, предлагаемое мной решение подойдет не всем. Во-первых — вам нужен Bash, во-вторых — под рукой всегда должен быть терминал и вы должны уметь быстро с ним работать, в-третьих — вы должны уметь правильно составлять справочники (т.к. Dic этого делать не умеет). Если вас это не пугает, то давайте «сядем за штурвал» и посмотрим на «приборную панель»:

image

Вот, собственно, и все, что нужно Dic для работы со словарем, все максимально просто.

Теперь пару слов о доступных командах:



  1. dic — инициализация Dic, если это еще не было сделано и вывод списка доступных словарей, если инициализация уже проводилась;

  2. dic имяСловаря — вывод списка разделов, относящихся к данному словарю;

  3. dic имяСловаря имяРаздела — вывод содержимого раздела;

  4. dic имяСловаря имяРаздела команда — вывод описания команды;

  5. dic -h — помощь по Dic;

  6. dic -u — update словарей из Github.com


Всем миром




Иметь под рукой удобный словарь хорошо, а если он будет заполняться сразу несколькими людьми — еще лучше! Именно поэтому Dic может использовать репозиторий на Github.com для обновления своих словарей. Конечно вы можете обойтись и без git, просто скопировав нужные вам словари в каталог .git/library, и даже создавать собственные словари, но стала бы Wikipedia.org 6-м по посещаемости сайтом в Интернете, если бы не командная работа всех пользователей?!

Если у вас еще нет Git, обязательно установите его. После первого запуска Dic, он сам создаст каталог .dic/library у вас в домашнем каталоге и скачает в него все доступные на сегодняшний день справочники. Если же вы хорошо знакомы с Git, то сможете вести собственную ветку справочников, которая, возможно, будет добавлена в основную и вашими справочниками смогут пользоваться другие. Если вы почувствовали, что ваши справочники устарели, просто выполните dic -u и он сам обновит их из репозитория.

С чего начать





  1. Установите Git (опционально).

  2. В конце поста вы найдете ссылку на скрипт Dic. Скачайте его и положите в удобное место. Лично я создал символическую ссылку d на Dic, чтобы еще быстрее обращаться к справочникам.

  3. Выполните скрипт dic.sh (для этого не нужны права root), он создаст каталог .dic/library/ в вашем домашнем каталоге и попытается создать в нем Git репозиторий используя git clone.

  4. Если вы не хотите использовать Git, так же внизу поста вы найдете ссылку на репозиторий Github.com. Скачайте оттуда интересующие вас справочники и поместите их в каталог .dic/library/ и Dic готов к работе.


Создавайте свои справочники и добавляйте команды в существующие по мере необходимости. Старайтесь писать максимально коротко и информативно, чтобы тратить меньше времени на поиск информации, но не забывайте, что вашими справочниками возможно будут пользоваться другие люди.


Полезные ссылки





  1. Скрипт Dic

  2. Репозиторий справочников на Github.com


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий