Как поддерживать базу знаний на основе emacs? - PullRequest
30 голосов
/ 06 января 2010

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

Это отлично подходит для управления несколько «действенными» элементами, но я продолжаю добавлять вещи более общего характера, которые мне не понадобятся изо дня в день (инструкции, чтение заметок и т. Д.), так что это становится медленным и трудным для управления.

Материал, которым я занимаюсь, не соответствует парадигмам / projects / tasks / sub-tasks, он больше похож на маленькие слепки знаний по выбранным темам, которые по своей природе более сложны для классификации и управления.

Мне было интересно, какую структуру можно использовать для обработки такого рода информации (классификация и поиск), и есть ли другие способы, которые могли бы помочь с работой?


Полагаю, на этот вопрос нет заранее подготовленного ответа, поскольку у всех могут быть разные потребности.
Noufal дал хорошие концептуальные советы , о которых я буду помнить, но в целом принятый ответ предоставил более прагматичные взгляды на этот вопрос, связанный ресурс был ОТЛИЧНО прочитан.

Ответы [ 8 ]

27 голосов
/ 07 января 2010

Я думаю, что этот превосходный документ о том, как использовать орг-режим в его полном объеме, будет очень полезен для вас: «Режим орг .: организуйте свою жизнь в виде простого текста» . Это длительное чтение, но, поверьте мне, оно того стоит.

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

(setq org-default-notes-file (concat org-directory "/remember-notes.org"))
(setq org-remember-templates
  `(("Todo"    ?t "* TODO %?\n  %i\n" ,(concat org-directory "/remember-notes.org") bottom)
    ("Misc"    ?m "* %?\n  %i\n"      ,(concat org-directory "/Notes.org")   "Misc")
    ("iNfo"    ?n "* %?\n  %i\n"      ,(concat org-directory "/Notes.org")   "Information")
    ("Idea"    ?i "* %?\n  %i\n"      ,(concat org-directory "/Notes.org")   "Ideas")
    ("Journal" ?j "* %T %?\n\n  %i\n" ,(concat org-directory "/journal.org") bottom)
    ("Blog"    ?b "* %T %? :BLOG:\n\n  %i\n" ,(concat org-directory "/journal.org") bottom)
    ))

Как видите, различные заметки и другая информация находятся в файле notes.org под заголовками Разное и Информация. Если записка, которую я делаю, не попадает ни в одну из категорий, определенных выше, она сохраняется в файле по умолчанию (запомнить-notes.org), и я всегда могу переместить ее в другое место в удобное время. Это делает мои заметки, записывают случайные идеи и подобные вещи чрезвычайно простыми, не отвлекая внимание от работы, которой я сейчас занимаюсь.

8 голосов
/ 06 января 2010

Я лично веду список каталогов проектов с несколько похожей структурой. У каждого есть tasklist.org, подкаталог отслеживания (где я делаю оценки проекта и отслеживаю время, и всегда веду дневник, который является основным для проекта - он будет иметь ссылки на другие файлы для проекта) Подкаталог документов, который обычно состоит из материалов, которые я собираюсь опубликовать (документы для проекта, предложения и т. д.). Я передаю свои файлы повестки дня на tasklist.org в каждом из подкаталогов, чтобы моя повестка дня работала нормально.


Я думаю, что организация данных немного изменится в вашем случае (возможно, такие темы, как "функциональное программирование" и т. Д.). Я скептически отношусь к тому, насколько сильно поможет иерархическая структура, поскольку это ограничит вас одним взглядом на вещи (теги и папки снова). Вот некоторые вещи, которые приходят на ум.

  1. Сохраните «основной» файл организации, содержащий ссылки на все «интересные» части верхнего уровня другого контента (аналогично дневнику, о котором я упоминал выше).
  2. Пометьте все свои материалы правильно (через некоторое время вы определитесь с набором полезных тегов), а затем воспользуйтесь функцией поиска по тегам для быстрого поиска файлов. Это предполагает, что все файлы находятся в вашем agenda-files.
  3. Наконец, если ваши данные слишком экзотичны для размещения в структуре, вы можете рассмотреть возможность использования полнотекстового индексатора (например, xapian) и интегрировать его в Emacs. Было некоторое обсуждение этого по поводу здесь .
7 голосов
/ 12 января 2010

[org-mode] отлично подходит для управления «действенными» элементами, но я продолжаю добавлять вещи более общего характера, которые мне не понадобятся изо дня в день (инструкции, чтение заметки и т. д.), поэтому становится все медленнее и сложнее в управлении.

Я последователь Дэвида Аллена и его методологии Getting Things Done . Я использую Emacs для трех списков, которые он рекомендует:

  • Следующие действия

  • Ресурсы проекта

  • Список Someday / Maybe

Материал, которым я занимаюсь, не соответствует парадигмам / projects / tasks / sub-tasks, он больше похож на маленькие слепки знаний по выбранным темам, которые по своей природе более сложны для классификации и управления.

Мне было интересно, какую структуру можно использовать для обработки такого рода информации (классификация и поиск), и есть ли другие способы, которые могли бы помочь с работой?

За такую ​​информацию я перенесся из emacs. Вместо этого я сохраняю каталог ~/etc/howto, и в этот каталог я помещаю файлы, которые содержат «маленькие слепки знаний по выбранным темам», где ключевым критерием является то, что информация имеет долгосрочное значение .

Я мог бы искать в этом каталоге с помощью Emacs, но мой Emacs Lisp не такой горячий, поэтому я вместо этого написал сценарий оболочки howto (некоторые проверки ошибок для ясности опущены):

case $# in
  1) ;;
  *) echo "Usage: $0 <topic>" 1>&2; exit 2 ;;
esac

topic="$1"

# Note the ordering: first exact matches, then beginning matches, then any matches

set xxx `find $HOME/etc/howto/. -name "$topic"     -not -type d -print` \
        `find $HOME/etc/howto/. -name "${topic}?*" -not -type d -not -name '*~' -print` \
        `find $HOME/etc/howto/. -name "?*$topic*"  -not -type d -not -name '*~' -print`
shift

case $# in
  0) echo "No file found matching *$topic*" 1>&2 ; exit 1 ;;
  *) for i
     do
       less "$i"
     done
     ;;
esac

Примеры включают в себя:

  • howto football вызывает три самородка в следующем порядке:

    • Инструкции, которые нужно дать жене для записи футбольного матча на компьютер

    • Инструкции для меня, что именно брать и как одеваться, когда у меня есть билеты на футбольный матч

    • Инструкции по перекодированию футбольной игры, чтобы ее можно было передавать по сети и просматривать вдали от дома

  • howto filesystem вызывает инструкции по копированию файловой системы

  • howto batteries выводит список рекомендуемых аккумуляторных батарей

Одна из причин, по которой я не использую Emacs, заключается в том, что мой настоящий скрипт немного сложнее, чем вы видите выше: он также обрабатывает файлы PDF и djvu, поэтому, например, howto razor вызывает документ руководства djvu, который пришел с моей электрической бритвой.

У меня более 500 элементов в главном каталоге или в подкаталогах, и даже в таких масштабах система работает довольно хорошо для меня. Я надеюсь, вы тоже найдете это полезным.

5 голосов
/ 11 января 2010

В прошлом я пробовал несколько способов управления базой знаний. У меня есть куча «самородков знаний» (кстати, спасибо, мне очень нравится этот термин) на самые разные темы: от настройки Apache tomcat ssl cert до контрольных списков для составления ежемесячного семейного бюджета, до сохранения список весов и повторений, выполненных на тренировках.

Я пытался хранить их в блоге WordPress, в личной вики, используя ручку и бумагу и т. Д.

В конце концов, emacs и org-mode - явный победитель для меня. Мне нравится иметь возможность начинать с простого и создавать более сложные функции по мере необходимости. Я использовал много советов, описанных Саша Чуа .

В моем случае я всегда получаю кучу заметок (более формальных и организованных), смешанных с элементами действий (менее формальными). В общем, я веду один основной список «действий», а затем создаю отдельный файл для заметок по каждой теме. Пока что grep помог мне быстро найти файл с заметками. Я часто создаю закладку emacs C-x r m, чтобы быстро переходить и к файлам заметок.

Простые блоги, CMS и вики (такие как Drupal и Wordpress) хороши в классификации и поиске. Может быть, вы можете экспортировать файлы org в html и опубликовать их в блоге, cms или вики? Возможно, не так уж сложно подключиться к тегам blog / wiki / cms.

4 голосов
/ 14 января 2010

На работе мы используем для этого вики (на самом деле, несколько - глобальную вики плюс вики на проект). Он идеально подходит для неиерархических данных, но также может использоваться для иерархических данных. Это форматируемый, гипертекстовый, доступный для поиска, доступный для поиска, доступный для совместного использования, но также управляемый, он поддерживает историю и другие полезные вещи.

Лично я использовал для этого также вики. Но сейчас я просто забываю вещи. Гораздо проще.

3 голосов
/ 19 декабря 2012

Я держу подсказки в .rst (reStructuredText) файлах в одном каталоге. Каждый файл имеет свою тему.

Для поиска я использую M-x встречаются , или M-x lgrep , или M-x ack .

Пример веб-хостинга: http://tips.defun.work/frame.html, и эти страницы легко превратить в блог-решение.

Исходные коды со скриптом сборки: http://hg.defun.work/tips/

Основное преимущество reStructuredText формат:

  • Поддержка оглавления.
  • include синтаксис.
  • Возможность создания полнотекстового автономного поискового индекса на основе JavaScript на сайте HTML с оглавлением, индексом, ссылкой по Sphinx !!
  • Помните Уценка Отстой в расширяемости, RST имеет регулярный синтаксис для маркировки данных вашими токенами и включает любой простой текстовый формат, как встроенный в ваш документ. Думает о графиках с dot, подсветке синтаксиса prog lang и т. Д.
3 голосов
/ 13 января 2010

Вы можете ускорить режим орг, сохранив свои заметки в отдельном файле (или по одному для каждой широкой темы), который не входит в обычный список файлов повестки дня. Настройте org-agenda-files, чтобы увидеть список.

Используйте org-remember для быстрого ввода заметок без прерывания потока. Либо пометьте их в то время, либо сохраните их где-нибудь для последующей перезаписи. Вы можете использовать тег в шаблоне запоминания (настройка org-remember-templates), чтобы пометить заметки для повторного добавления, и использовать пользовательский поиск по повестке дня (org-agenda-custom-commands), чтобы перечислить их.

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

Я храню папку с заметками, и ваш вопрос только что вдохновил меня вернуться и пометить их все. Работает угощение!

2 голосов
/ 03 ноября 2011
  • Материал, которым я занимаюсь, не соответствует парадигмам / projects / tasks / sub-tasks, он больше похож на маленькие слепки знаний по выбранным темам, которые по своей природе более сложны для классификации и управления.

Используйте закладки и Закладка + . Вы можете создавать закладки для наборов файлов и каталогов, в дополнение к отдельным файлам, и вы можете тег закладки или файлы, la восхитительно , для организации и поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...