새로운 카테고리가 필요하다

  • 요즘 책을 하나 봤는데…
  • 알고리즘 관련 카테고리가 하나 필요하다고 생각됨
    • 일단 알고리즘 관련은 블로그에 정리해 두자
  • 어떻게 카테고리를 나누는 것이 좋을까?

대기업 입사시험 - 토끼 문제

스니펫 도구

  • 이전에 작성했던 코드를 재사용하기 위한 도구가 있다
  • Snippet Tools 소개글, onextrapixel
    • 이 중 현재는 cacher 로 이름이 바뀐 GistBox 를 사용해봤다
    • 시간나면 다른 것도 확인해보자

Chrome history를 날짜별로 살펴볼수 있을까?

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 옵션을 켜야할까?

현재 core.autocrlf 를 On 해서 사용하고 있는 상황에서 off로 바꾸기

(번역) 제발, 당신의 Git 리포지토리에 .gitattributes 을 추가하라

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 이슈를 만나게 될 것이다 linting issue
  • 이 지점에서 .gitattributes 파일이 당신을 구해줄 것이다 :fairy: , :mage_man: :mx_claus: 🦸‍♀️🦸‍♂️ !!!

New Repository (Repo)

  • .gitattributes을 repo에 추가하기 위해
    • 당신 repo의 root folder에 .gitattributes 이름을 가진 파일을 생성해야 한다
  • 아래는 .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 되도록 하라

GitAttributes Reset

1
2
git rm --cached -r .
git reset --hard
  • 위의 명령은,
    • .gitattributes 에서 새롭게 정의된 line endings 을 이용하여
    • 현재 repo의 파일들을 업데이트할 것이다
  • 새로운 변경사항을 포함하여 어떤 변경도 그 파일에 대해 지정된 line ending을 자동적으로 사용하게 된다
  • 다음 단계는 모든 팀 동료와 collaborator 들에게
  • 이제 prettier 는 CR에 대해 더이상 불평하지 않으며
    • 모든 개발자는 편히 쉴 수 있다

    두번째 그림

크롬 브라우저에 사이드바 추가해 업무 생산성 높이는 방법