Coder Social home page Coder Social logo

til's Issues

vim에서 마크다운 편집 시 원하지 않는 빈칸 문자 문제

문제 상황

  • vim에서 빈 칸 두 개를 띄워서 하위 불렛을 만들고 다음 줄로 넘어가면 똑같이 빈 칸 두개가 아니라 그 길이를 갖는 빈칸 문자 하나를 자동 채움한다.

예시

  • 에를 들면 아래의 세번째 줄은 vim에서 자동으로 빈칸 채움한 케이스다.
- 토비의 스프링 4장 ~ 5.1.2 복습, 실습
  - 실습하면서 책 내용을 몸에 더 가까이 붙일 수 있는 것 같다.
	- 실습하면서 책을 읽는 건 처음 책 읽을 때 하기엔 버겁다. 책 읽는 건 상대적으로 수동적이고 실습하는 건 상대적으로 주도적이다. 오래 수동적인 활동을 하면 처진다. 왔다갔다 하는 편이 좋은 것 같다. 읽다가도 너무 처지는 것 같으면 읽은 내용을 실습해보고, 실습하다가 다시 읽기로 돌아가고.
  • 포맷을 맞추려면 일일이 수정해줘야 해서 번거로운 상태다. 아래는 직접 포맷을 맞춰준 케이스.
- 토비의 스프링 6장 6.1 읽음
  - 전에 5장 읽었던 내용이 기억이 안나서 6장을 읽는데 영향을 줬다. 5장 실습을 다 하고 6장을 다시 읽는 방법도 생각했지만 비효율적인 것 같았다.
  - 6장을 다시 읽으면서 앞 장(5장)과 관련된 부분은 그때그때 찾아보고 너무 시간을 쏟거나 앞장 일부만 봐서는 이해가 잘 안될만한 내용이다 싶으면 알아낸 것만 기록하고 넘어갔다.

생각해본 해결 방안

  • 해당되는 빈칸 문자를 찾아서 일반적인 빈 칸 문자 두 개로 변경
  • 먼저 vim의 raw 데이터 볼 수 있는 모드에서 문제가 되는 문자가 무엇인지 확인
  • push하기 전에 sed 명령으로 파일을 읽어서 변경하도록 하면 될 것 같다

예약 동작 기능 추가하기

  • 매월 1일에 그 달의 디렉토리를 만들어주기
  • 전날/당일 TIL 올라갔는지, 파일이 채워져 있는지 특정 시간에 확인해서 알려주는 기능
  • 어떻게 알려줄지 정하기

커밋으로 공부 기록 정리한 프로젝트인 경우 스크립트로 그날 커밋 모아서 TIL 문서에 써주기

깃 커밋 기록으로 그날 공부한 내용을 확인할 수 있는 경우 git lg --since="6am" >> til 파일 경로 로 작성할 TIL로 옮겨서 TIL 작성 시 참고하면 어떨까?

공부하는 프로젝트 경로를 변수로 가지고 있으면

  1. 프로젝트 경로로 이동
  2. (임시) 프로젝트 이름 등 연관 정보 echo 'info' >> til 파일 경로 로 헤더처럼 써주기
  3. git lg --since="6am" >> til 파일 경로 로 그날 공부한 내용 작성할 TIL로 옮기기
    이렇게 하는 방법을 생각해봤다.

디렉토리 구조 변경

Summary 디렉토리 안에 파일이 전부 들어있어서 월별로 나누는 게 좋을 것 같다.

작성 중인 문서로 간편하게 이동하거나 편집하기

처음엔 TIL 폴더 안에 주제 별로 디렉토리를 만들고 그 안에 관련된 문서를 작성했다.
이렇게 하니까 문서 작성에 생각보다 오랜 시간이 들었다.

그래서 TIL 폴더 안에는 TIL만 남기고, 위키를 만들어 문서를 위키에 다 넣었다.
하지만 위키에도 문서를 작성하지 않고 있다. 왜인가?

  • 편집하던 문서를 찾는 과정이 번거롭다. 디렉토리를 잘 나누지 못해서일 수도 있고, 파일 이름을 다음에 봐도 이해가 잘 되도록 짓지 못해서일 수도 있다. 이것도 그렇지만, 위키가 vim 기반이다보니 shell에서나 ide에서 문서를 찾는 게 vim에서보다 번거롭다.
  • vim-wiki 사용법이 익숙하지 않아서 만들어놓은 .md 파일 이름을 바꾸거나, 다른 디렉토리로 옮기거나, 디렉토리 이름을 바꾸거나 하는 경우 어떻게 해야할지 모른다.

요즘은 프로젝트 폴더 안에 문서를 만들어서 강의/책 내용을 정리하거나, 공부하면서 해결한 실행 환경 설정을 기록해서 다음에 필요하면 또 참고하거나, 프로젝트에서 할 일 목록을 정리한다.

지금 하는 방식의 문제는

  • 한 번에 한 프로젝트만 공부할 수 있으므로 그 프로젝트와 관련된 문서는 쉽게 볼 수 있지만, 여러 프로젝트의 문서는 한 번에 확인할 수 없다는 점
  • 프로젝트가 아닌 경우, 예를 들어 멘토링 시간에 알려주신 더 알아볼 내용은 어떤 식으로 분류해 관리할지 막연하다는 점이다.

생각해본 방법은

  • 편집하려는 문서 이름이 어떤 것이든, 그 문서 경로에 대한 심볼릭 링크를 만들어서 접근할 수 있도록 한다.
  • terminal에서 이런 심볼릭 링크 목록을 한 번에 볼 수 있도록 해서 문서를 찾는 수고를 줄인다.
  • 간단히 추가할 내용이 있다면 그냥 shell에서 echo '...쓸 말...' >> symbolic-link 같이 문서를 열 필요 없이 추가로 쓸 내용만 추가하는 것이다. (이때 >를 실행하면 원래 파일 내용이 지워져버리므로 막을 수 있는 방법이 있다면 적용하는 것이 좋을 것 같다)

할 일

  • 매번 명령을 등록하지 않아도 되도록 make로 스크립트 설치 가능하도록 만들기

TIL 작성 시 참고할 이전 TIL 임시 문서 같이 띄워주기

TIL을 작성할 때마다 그 전날이나 전전날 TIL을 참고한다.
지금은 setup.sh 스크립트를 실행해 해당 날짜 TIL 문서 편집 창이 열리면 vim의 vs 명령으로 이전 TIL 문서를 골라 연다.

이전 TIL을 모은 문서는 TIL 작성 시 참고 목적으로만 쓸 거니까

  • git에서 추적할 필요는 없을 것 같다.
  • 이름을 명확히 주는 것보다 tmp_til 같이 없어져도 상관없을 이름으로 만드는 게 나을 것 같다.
  • 문서를 만드는 위치는 TIL 디렉토리 말고 임시 파일을 넣어두는 곳으로 하는 게 좋을 것 같다. (/tmp가 그런 역할인가?)

처음 구현할 때는 이전 2일분 til 문서를 임시 문서로 만드는 게 간단할 것 같다.

  • 9월 2일인 경우 그 달과 이전 달을 동시에 참고해야 한다. 이 케이스를 어떻게 해결할지 고민이 필요하다.
  • 만약 생성한 til 날짜를 기준으로 전날과 전전날을 각각의 변수 값으로 가지고 이들 값으로부터 디렉토리 이름 형식과 파일 이름 형식에 맞게 파싱하면 될 것 같기는 하지만 참고할 날짜를 명시하려고 하면 이렇게는 해결이 안될 것 같다.

setup.sh 스크립트나 새로운 스크립트에서 자동화하면 좋을 것 같다.

  • 새로운 스크립트로 만든다면 setup.sh 스크립트에서 이 스크립트를 호출해야 할 것 같다. 이 경우는 어떻게 해결하지?

개념을 정리하는 문서와 의문점에 대해 정리하는 문서 나누기

이전: Java 디렉토리에 두 가지 문서를 같이 뒀다

  • 개념 하나를 정리한 문서 (이하 개념 정리 문서)
  • 의문점에 대해 답을 찾는 과정을 정리한 문서 (이하 의문점 정리 문서)

문제점: 이렇게 관리하다 보니 문서 관리가 어려워졌다

  • 의문점을 조사하다 보면 여러 개념이 들어가는 경우가 잦다
  • 의문점 정리 문서 안 내용과 개념 정리 문서 내용이 겹칠 수도 있다
  • 개념 정리 문서 제목은 관련 개념 키워드인데, 의문점 정리 문서는 이 키워드가 맞지 않는다

해결책: 그래서 이렇게 나누려고 한다

  • 개념 정리 문서는 기존 위치에 두고, 의문점 정리 문서는 Questions 디렉토리에 둔다
  • 의문점 정리 문서 제목은 의문점과 관련된 키워드로 한다
    • 의문점을 제목으로 했을 때 적당한 제목을 결정하기가 쉽지 않았다
    • 키워드를 제목으로 하면 같은 추후 키워드로 질문을 묶을 수 있어 좋을 것 같다

해야할 것

  • 기존 문서 중 Questions 디렉토리로 옮겨야 할 문서를 옮긴다
  • 문서 제목을 살펴보고 필요시 수정한다
    • 의문점 정리 문서의 제목은 해당 의문점과 연관된 키워드로 한다
  • 이전 Summary에 있는 링크를 수정한다
    (TIL 프로젝트 최상단 디렉토리에서 grep -Re "../디렉토리_이름/이전_문서_제목.md" . 실행, 수정할 TIL 파일 찾고 수정)

주기적으로 문서 개선, 인출 연습할 수 있는 환경 만들기

TIL 작성 방식을 바꾼 뒤에는 TIL 작성이 간편하다. 전날 공부했던 내용 중에 기억나는 것만 쓰면 되고, 너무 자세하게 써야 한다는 강박을 가지지 않기 때문이다. TIL을 작성하면서 전날 머리에 넣은 내용을 인출하는 연습을 하니 좋다.

다만 TIL 문서는 말 그대로 간편하게 썼기 때문에 블로그에 올릴 정도로 정리된 문서는 아니다. 물론 매일 TIL을 더 잘 정리해서 작성하는 건 실행에 부담을 주기 때문에 작성 방식은 지금 그대로 유지하는 것이 좋다고 생각한다. 하지만 TIL을 작성하는 데 들이는 시간만큼, 작성한 내용을 다시 본다거나 고치고 싶은 부분을 수정할 수 있다면 좋을 것 같다는 생각이 들었다.

이런 생각을 구현하려면 어떤 것이 필요할까?

우선, 다시 볼 문서에는 어떤 것이 있는지 생각해봐야할 것 같다. TIL 중에서도 인출 방식으로 작성하기 시작한 것은 얼마 되지 않았기 때문에 그 시작 날짜 이후의 TIL 문서를 다시 볼 문서 범위에 넣어야 할 것 같고, 이전에 열심히 정리해서 문서화했던, 그리고 위키로 옮긴 문서들도 다시 볼 문서 범위에 넣어야 할 것 같다.

그 다음엔 범위 안 문서 중 하나를 매일 특정 또는 임의의 시간에 편하게 확인하고 편집할 수 있도록 하면 좋을 것 같다.

구현 방법이 잘 떠오르지는 않지만, 일단 아이디어는 이렇다.

일일 TIL 커밋 및 푸시 자동화

매일 적는 TIL을 커밋하고 푸시하는 과정은 반복적이다. 그래서 쉘 스크립트로 자동화하는 것이 좋겠다고 생각했다.

간단하게 구현하고, 써보면서 고칠 점을 찾아 고쳐나가려고 한다.

push.sh

  • 스크립트 실행할 위치로 먼저 이동하기
  • 오늘 날짜, 어제 날짜를 계산하는 date 명령어를 이용해서 커밋, 푸시할 디렉토리 설정값을 자동으로 바꿔주기
  • 날짜를 스크립트 안에 변수로 만들어 넣어주기
    • ex1) ../push.sh today이면 date "+%Y-%m-%d"의 결과를 스트립트 안에서 이용
    • ex2) ../push.sh yesterday이면 date -v -1d '+%Y-%m-%d'의 결과를 스트립트 안에서 이용
  • 두 조건문 안 중복 제거하기
  • 디렉토리가 존재하지 않으면 만들어주는 로직 넣기
  • -t, -y, --today, --yesterday 등의 인자로 스크립트 실행할 수 있게 하기
  • help 함수 만들고 -h, --help 옵션으로 실행

setup.sh

  • 어제/오늘을 인자로 주고 해당 날짜의 (문서가 아직 없다면) TIL 문서를 적절한 위치에 만들기
  • 디렉토리가 존재하지 않으면 만들어주는 로직 넣기
  • 디렉토리 생성 조건문 안 중복 제거하기
  • -t, -y, --today, --yesterday 등의 인자로 스크립트 실행할 수 있게 하기
  • 숫자를 인자로 줘서 TIL 파일 만들 수 있게 하기
  • help 함수 만들고 -h, --help 옵션으로 실행

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.