12/20(월) 회고

강병철·2021년 12월 21일
0

회고

목록 보기
6/68

오늘 한 일

✅ 개구리책(스프링 입문을 위한 자바 객체 지향의 원리와 이해) 스터디 (5장)
✅ 맥북 세팅 / 적응
✅ 전에 만들었던 소코반 게임에서 줄바꿈 시 CR은 입력 되지 않도록 수정

오늘 배운 것

개행문자가 OS 별로 다를 수 있다는것

윈도우는 기본이 CRLF이고 / 유닉스와 맥은 LF 만이다
그래서 윈도우에서 깃에 커밋할 때 CR을 떼주고 올리는게 혹시나 다른 운영체제에서 코드를 돌릴 때 생길 수 있는 마찰을 줄이는데 좋다.

같은 코드를 윈도우에서 돌리면 괜찮은데 맥에서 클론해서 돌려보니 자꾸 오류가 떴는데, 찾아보니 윈도우에서는 개행 시 \r\n 가 입력 되어 줄 바뀜(\n)을 기준으로 split 했더니 줄 맨 마지막에 \r 가 계속 입력되어 있는 것이 아닌가!!
근데 같은 파일을 받은 맥에서는 \r가 입력되지 않아서 Array 크기가 달라져 오류가 생기는거였다. 같은 (내) 리포에서 클론해서 돌린건데 ???🤯

  1. 처음엔 Git 문제인줄 알고 찾아보다가 설정을 바꿔도 안되길래 패스
    (그래도 덕분에 core.autocrlf, .gitattribute에 대해 배우게 되었다)

  2. Map.txt 파일이 문제였는데 윈도우에서 작성한거라 개행 시 마다 \r\n이 입력되나보다! 해서 별짓 다 하다가 찾아보니 이제 윈도우 메모장에서도 개행문자를 \n 으로 사용 하는걸로 업데이트 됐다는 걸 보고 패스!
    (이 과정에서 메모장 대체제인 NotePad++를 알게되어 사용하고 있다)

  3. 결국 알고 보니 .. 메모장에서 읽어올때가 문제가 아니라, 읽어온걸
    StringBuilder를 이용해 나눌 때 append(System.lineSeparator())를 사용하고 있던게 문제였다. lineSeparator가 시스템 설정을 따르는 거여서 윈도우에서 돌릴 땐 \r\n을, 맥에서 돌릴 땐 \n을 찍어내는거였다!! 그래서 간단하게 append("\n")으로 해결했다. 저때는 왜 힘들게lineSeparator를 썼는지 모르겠다.

이걸로 새벽까지 몇시간을 헤맸지만... 해결돼서 기쁘다!!

core.autocrlf, .gitattribute 설정

그러기 위해 할 수 있는 것이 두가지

1. git config --global core.autocrlf

true, input, fasle 세가지 옵션이 있는데 효과는 다음 이미지 참고

그럼 개행문자 차이로 인한 문제가 안 생기려면 윈도우 사용자들은 trueinput으로 설정하면 된다.
git config --global core.autocrlf true
다같이 이렇게 설정을 통일하면 좋겠지만 설정이 안된 사용자가 나타난다면? 또 문제가 생길 수 있다.
그래서 일반적으로 다들 추천하는 방식이 .gitattribute

2. .gitattribute

방법은 간단하다. 설정하고자 하는 로컬 Repository에서 .git 폴더와 같은 위치에 .gitattribute 이라는 파일을 만든다. 그리고 안에 내용에*text=auto 만 입력해주고 커밋푸쉬 하면 된다. 끝이다
그러면 누구든 해당 리포에 파일을 올릴때 윈도우 타입 개행문자(\r\n)들은 전부 유닉스/맥 타입 개행문자(\n)으로 수정된다. 그 사람들이 core.autocrlf 설정을 했든, 안했든! (.gitattribute 설정이 autocrlf 설정을 오버라이드 한다)

📚참고
git replacing LF with CRLF
How to force consistent line endings in Git commits with cross-platform compatibility
Git for Windows: Line Endings

기분, 느낀점, 다짐

저번 주에 장염 때문에 아파서 며칠을 날려서 회고고 뭐고 다 망했었다. 그러다 금요일에는 당근에서 맥북 에어 M1을 구매하게되어, 주말 동안은 맥 적응하느라 시간을 쏟았다.
회고를 소홀히 하긴 했지만 이제는 다시 써보자.
다시금 느끼지만 건강이 최고다.

나는 조개류, 생굴 같은건 가능하면 먹지 말아야겠다 (작년에도 석화 먹고 뒤지게 아팠다)

내일 할 일

저번 주에 하려했다가 못했던 알들을 일단 해보자

🟩 정리 안된 수업 내용들 정리하기
🟩 깃 강의 듣기
🟩 HashMap과 HashTable 차이점 알아보기

0개의 댓글