Как поддерживать базу знаний на основе emacs?

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

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

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

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


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

8 ответов


Я думаю, что этот отличный документ о том, как использовать org-mode в полной мере, будет Вам очень полезен: "Org Mode: Организуйте Свою Жизнь В Обычном Тексте". Это длинное чтение, но поверьте мне, оно того стоит.

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

(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 файл под заголовками разное и информация. Если заметка, которую я делаю, не попадает ни в одну из категорий, определенных выше, она попадает в файл по умолчанию (remember-notes.org) и я всегда могу перефилировать его в другое место в удобное время. Это делает мои записи случайными. идеи, и такие вещи чрезвычайно просты, не отвлекая внимания от работы, которую я сейчас делаю.


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

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

  • далее Действия

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

  • список когда-нибудь / может быть

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

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

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

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

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

topic=""

# 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 элементов в главном каталоге или в подкаталогах, и даже в этом масштабе система работает довольно хорошо для меня. Надеюсь, вам это тоже поможет.


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


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

  1. сохранить файл "master" org, который имеет ссылки на все "интересные" части верхнего уровня другое содержание (аналогично дневнику, о котором я упоминал выше).
  2. правильно пометьте весь свой материал (через некоторое время вы остановитесь на наборе полезных тегов), а затем используйте функцию поиска тегов для быстрого поиска файлов. Это предполагает, что все файлы находятся в папке agenda-files хотя.
  3. наконец, если ваши данные слишком экзотичны, чтобы поместить их в структуру, вы можете рассмотреть возможность использования полнотекстового индексатора (например, xapian) и интегрировать его в Emacs. Было некоторое обсуждение это здесь.

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

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

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

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

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


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

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


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

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

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

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


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

для поиска я использую M-x происходят или M-x lgrep или M-x ack.

веб-например: http://tips.сайт defun.работа / рамка.HTML-код и легко превратить эти страницы в блог, как решение.

исходные источники со скриптом сборки:http://hg.сайт defun.работа/советы/

основное преимущество из reStructuredText:

  • поддержка TOC.
  • include синтаксис.
  • возможность создания JavaScript на основе полнотекстового автономного индекса поиска в HTML-сайте с TOC, index, reference by Сфинкс!!
  • помните уценка suck at extensibility, RST имеют регулярный синтаксис для маркировки данных вашими токенами и включают любой простой текстовый формат как встроенный в ваш документ. Думает о графиках с dot, подсветка синтаксиса prog lang и т. д.

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

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