✅ 개구리책(스프링 입문을 위한 자바 객체 지향의 원리와 이해) 스터디 (5장)
✅ 맥북 세팅 / 적응
✅ 전에 만들었던 소코반 게임에서 줄바꿈 시 CR은 입력 되지 않도록 수정
윈도우는 기본이 CRLF
이고 / 유닉스와 맥은 LF
만이다
그래서 윈도우에서 깃에 커밋할 때 CR
을 떼주고 올리는게 혹시나 다른 운영체제에서 코드를 돌릴 때 생길 수 있는 마찰을 줄이는데 좋다.
같은 코드를 윈도우에서 돌리면 괜찮은데 맥에서 클론해서 돌려보니 자꾸 오류가 떴는데, 찾아보니 윈도우에서는 개행 시 \r\n
가 입력 되어 줄 바뀜(\n
)을 기준으로 split 했더니 줄 맨 마지막에 \r
가 계속 입력되어 있는 것이 아닌가!!
근데 같은 파일을 받은 맥에서는 \r
가 입력되지 않아서 Array 크기가 달라져 오류가 생기는거였다. 같은 (내) 리포에서 클론해서 돌린건데 ???🤯
처음엔 Git 문제인줄 알고 찾아보다가 설정을 바꿔도 안되길래 패스
(그래도 덕분에 core.autocrlf, .gitattribute에 대해 배우게 되었다)
Map.txt 파일이 문제였는데 윈도우에서 작성한거라 개행 시 마다 \r\n
이 입력되나보다! 해서 별짓 다 하다가 찾아보니 이제 윈도우 메모장에서도 개행문자를 \n
으로 사용 하는걸로 업데이트 됐다는 걸 보고 패스!
(이 과정에서 메모장 대체제인 NotePad++를 알게되어 사용하고 있다)
결국 알고 보니 .. 메모장에서 읽어올때가 문제가 아니라, 읽어온걸
StringBuilder
를 이용해 나눌 때 append(System.lineSeparator())
를 사용하고 있던게 문제였다. lineSeparator
가 시스템 설정을 따르는 거여서 윈도우에서 돌릴 땐 \r\n
을, 맥에서 돌릴 땐 \n
을 찍어내는거였다!! 그래서 간단하게 append("\n")
으로 해결했다. 저때는 왜 힘들게lineSeparator
를 썼는지 모르겠다.
이걸로 새벽까지 몇시간을 헤맸지만... 해결돼서 기쁘다!!
그러기 위해 할 수 있는 것이 두가지
true
, input
, fasle
세가지 옵션이 있는데 효과는 다음 이미지 참고
그럼 개행문자 차이로 인한 문제가 안 생기려면 윈도우 사용자들은 true
나 input
으로 설정하면 된다.
git config --global core.autocrlf true
다같이 이렇게 설정을 통일하면 좋겠지만 설정이 안된 사용자가 나타난다면? 또 문제가 생길 수 있다.
그래서 일반적으로 다들 추천하는 방식이 .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 차이점 알아보기