Profile img

notJoon

@joonnot@hackers.pub · 70 following · 84 followers

Uncertified Quasi-pseudo dev

GitHub
@notJoon
Twitter
@JoonNot

업무 일지 CLI 명세 메모 (v0.0.1)

notJoon @joonnot@hackers.pub

해야 할 작업 목록과 업무 일지를 txt 파일로 관리하고 있다. 그런데 작성하다 보니 날짜를 잘못 입력하거나, 태그를 빠뜨리는 실수가 종종 생겨서 아예 CLI 도구로 만들기로 했다.

현재 사용 중인 문서 형식은 다음과 같다. 섹션은 크게 TODO, DONE, 메모(주로 #TIL, #메모로 표기)로 구성된다.

[빈 줄 (선택)]

YYYY-MM-DD
==========

[섹션들...]




YYYY-MM-DD
==========

[섹션들...]

기능 명세

1. 날짜 자동 생성

cron을 이용해 매일 자정(00:00)에 새 날짜 섹션을 자동 생성한다.

2026-01-21
==========

최신 날짜가 파일 상단에 위치하며, 이전 날짜와는 빈 줄로 구분한다.

2. TODO 추가 및 편집

todo 명령으로 오늘의 할 일을 추가하거나 편집한다.

$ tag todo
  • 오늘 날짜 섹션이 없으면 자동 생성
  • TODO 섹션이 없으면 에디터에서 새로 작성
  • TODO 섹션이 이미 있으면 해당 내용을 에디터로 불러와 편집
TODO
 - 첫 번째 할 일
 - 두 번째 할 일
  . 세부 항목 A
   - 더 깊은 항목
  . 세부 항목 B

3. 완료 기록

done 명령으로 완료한 작업을 기록한다. 명령 실행 시점의 시간이 자동으로 추가된다.

$ tag done

시간 형식은 [오전|오후 HH:MM]이며, 24시간제로 표기한다.

[오전 10:40]
 - 완료한 작업 내용

[오후 14:30]
 - 또 다른 완료 항목
  . 관련 세부 사항
  . 추가 메모

4. 메모 및 커스텀 태그

note 명령으로 메모를 추가한다. 태그를 인자로 전달하면 해당 태그로 섹션이 생성된다. [명세 업데이트 필요]

$ tag note           # "노트:" 헤더로 추가
$ tag note TIL       # "#TIL" 헤더로 추가
$ tag note memo      # "#memo" 헤더로 추가

(자주 사용하는 태그는 단축 명령을 지원하는 것도 좋아보임)

note 명령 이후에 오는 태그는 종류에 상관없이 # 접두사를 붙여 커스텀 태그로 활용할 수 있어야 한다.

$ tag note foo      # `#foo`
$ tag note idea     # `#idea`

5. 불렛 포인트 규칙

들여쓰기 깊이에 따라 -.가 교차한다. 스페이스 1칸이 1레벨이다.

깊이 들여쓰기 불렛 예시
1 1칸 - - 항목
2 2칸 . . 항목
3 3칸 - - 항목
4 4칸 . . 항목

에디터에서 아무 불렛(-, ., *)으로 작성해도 저장 시 규칙에 맞게 변환된다.

6. 환경 설정

환경 변수로 기본 동작을 변경할 수 있다.

변수 기본값 설명
TAG_FILE ~/todo.txt TODO 파일 경로
EDITOR vim 사용할 에디터
export TAG_FILE="$HOME/Documents/work.txt"
export EDITOR="nvim"

파일 예시



2026-01-20
==========

TODO
 - 첫 번째 할 일
 - 두 번째 할 일
  . 세부 항목 A
   - 더 깊은 항목

[오전 10:30]
 - 오전에 완료한 작업

[오후 15:00]
 - 오후에 완료한 작업
  . 관련 메모

#memo
기억해둘 내용 작성

#TIL
 - 오늘 배운 것
  . 세부 내용




2026-01-19
==========

TODO
 - 어제의 할 일 목록

[오전 11:00]
 - 어제 완료한 작업

노트:
자유 형식의 메모 내용
Read more →
2

Par 언어 테스트 프레임워크 구현 -- Iterative Box Choice 패턴 적용

notJoon @joonnot@hackers.pub

Par 언어에 테스트 프레임워크를 구현하면서 `box choice` 타입의 소비 동작으로 인해 하나의 테스트 함수에서 여러 assertion을 처리하는 데 어려움을 겪었습니다. 기존 `box choice` 타입은 값을 한 번 사용하면 소비되어 재사용이 불가능했기 때문입니다. 이를 해결하기 위해 `iterative box choice` 타입을 도입하여 반복적인 사용이 가능하도록 개선했습니다. `iterative box choice` 타입은 `iterative`, `box`, `choice` 타입들을 조합하여 여러 번 사용 가능하고, 메서드 선택을 제공하며, 외부 구현과 연동할 수 있는 장점을 제공합니다. 새로운 타입 구조에 맞춰 테스트 실행 함수를 재귀적으로 수정하여 메서드 체이닝 방식과 순차적 명령문 방식 모두를 지원할 수 있게 되었습니다. 이로써 Par 언어는 더욱 유연하고 강력한 테스트 환경을 제공할 수 있게 되었습니다.

Read more →
4

Rust 컴파일러 개발 관련 명령어 모음집

notJoon @joonnot@hackers.pub

이 글은 러스트 컴파일러에 기여할 때 자주 사용하는 명령어와 작업 흐름을 소개합니다. 기본적인 빌드 명령어부터 특정 컴포넌트만 빌드하는 방법, 테스트 실행 및 `--bless`, `--force-rerun` 플래그 활용법을 설명합니다. Stage 시스템(Stage 0, 1, 2)을 구분하여 각 Stage의 역할과 사용법을 안내하고, UI 테스트 작성 규칙과 에러 주석 문법을 상세히 다룹니다. 또한, 직접 컴파일러 실행, 디버그 어설션 활성화, 백트레이스 활성화 등 디버깅 명령어와 컴파일러 버그 수정 워크플로우를 예시와 함께 제시합니다. 마지막으로, 자주 발생하는 문제와 해결법, 빌드 시간 단축 방법, 디버깅용 환경 변수 설정까지 다루어 러스트 컴파일러 개발에 실질적인 도움을 제공합니다. 이 글을 통해 러스트 컴파일러 기여자들이 효율적으로 개발하고 디버깅하는 데 필요한 지식을 얻을 수 있습니다.

Read more →
11