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

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

2025-01-03 · 7 мин. для прочтения
blog computer-science

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 и так далее).

5 Концепции

5.1 Принципы именования Denote

  • В основе Denote лежит философия, при которой имя файла становится самодостаточным источником информации.
  • Это достигается за счёт нескольких ключевых принципов.
ПринципРеализация в имени файлаПояснение
Предсказуемость и уникальностьДАТАВременная метка в формате ISO 8601 служит уникальным и неизменным идентификатором для каждой заметки или файла.
Описательность и содержание--ЗАГОЛОВОКЧеловекочитаемый заголовок, переведённый в нижний регистр с дефисами (kebab-case), кратко описывает суть содержимого.
Классификация и тегирование__КЛЮЧЕВЫЕ_СЛОВАОдна или несколько тематических меток (ключевых слов), разделённых подчёркиванием, для категоризации. Тег может состоять из нескольких слов через дефис.
Семантическая последовательность==ПОДПИСЬПроизвольная буквенно-цифровая строка для создания пользовательских последовательностей или иерархий между файлами (например, 1a, 1b).
Явное разделение полей--, __, ==, .Строгие разделители делают структуру имени машиночитаемой и позволяют эффективно искать файлы, используя шаблоны.
Гибкость и независимостьПоддержка любых расширенийСхема не привязана к типам файлов или приложениям.

5.2 Концептуальные вариации применения

  • Идеология Denote совместима с разными методологиями.
КонцепцияКак применяется в Denote
Плоское хранение (Flat-file)Все файлы можно хранить в одной папке, а для навигации полагаться на уникальные имена и ключевые слова. Это основной и рекомендуемый подход.
Zettelkasten и FolgezettelПоле SIGNATURE подходит для создания сложных цепочек заметок (например, 20231001==1a, 20231002==1a1, 20231003==1a2 ).
Проектное управлениеКлючевые слова можно использовать как теги проектов (например, __project_alpha ), а в заголовке указывать конкретную задачу.
Мультимедийный архивСхему можно применять не только к текстовым заметкам, но и к любым другим файлам. Имя файла становится универсальным описательным якорем.

5.3 Что важно сохранять при внесении изменений

  • При создании вариаций стоит придерживаться двух ключевых принципов Denote, которые обеспечивают её эффективность:

    • Уникальность: идентификатор на основе timestamp (ДАТА) должен оставаться неизменным якорем файла.
    • Машиночитаемость: чёткие разделители ( --, __, == ) нужно сохранять, чтобы система и скрипты могли легко парсить имена.
  • Denote есть каркас, а не жёсткий стандарт.

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

6 Гибридная структура: Denote + Johnny Decimal + гибкая дата

6.1 Основная идея

  • Использовать каталоги для грубой семантической и хронологической группировки.
  • Полное имя файла Denote — универсальный, уникальный идентификатор и описание.
  • Идея категорий взята из Johnny Decimal (Система именования каталогов Johnny Decimal)

6.2 Преимущества

  • Плоская и гибкая категоризация: файл может принадлежать к нескольким равнозначным категориям без жёсткой иерархии.
  • Машиночитаемость: знак = есть уникальный разделитель, который легко выделить скриптом или настроить поиск.
  • Визуальная ясность: категории чётко сгруппированы в начале имени между == и --

6.3 Варианты меток даты для поля DATE

  • Вы можете выбирать формат даты в зависимости от смысла содержимого, сохраняя сортировку.
Формат даты в имени файлаКогда использоватьПример имени файла
2026 (год)Для документов, тематика которых актуальна целый год: годовые отчёты, планы, резюме.2026--годовой-отчет__финансы.pdf
2026-1 (полугодие)Для целей, планов или результатов, сгруппированных по полугодиям.2026-1--планы-на-семестр__стратегия.md
2026-02-06 (конкретная дата)Для заметок, событий и документов, привязанных к конкретному дню (встречи, дневниковые записи).2026-02-06--встреча-с-командой__проект_митинг.org

6.4 Поле SIGNATURE

  • В поле SIGNATURE (после == ) указывается набор равноправных категорий, разделённых знаком =.
  • Это создаёт плоский, но структурированный список категорий прямо в имени файла.
  • Общий формат: ДАТА==КАТЕГОРИЯ1=КАТЕГОРИЯ2=КАТЕГОРИЯ3--ЗАГОЛОВОК__КЛЮЧЕВЫЕ_СЛОВА
  • Примеры:
    • 2026-02-10==проект=вебсайт=дизайн--обзор-макетов__ui_клиент_встреча.fig
    • 2026-1==сфера=здоровье=питание--полезные-рецепты__еда_идеи.md
    • 2025-12-24==архив=путешествия=япония=фото--поездка-в-токио__отпуск.jpg
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.