2021년 40주차 기록
2021.10.04
    core_autocrlf line-endings
        10/04 (월) ~ 10/10 (일)
- 새로운 카테고리가 필요하다
 - 스니펫 도구
 - Chrome history를 날짜별로 살펴볼수 있을까?
 - gitconfig cross platform
 - (번역) 제발, 당신의 Git 리포지토리에 .gitattributes 을 추가하라
 - 크롬 브라우저에 사이드바 추가해 업무 생산성 높이는 방법
 
새로운 카테고리가 필요하다
- 요즘 책을 하나 봤는데…
 - 알고리즘 관련 카테고리가 하나 필요하다고 생각됨
    
- 일단 알고리즘 관련은 블로그에 정리해 두자
 
 - 어떻게 카테고리를 나누는 것이 좋을까?
 
대기업 입사시험 - 토끼 문제
스니펫 도구
- 이전에 작성했던 코드를 재사용하기 위한 도구가 있다
 - 
Snippet Tools 소개글, onextrapixel
    
- 이 중 현재는 cacher 로 이름이 바뀐 GistBox 를 사용해봤다
 - 시간나면 다른 것도 확인해보자
 
 
Chrome history를 날짜별로 살펴볼수 있을까?
- Chrome 에서 Ctrl + h 를 클릭하면 본인이 브라우징한 히스토리를 볼 수 있다
 - 최근 날짜는 찾기 쉽지만 한 달전 것을 찾아보려면 많이 힘들다
 - 방법을 찾아 봤다.  How do I view a specific date in my Google Chrome history?
    
- 구글의 마이 액티버티 를 찾아보라는 내용이다
 - 본인 인증을 다시 한 번 해야 한다
 
 - 다른 방법으로..
    
- 
history-by-date라는 Chrome Extension 이 있다 
 - 
 
gitconfig cross platform
- #line-endings, #core_autocrlf #newline
 - 36주차에 다뤘던 주제 인데 이어서 다뤄보자
 - cross platform 에서, 다시 말하면 linux와 window 상에서 같은 프로젝트를 편집하려고 한다
 - 이 때 중요한 이슈가 
line-ending이다- 윈도우는 
CR+LF로 line이 완료되며 - 리눅스는 
LF로 line이 완료된다 
 - 윈도우는 
 - 이 주제는 한 때 양쪽 진영 ( 윈도우측 , 리눅스측) 간에 대립이 있었던 민감한 주제인데 ..
    
- 각 플랫폼에서 개발후 git으로 머지할 때 line ending을 잘못올려 빌드가 깨지는 문제가 종종 발생했었기 때문이다
 - 리눅스측은 
LF하나로 끝낼 수 있는 것을 왜 복잡하게CR+LF로 하는가 불만이 있고 - 윈도우 측은 원래 
CR+LF가 원래 환경이었으나 유닉스계열에서 효율성을 이유로 변칙적으로LF만 쓰게 되어 문제가 발생한 것이라는 주장이다 
 
git config 에서 core.autocrlf 옵션을 켜야할까?
- git은 이 문제를 해결하기 위해 
core.autocrlf라는 옵션을 켤수 있는데- 크로스 플랫폼 개발시 이 기능을 꼭 
On하라는 개발자가 있는 반면.. - 크로스 플랫폼 개발시 이 기능을 절대 켜면 안된다는 입장도 있다
        
- 대부분의 모던 
윈도우에디터는CR+LF뿐만 아니라LF도 지원하기 때문이다 - 심지어 윈도우 10에서는 기본 에디터인 
NotePad도LFline ending을 지원한다!!! 
 - 대부분의 모던 
 
 - 크로스 플랫폼 개발시 이 기능을 꼭 
 - 이것 저것 읽어본 결과 오리지날이 어느 쪽인지 따지는 것보다 2021년 현재 개발면에서 어떤 방법이 좋느냐 결정을 해야 하는데
    
- 개발쪽은 점유율이 일단 리눅스쪽이 많고
 - 요즘 윈도우측도 개발쪽을 지원하기 위해 리눅스 지원을 강화하는 트렌드이기 때문에 ( WSL 등등 )
 - autocrlf 옵션을 끄고 리눅스 방식으로 통일하는 것이 맞는것 같다
 
 
현재 core.autocrlf 를 On 해서 사용하고 있는 상황에서 off로 바꾸기
- 참고 링크 , 참고할 stackoverflow 답변
 
(번역) 제발, 당신의 Git 리포지토리에 .gitattributes 을 추가하라
- 원본 링크 : 🙏 Please Add .gitattributes To Your Git Repository, dev.to
    
- 2020년 2월 3일 작성되고 2월 12일 마지막 업데이트 된 글 ( 확인일 : 2021-10-06 )
 
 - 참고 링크
 
What Is .gitattributes?
- 
.gitattributes파일은 파일과 경로의 속성들 특정하도록 한다.- 그 속성들은 
git commit등 과 같은 git actions을 수행할때 참고되는 것들이다 
 - 그 속성들은 
 - 즉, git은 파일이 생성되거나 저장될 때마다, 지정된 속성에 따라 자동으로 설정하여 파일을 저장한다
 - 이 속성중 하나는 eol (end of line) 으로, 특정 파일의 줄 끝 형식을 지정한다
 - 이 article은 line endings을 어떻게 설정하는지 더 깊이 파고들 것이며,
    
- 같은 repository에서 서로 다른 머신 / OS를 사용할지라도 개발들이 같은 값을 사용하도록 할 것이다
 
 
Why .gitattributes ( Developers At War ⚔)?
- 모든 개발자들은 서로 같지 않다
    
- 단지 윈도우즈 머신에 VS Code로 개발한다고 해서
 - 다음번 pull request가 같은 개발 환경에서 개발됐을거라 생각하지 말라
 - (다른 개발자가 MacOS 머신에 Subline Text 2를 쓸 수도 있다)
 
 - 위에서 언급된 개발자들은 다른 OS들을 쓰는데 ( 윈도우즈 vs 맥OS )
    
- 서로 다른 기본 line ending 을 가지고 있다
 - 윈도우측은 CRLF로 끝나며
 - Linux/MacOS측은 LF로 끝난다
 
 - 겉보기에 둘을 달라보이지 않는다. 이게 왜 문제일까???
 - 당신 
prettier를 활성화했고endOfLine속성이lf로 설정되어 있다면1 2 3
{ "endOfLine": "lf" }
 - 윈도우 머신 개발자는 prettier로 부터 아래와 같은 linting 이슈를 만나게 될 것이다
 
- 이 지점에서 
.gitattributes파일이 당신을 구해줄 것이다 :fairy: , :mage_man: :mx_claus: 🦸♀️🦸♂️ !!! 
New Repository (Repo)
- 
.gitattributes을 repo에 추가하기 위해- 당신 repo의 root folder에 
.gitattributes이름을 가진 파일을 생성해야 한다 
 - 당신 repo의 root folder에 
 - 아래는 .gitattributes file의 예제 내용이다
    
1 2 3
*.js eol=lf *.jsx eol=lf *.json eol=lf
 - 이 파일을 repo에 commit하고 , 변경사항을 서버에 push하라
    
1 2 3
git add . git commit -m "Added .gitattributes to repo" git push
 - 이제 이 repo로 부터 code를 받는 누구든지
    
- 파일을 수정하거나 생성할 때, git에 의해 자동으로 알맞은 기본 line ending이 사용될 것이다
 
 
Add to Existing Git Repository (Repo)
- .gitattributes file을 생성하기위해 New Repository (Repo) 에 언급된 과정을 따라해라
 - 일단 이 파일이 git server에 push 되면
    
- 로컬 repo가 clean 하며 commit 할 것이 없도록 확인한다
 
 - 
git status를 실행하여 repo가 clean 한지 확인한다1
git status
 - Note: 아직 push 나 commit할 파일이 있다면,
    
- 다음 Command를 실행하기전에
        
- 이런 action이 지금 실행되도록 확인 하거나
 - stash 되도록 하라
 
 
 - 다음 Command를 실행하기전에
        
 
GitAttributes Reset
1
2
 
git rm --cached -r .
git reset --hard
 
 
- 위의 명령은,
    
- 
.gitattributes에서 새롭게 정의된 line endings 을 이용하여 - 현재 repo의 파일들을 업데이트할 것이다
 
 - 
 - 새로운 변경사항을 포함하여 어떤 변경도 그 파일에 대해 지정된 line ending을 자동적으로 사용하게 된다
 - 다음 단계는 모든 팀 동료와 collaborator 들에게
    
- GitAttributes Reset 명령을 실행하라고 알려주는 것이다
 
 - 이제 prettier 는 
CR에 대해 더이상 불평하지 않으며- 모든 개발자는 편히 쉴 수 있다
 

 
크롬 브라우저에 사이드바 추가해 업무 생산성 높이는 방법
- 
Switch
    
- 고급기능은 유료라서 사용포기
 
 - Switch Workstation