pn_net

Опубліковано: 18 липня 2020 р. О 11:05

emacs

Я використовую Emacs в організаційному режимі для відстеження дієти з 2012 року. У мене були перерви на шляху, загальна настройка залишилася незмінною.

Я використовую цю систему, щоб відстежувати, скільки я важу, а також скільки калорій я споживаю за один день. Існує безліч програм та онлайн-сервісів, які надають цю функцію, але я вважаю за краще володіти своїми даними у відкритому форматі, який я можу використовувати деінде.

Бачачи, як я працюю вдома і завжди маю відкритий сеанс Emacs, мені було сенсом спробувати якось використовувати Emacs.

Моє налаштування використовує такі функції Emacs та організаційний режим:

  • Індивідуальні заголовки в організаційному режимі на кожен день
  • властивості режиму організації для зберігання моєї ваги
  • таблиці в органічному режимі та формули електронних таблиць
  • орг-захоплення для зважування
  • Деякі функції elisp для додавання окремих записів про їжу

Давайте детальніше розглянемо, як все це поєднується.

Налаштування дієтичного файлу

Файл моєї дієти виглядає так (із загорнутими заголовками):

Я намагався максимально спростити формат файлу. Кожен день має свій власний запис під головним заголовком "Щоденні журнали". Основний заголовок "Щоденні журнали" використовується органом-захопленням, щоб знайти, де розмістити нові елементи.

Властивість SEQ_TODO верхнього рівня використовується для встановлення стану "готово" для кожного заголовка. Я використовую три різні типи заголовків:

CAL-IN протягом днів, коли я не вводив всю інформацію про свій раціон. Зазвичай там відкрито лише одне з них. CAL-OUT Для закінчених днів, коли всі дані остаточні. CAL-CANCEL На дні, коли я відстежую вагу, але не інформацію про калорії. Я використовую це у неділю, дні, коли я виходжу їсти, або коли у мене заплановані світські заходи.

Щоденні записи

Щоденний запис виглядає приблизно так:

Це досить проста таблиця, яка використовує деяку магію в організаційному режимі для обчислення підсумків. У стовпці "Калорії" зазвичай вказується "калорії на грам", але для деяких предметів це "калорії на елемент". Подібним чином стовпець кількості відноситься до ваги в грамах або кількості споживаних предметів.

# + TBFLM: частина під таблицею є формулою електронної таблиці в режимі організації. Він використовує дві формули:

$ 5 = $ 3 * $ 4 Встановлює для стовпця 5 (стовпець "Підсумки") Калорії x Кількість. індекси стовпців в організаційному режимі починаються з 1, а не від 0. @> $ 5 = vsum (@ 2 $ 5 . @ - I $ 5)

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

Раніше я використовував $ LR5 замість @> $ 5 для посилання на рядок нижнього колонтитула, але це більше не спрацювало після оновлення до організаційного режиму 9.4.

Розділ електронних таблиць посібника з організаційного режиму детально описує формули. Мені знадобився час, щоб звикнути, але це дійсно потужна система.

Зважування

Я використовую шаблон організації-захоплення для своїх зважувань. Я зважуюся щоранку, залежно від мого розкладу.

org-capture прив’язано до C-c o r, а потім мій шаблон зважування прив’язаний до w. Тому щодня я запускаю C-c o r w, ввожу свою вагу, а потім використовую C-c C-c, щоб зберегти його у своєму файлі дієти. І це все.

Мій шаблон захоплення знаходиться нижче:

Додавання нових записів про їжу

У мене є кілька функцій elisp, які я використовую для додавання нових даних. Основною функцією є організаційна дієта-копія, яка пов'язана з C-c C-C .

org-diet-copy використовується в рядку іншої таблиці. Він копіює назву їжі, кількість калорій та кількість у верхню таблицю та замінює позначку часу поточною датою та часом.

Процес додавання нового запису зазвичай проходить так:

  • Натисніть C-s, щоб знайти їжу, яку я хочу додати. Якби я хотів додати новий запис для "картоплі фрі", я б, мабуть, зробив щось на зразок "C-s fren", щоб знайти перший запис "картопля фрі".
  • Натисніть C-c C-C, щоб скопіювати запис до мого активного дня.
  • Замініть кількість будь-якою кількістю, яку я з’їв. Я намагаюся зберігати однаковий розмір порції для сніданку та перекусів, тому це не завжди потрібно.
  • Запустіть M-x org-table-перерахунок для оновлення таблиці.

Це проста система, але вона працює досить добре. Зрештою я можу додати функцію, яка підказує про їжу та кількість, а потім автоматично заповнює кількість калорій.

Усі функції, якими я користуюся, наведені нижче:

У другій частині я розгляну систему, яку використовую для отримання даних із файлу організаційного режиму. Це не красиво.