Publicat: 18 iulie 2020 la 11:05

urmărirea

Folosesc Emacs cu modul org pentru a-mi urmări dieta din 2012. Am avut câteva pauze pe parcurs, configurarea generală a rămas aceeași.

Folosesc acest sistem pentru a urmări cât cântăresc, precum și câte calorii consum într-o singură zi. Există o mulțime de aplicații și servicii online care oferă această funcționalitate, dar prefer să dețin datele mele într-un format deschis pe care îl pot folosi în altă parte.

Văzând că lucrez de acasă și am întotdeauna deschisă o sesiune Emacs, a avut sens să încerc să folosesc Emacs într-un fel.

Configurarea mea utilizează următoarele funcții Emacs și modul org:

  • Titluri individuale în mod org pentru fiecare zi
  • proprietăți în modul org pentru stocarea greutății mele
  • tabele în modul org și formule de foi de calcul
  • org-capture pentru cântărire
  • Unele funcții elisp pentru adăugarea intrărilor individuale de alimente

Să aruncăm o privire mai atentă asupra modului în care toate acestea se potrivesc.

Configurarea fișierului dietetic

Fișierul meu de dietă arată astfel (cu titlurile restrânse):

Am încercat să păstrez formatul de fișier cât mai simplu posibil. Fiecare zi are propria intrare sub antetul principal „Jurnalele zilnice”. Antetul principal „Jurnale zilnice” este utilizat de org-capture pentru a găsi unde să plasați articole noi.

Proprietatea de nivel superior SEQ_TODO este utilizată pentru a seta starea „terminat” pentru fiecare titlu. Folosesc trei tipuri diferite de titlu:

CAL-IN De zile în care nu am introdus toate informațiile despre dietă. De obicei, există doar una dintre acestea deschise la un moment dat. CAL-OUT Pentru zilele terminate în care toate datele sunt definitive. CAL-CANCEL Pentru zilele în care urmăresc informațiile despre greutate, dar nu despre calorii. O folosesc pentru duminici, zile în care ies să mănânc sau când am planificate evenimente sociale.

Intrări zilnice

O intrare zilnică arată cam așa:

Este un tabel destul de simplu, care folosește o magie în modul org pentru calcularea totalelor. Coloana „Calorii” este de obicei „calorii pe gram”, dar pentru unele articole este „calorii pe articol”. De asemenea, coloana cantității se referă fie la greutatea în grame, fie la numărul de articole consumate.

Partea # + TBFLM: sub tabel este o formulă de foaie de calcul în modul org. Folosește două formule:

$ 5 = $ 3 * $ 4 Setează coloana 5 (coloana „Totaluri”) la Calorii x Cantitate. indexurile coloanelor în modul org încep de la 1 mai degrabă decât la 0. @> $ 5 = vsum (@ 2 $ 5 . @ - I $ 5)

Calculează cantitatea totală de calorii consumate în timpul zilei. Folosește referințe relative, astfel încât să funcționeze indiferent de câte linii

Am folosit anterior $ LR5 în loc de @> $ 5 pentru a face referire la rândul de subsol, dar acest lucru nu a mai funcționat după actualizarea la modul org 9.4.

Secțiunea Foaie de calcul a manualului în modul org face detalii cu privire la formule. Mi-a luat ceva timp să mă prind, dar este un sistem cu adevărat puternic.

Cântăriri

Folosesc un șablon org-capture pentru greutățile mele. Mă cântăresc în fiecare dimineață, în funcție de programul meu.

org-capture este legat de C-c o r, iar apoi șablonul meu de cântărire este legat de w. Așadar, în fiecare zi alerg C-c o r w, îmi introduc greutatea, apoi folosesc C-c C-c pentru a o salva în fișierul de dietă. Si asta e.

Șablonul meu de captură este mai jos:

Adăugarea de noi intrări alimentare

Am câteva funcții elisp pe care le folosesc pentru a adăuga date noi. Funcția principală este org-diet-copy, care este legată de C-c C-C .

org-diet-copy este folosit pe un rând al unei alte mese. Copiază numele alimentelor, cantitatea de calorii și cantitatea pe masa de sus și înlocuiește marcajul de timp cu data și ora curente.

Procesul de adăugare a unei noi intrări este de obicei astfel:

  • Apăsați C-s pentru a căuta mâncarea pe care vreau să o adaug. Dacă aș vrea să adaug o nouă intrare pentru „cartofi prăjiți”, aș face probabil ceva de genul „C-s fren” pentru a găsi prima intrare „cartofi prăjiți”.
  • Apăsați C-c C-C pentru a copia intrarea în ziua mea activă.
  • Înlocuiți cantitatea cu orice cantitate am mâncat. Încerc să păstrez aceeași dimensiune a porției pentru micul dejun și gustări, deci acest lucru nu este întotdeauna necesar.
  • Rulați M-x org-table-recalculate pentru a actualiza tabelul.

Este un sistem simplu, dar funcționează suficient de bine. În cele din urmă, pot adăuga o funcție care solicită un aliment și o cantitate și apoi completează automat cantitatea de calorii.

Toate funcțiile pe care le folosesc sunt mai jos:

În partea a doua voi acoperi sistemul pe care îl folosesc pentru a extrage date din fișierul în mod org. Nu este frumos.