Denote. Соглашение об именовании

2025-01-03 · 4 мин. для прочтения

Denote. Соглашение об именовании.

Содержание

1 Общая информация

  • Emacs. Пакет denote
  • Поддерживает любые текстовые форматы файлов.
  • Информация кодируется в названии файла.
  • Название файла следует строгим соглашениям.

2 Схема именования файлов

  • Каталог с файлами содержит просто список файлов, желательно избегать подкаталоги.

  • Шаблон имени файла:

    DATE==SIGNATURE--TITLE__KEYWORDS.EXTENSION
    
  • Поле DATE : дата в формате год-месяц-день, за которой следует с большой буквы T (для «времени») текущее время в обозначение час-минута-секунда.

    • Примерно так: 20220531T091625.
    • DATE служит уникальным идентификатором каждого файла.
  • Поле SIGNATURE : строка буквенно-цифровых символов.

    • Не имеют чётко определённой цели.
    • Определяется пользователем.
    • Варианты заполнения:
      • Разделение видео на части : part1 и part2.
      • Приоритет : a, b, c.
      • Для установления последовательные отношения между файлами (например, 1, 1a, 1b, 1b1, 1b2, …).
    • Подписи — это дополнительное расширение схемы именования файлов Denote.
    • Их можно добавлять во вновь создаваемые файлы по требованию с помощью команды denote-signature или изменив значение пользовательской опции denote-prompts.
  • Поле TITLE : заголовок заметки, предоставленный пользователем.

  • Поле KEYWORDS состоит из одной или нескольких записей, разделённых значком подчёркивание.

    • Каждое ключевое слово строка, предоставленная пользователем в соответствующем приглашении, которая в целом описывает содержание записи.
    • Каждое из ключевых слов представляет собой одно слово.
    • Пользователи, которым необходимо составить ключевое слово из нескольких слов, например как camelCase/CamelCase, рекомендуется использовать опцию пользователя denote-file-name-slug-functions.
  • EXTENSION : тип файла.

    • По умолчанию это .org (org-mode) хотя пользовательский вариант denote-file-type обеспечивает поддержку Markdown с вариантами YAML или TOML (.md) и простой текст (.txt).
  • Примеры:

    20220610T043241--initial-thoughts-on-the-zettelkasten-method__notetaking.org
    20220610T062201--define-custom-org-hyperlink-type__denote_emacs_package.md
    20220610T162327--on-hierarchy-and-taxis__notetaking_philosophy.txt
    
  • Различные разделители полей, а именно -- и __ дают эффективный способ поиска.

    • Запрос для _word всегда соответствует ключевому слову, а регулярное выражение в виде "\\([0-9T]+?\\)--\\(.*?\\)_" фиксирует дату в группе \1 и название в \2.
  • Можно использовать следующие перестановки частей имён файлов:

    DATE.EXT
    DATE--TITLE.EXT
    DATE__KEYWORDS.EXT
    DATE==SIGNATURE.EXT
    DATE==SIGNATURE--TITLE.EXT
    DATE==SIGNATURE--TITLE__KEYWORDS.EXT
    DATE==SIGNATURE__KEYWORDS.EXT
    
  • По умолчанию имена файлов имеют три поля и два набора разделителей между ними:

    DATE--TITLE__KEYWORDS.EXTENSION
    
  • Когда подпись присутствует:

    DATE==SIGNATURE--TITLE__KEYWORDS.EXTENSION
    

3 Изменение порядка компонентов имени файла

  • Стандартная схема именования файлов предписывает определённый порядок компонентов имени файла.
  • Также предоставляется опция пользователя denote-file-name-components-order, позволяющая пользователю изменить их порядок по своему усмотрению.
  • Значением этой пользовательской опции является список следующих символов:
    • identifier: комбинация даты и времени. Когда он первый в списке, то пишется без префикса. Когда он находится в другом месте имени файла, он пишется с префиксом @@ (например, @@20240519T073456).
    • signature: произвольная строка, которую можно использовать для определения файла каким-либо образом, в соответствии с методологией пользователя. Строка всегда имеет префикс ==.
    • title: произвольная строка, описывающая файл. Всегда с префиксом --.
    • keywords: серия из одного или нескольких слов. Несколько ключевых слов разделяются подчёркиванием. Компонент имени файла всегда имеет префикс __.
  • Все четыре символа должны появиться ровно один раз. Дубликаты игнорируются. Любой недостающий символ добавляется автоматически.
  • Примеры:
    (setq denote-file-name-components-order '(identifier signature title keywords))
    ;; => 20240519T07345==hello--this-is-the-title__denote_testing.org
    
    (setq denote-file-name-components-order '(signature identifier title keywords))
    ;; => ==hello@@20240519T07345--this-is-the-title__denote_testing.org
    
    (setq denote-file-name-components-order '(title signature identifier keywords))
    ;; => --this-is-the-title==hello@@20240519T07345__denote_testing.org
    
    (setq denote-file-name-components-order '(keywords title signature identifier))
    ;; => __denote_testing--this-is-the-title==hello@@20240519T07345.org
    
  • Выберите один вариант расположения элементов имени.

3.1 Очистка компонентов имени файла

  • Имена файлов могут содержать любые символы, разрешённые файловой системой.
  • Denote накладывает несколько дополнительных ограничений:
    • Элементы ==, __ и -- интерпретируются Denote и должны появляются только один раз.
    • В имени файла не допускается использование точки, за исключением расширения типа файла.
      • Denote распознает два расширения для зашифрованных файлов, например .txt.gpg.
  • По умолчанию Denote применяет правила к именам файлов denote-file-name-slug-functions.
  • Эти правила применяются к имена файлов по умолчанию:
    • Удаляются незаконные символы.
    • Запись названия файла осуществляется через дефис.
    • Из ключевых слов удаляются пробелы и другие разделители.
    • Все компоненты имени файла записываются в нижнем регистре.

ы

4 Поддержка цепочек заметок

  • Denote может поддерживать концепцию Folgezettel (см. Нумерация Folgezettel).
  • Поддержка осуществляется расширением denote-sequence.el.
  • Используется необязательная компонента имени файла SIGNATURE.
  • Специализированный вариант использования SIGNATURE — определить иерархические отношения между файлами.
  • Предлагается разделать элементы знаком равно: =.
  • Например, примечание с SIGNATURE 1=1 является первым дочерним примечанием к 1 и сестринским примечаним к 1=2.
  • Пользовательская опция denote-sequence-scheme позволяет выбрать либо числовую (numeric) схему вида 1=1=2 или буквенно-цифровую (alphanumeric) схему вида 1a2.

4.1 Числовая схема секвенирования

  • Числовая последовательность состоит только из чисел.
  • Поля разделены знаком равно.
  • Таким образом, последовательность 1=1=2 состоит из трёх уровней глубины.
  • Для более глубоких последовательностей числовая схема станет длиннее.
  • Плюс состоит в том, что можно использовать большие числа, такие как 1=100=2=50.

4.2 Буквенно-цифровая схема секвенирования

  • Буквенно-цифровая последовательность объединяет цифры и буквы, которые чередуются.
  • Например, последовательность 1a2 имеет три уровня глубины.
  • Эта схема компактнее.
  • Может труднее восприниматься, например 1zzzv2zx соответствует числовой схеме 1=100=2=50 (число 26 - z, 27 - это za, 52 zz и так далее).
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.