7월에 정말 십여년 만에 대한민국 평균 이상의 독서를 한 것같다.

정리를 해야하는데, 일단은 목록만이라도 정리해둔다

1) 월급쟁이 부자들

2) 부를 재편하는 금융 대혁명

3) 세상 편하게 부자되는 법, ETF

4) 마법의 연금 굴리기

5) EBS 다큐 프라임 자본주의

 

EBS 다큐 프라임 자본주의가 아무래도 방송했던 내용을 정리해둔 것이라 그런지 술술 읽히고 내용도 괜찮았던 거 같다. 부를 재편하는 금융 대혁명 같은 경우에는 내 수준에는 내용도 어려웠고, 출퇴근하면서 하도 졸면서 봐서 완독 예상 시간 158분인데 4시간 50분(291분) 봄.

개인연금에 관심이 좀 쏠려있어서 당분간은 이러한 기조로 책을 볼 거 같음

'' 카테고리의 다른 글

[23.03] 부의 레버리지  (0) 2023.03.21
[23.03] 부의 인문학  (0) 2023.03.06
[23.03] 부자 아빠 가난한 아빠  (0) 2023.03.06
[23.02]레버리지  (0) 2023.02.19
[22.04.28] 돈의 속성 - 김승호  (0) 2022.04.30

pre-commit을 통해 코드의 통일성을 유지할 수 있는 것과같이

또다른 hook중 하나인 commit-msg를 통해서 commit 메세지도 관리해줄 수 있다.

이왕 pre-commit을 활용하는 김에 다른 hook들도 적용하면 좋을 것같아서 가능한대로 조금씩 적용해보려고 한다.

 

좋은 commit 메세지에 대한 조건은 여러가지가 있지만, 그 중 일부만 발췌하고 내가 필요한 부분을 수정하여 작성하였다. 

pre-commit 처럼 좀 접근성 쉽게 되면 참 좋았으련만, 대충 구글링해봐도 딱 내가 원하는 것은 없는 것같아서

이것저것 참고도하고 shell script 관해서 이리저리 뒤적거려서 작성해 보았다.

린트나 포멧팅과 같은 경우에는 아무래도 규정된 스타일이 언어마다 다르기 때문에 언어에 의존하여 작성이 되겠지만,

커밋 메시지의 경우에는 오히려 언어에 구애 받지 않는 것이 좋을 것 같아서 shell script로 작성했다.

shell script가 익숙하진 않아서 의도대로 제대로 구현한 건지는 모르겠다. 

일단, 몇 번의 테스트에서는 의도한대로 걸러지긴 했다!

 

강제하고자 했던 규칙

1. 이슈트래킹을 위해 제목의 맨 앞에 꼭 이슈 번호가 포함되어야함

2. 제목에 Type이 명시되어야함

3. 제목의 길이는 50자를 초과하면 안됨

4. 제목 다음엔 공백이 필수적으로 와야함

5. 본문의 길이는 72자를 초과하면 안됨

 

이외에, 커밋 메시지가 제목만 있을 경우 경고 메세지만 입력해주었다(굳이 설명이 없어도되는 커밋이 있을거라고 생각함)
참고) https://beomseok95.tistory.com/328

 

[Git] 좋은 커밋 메세지 작성하기위한 규칙들

좋은 커밋 메시지 작성하기 위한 규칙들 코드를 작성하면서 어려운것들중 하나는 이름을 어떻게 짓는지에 대한 고민 바로`Naming` 일 것입니다. 클래스, 함수, 변수 등등 많은 이름을 고민하지

beomseok95.tistory.com

 

이제 shell script로 각 항목들을 작성했다.

(script 실행 결과 0이 아닌 값을 return하면 커밋이 되지않기때문에, 오류로 취급할 값에 대해서은 1을 return해 줌)

먼저, 기본적으로 체크해줘야하는 부분에 대해서 작성했다.

BRANCH_NAME 은 나의 경우에는 branch 이름을 이슈 관리 번호로 주로 설정하기 때문에, 이슈번호를 메시지에 적기위해 받아두었다.

(밑에서 나오는 1) 규칙을 적용하지 않을 거라면 필요없음)

  • 주석 부분 삭제 : sed를 통해 시작부분(^)이 #인 라인 삭제함
  • 빈줄 삭제 : sed를 통해서 공백라인 삭제
  • 커밋 메시지 없는 경우 체크: 커밋메시지의 라인이 0인 경우가 커밋 메시지가 없은 경우로 체크
#!/bin/bash

COMMIT_EDITMSG=$1
BRANCH_NAME=$(git symbolic-ref --short HEAD)

# Remove comments
echo "$(sed -i -e '/^#.*/d' $COMMIT_EDITMSG)"

# Remove blank lines
echo "$(sed -i -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;ba' -e '}' $COMMIT_EDITMSG)"

# Empty commit message
if [ "$(wc --l < $COMMIT_EDITMSG)" -eq 0 ]
then
	echo -e "\033[40;31mCommit failed:\033[0m Empty commit message."
	exit 1
fi

1) 이슈트래킹을 위해 제목의 맨 앞에 꼭 이슈 번호가 포함되어야함

커밋메시지 제목의 시작부분이 [이슈번호] 인지 체크하고, 아닐 경우 이슈번호인지 체크하고 [이슈번호]로 포멧팅 해주도록 작성했다. 사실 이슈번호 자체가 오타일 경우를 대비해서 정규표현식으로 체크해주면 어느정도 오타도 체크할 수 있을 것 같은데 오타라는게 어떻게 나올지도 모르고, 경우의 수를 모두 체크하기 복잡할 것같아서 커밋할 때 그냥 이슈번호를 아예 작성안하기로 스스로 결심했다. 그래서 사실 이슈번호로 시작하는 지 체크하는 것도 필요없을 것 같긴하다.

# Subject line should be contain Issue Number.
if ! [[ "$(head -n 1 $COMMIT_EDITMSG)" =~ ^"[$BRANCH_NAME]" ]]
then
	if [[ "$(head -n 1 $COMMIT_EDITMSG)" =~ ^"$BRANCH_NAME" ]]
	then
		echo -e "\033[40;33mCommit warning:\033[0m The Issue Number should be expressed in the form of [Jira Issue Number]."
		echo -e "\033[40;33mCommit warning:\033[0m Converted to the form of [Issue Number]."
		echo "$(sed -i -e "1s|$BRANCH_NAME|[$BRANCH_NAME]|g" $COMMIT_EDITMSG)"
	else
		echo -e "\033[40;33mCommit warning:\033[0m Subject line should be contain Issue Number."
		echo -e "\033[40;33mCommit warning:\033[0m Added [Issue Number].."
	echo "$(sed -i -e "1s/^/[$BRANCH_NAME] /" $COMMIT_EDITMSG)" 
	fi
fi

2) 제목에 Type이 명시되어야함

간단하다. 커밋메시지 파일의 첫번째 줄에 type에 해당하는 것이 몇 개(?) 들어있는지 체크하여 0 이면 에러 발생시켰다.

# Subject line should be contain what Type it is.
if [ "$(head -n 1 $COMMIT_EDITMSG | egrep -c '(\[+[feat|fix|docs|style|refactor|test|chore|etc]+\])' )" -eq 0 ]
then
	echo -e "\033[40;31mCommit failed:\033[0m Subject line should be contain what Type it is."
	exit 1
fi

3) 제목의 길이는 50자를 초과하면 안됨

간단히 wc를 통해 character 숫자를 체크했다.

# Subject line should be less than 50 characters.
if [ "$(head -n 1 $COMMIT_EDITMSG | wc -L)" -gt 50 ]
then
	echo -e "\033[40;31mCommit failed:\033[0m Subject line should be less than 50 characters."
	exit 1
fi​

4) 제목 다음엔 공백이 필수적으로 와야함
요게 좀 문제라면 문제인데, 커멧 메시지 파일의 2번째 줄이 공백이 아니면, 두번째 줄에 공백 삽입으로 하고 싶었는데 왜인지모르게 sed로 공백을 넣으면 아예 안들어가거나 두 줄씩 들어가길래, 아예 두 줄이 들어가게 두고 세번째 줄을 삭제하였다. 

# After subject line, line space is required.
if [ -n "$(sed -n '2p' $COMMIT_EDITMSG)" ]
then
	echo -e "\033[40;33mCommit warning:\033[0m After subject line, line space is required."
	echo -e "\033[40;33mCommit warning:\033[0m A line space is inserted after the subject line."
	echo "$(cat $COMMIT_EDITMSG | sed '1 a\\n')" > $COMMIT_EDITMSG
	echo "$(cat $COMMIT_EDITMSG | sed '2d')" > $COMMIT_EDITMSG 
fi

5) 본문의 길이는 72자를 초과하면 안됨

마찬가지로 wc 통해서 character 숫자 체크했다. 어쩌피 제목 50자는 위에서 체크했으니 그냥 커밋메시지 모든 라인에 대해서 수행했다.

# Every single description should be less than 72 characters. 
if [ "$(wc -L < $COMMIT_EDITMSG)" -gt 72 ]
then
	echo -e "\033[40;31mCommit failed:\033[0m Every single description should be less than 72 characters."
exit 1

 

'Git' 카테고리의 다른 글

[Git] Hooks 를 통한 Code  (0) 2022.09.19

학교있을땐 딥러닝 기반 Anomaly Detection 에 대한 공부를 주로 했지만,

취업하고 여차저차 정신차려 보니 남이 개발한 AI 모델을 운영/배포 할 수 있는 플랫폼 개발을 해야하게되었다.

장기적으로 소프트웨어 엔지니어로의 변환을 위해 선택한 직장이긴했지만 생각보다 너무 빨리 포지션 변경이 이뤄졌다.

 

이래저래 찾아보니  MLOps의 개념이  내게 필요하다고  생각하여 관련 내용들을 지속적으로 조금씩 정리하고자 한다. 

 

MLOps의 개념 자체가 아직 대두된지 오래되지않은 개념이라 그런지 구체적인 방법이나 형태가 완벽하게 정리된 것은 아닌 것 같다.

 

하지만, 일반적으로 아래와 같은 세가지 개념은 포함하고 있는 것으로 볼 수 있는 것 같다.

MLOps = (Model / Data / Dev) Ops

 

Model Ops = 머신러닝 모델 개발

Data Ops = 데이터 처리 및 관리

Dev Ops = 모델 운영/배포 

 

 

MLOps(Machine Learning + Operation)의 궁극적인 목적은 말그대로 머신러닝 모델을 실제 서비스에 적용되기 시작하면서 생기는 다양한 이슈들

예를 들면, 머신러닝 모델이 언제 업데이트 되어야하는 지? 서비스 운영하면서 생기는 데이터들은 어떻게 관리해야하는지(데이터의 버전 및 학습용 데이터와의 차이 등)? 모델의 배포 관리는 어떻게 해야하는지? 머신러닝 모델의 운영은 어떤식으로 할 것인지? 을 해결?하기 위한 것이기 때문에 너무나 많은 부분을 포함하고 있고, 향후 계속해서 정립되고 다져져야하는 분야인 것같다. (API/모델/데이터/ML 인프라 이를 모두 포괄하는 큰 개념)

 

MLOps 관련 해서 접근하기 전에 가장 먼저 MLOps를 통해 하고자하는 것이 무엇인지 정의하는 게 필요한데, 크게 두 가지로 나눠 볼 수 있다.

1) 내가 직접 많은 모델들을 개발하여야 하는지

2) 다른 사람들이 모델을 개발할 수 있도록 하는 것인지(플랫폼)

 

당연하게도 이것을 바탕으로 고객을 설정하여 고객의 요구 스펙/사용성을 바탕으로 개발하는 것이 필요함.

 

나의 목적은 두 번째 항목인 플랫폼 제공에 가까워 해당 사항 관련해서 지속적으로 찾아 공부하여 포스팅해야겠다.

 

 

해당 포스팅은 아래 영상에서 필요한 내용을 발췌함.

https://youtu.be/xZKtofBe18I

  • 22년 첫 도서.
  • 약 280 페이지.
  • 하나의 소제목에 대해서 약 2-4페이지 가량의 글로 구성되어 있어 읽기 편함.
  • 저자가 현재의 부를 이루기까지의 경험을 바탕으로 저자가 생각하는 돈의 속성과 그에 대한 통찰들을 요약/정리 해줌.
  • 돈을 하나의 소중한 인격체와 같이 대하는 것이 본인이 부자가 된 비결 중의 하나라고 함.
  • 추후 정리.

'' 카테고리의 다른 글

[23.03] 부의 레버리지  (0) 2023.03.21
[23.03] 부의 인문학  (0) 2023.03.06
[23.03] 부자 아빠 가난한 아빠  (0) 2023.03.06
[23.02]레버리지  (0) 2023.02.19
[22.07] 7월 결산  (0) 2022.08.01

+ Recent posts