각 서버의 `.zshrc` 파일을 자동으로 백업하기

Intro여러 개의 서버를 관리하다 보면 환경 설정 파일들이 여기저기 흩어져 관리하기 복잡해진다. 특히 .zshrc 나 .bashrc 같은 셸 설정 파일은 여러가지 도구와 플러그인, alias를 관리하는 파일이라서 해당 파일 내용을 잃어버리거나 실수로 덮어쓴다면 굉장히 번거로워진다.개인적으로는 이 문제를 해결하기 위해 .zshrc 파일을 Git 리포지토리에 자동으로 백업하는 시스템을 만들었다. 한번 시스템을 구축해두니, 가끔 쉘 설정 파일 편집한 날에는 새벽에 자동으로 백업이 되어 있으니 매우 편해서 해당 내용을 공유해보려한다.이번 글에서는 cron 스케줄링을 활용해 각 서버에서 .zshrc 파일을 매일 자동으로 백업하는 방법을 차근차근 설명해 보겠다.Git 리포지토리리포지토리 생성 및 SSH 키 등록백..

Development/DevOps 2024.11.18
매일 LeetCode 문제 풀이, 터미널 한 줄로 간편하게

IntroLeetCode 문제를 매일 풀이하는 개발자라면 공감할 텐데.. 문제 링크를 찾아가고, 클래스 이름을 짓고, 파일을 생성하는 과정이 굉장히 번거롭다.그래서 이를 간단히 처리하기 위해 leet.sh와 ClassNameFactory.java 두 가지 프로그램을 작성했다.이제 터미널에서 leet 한 줄만 입력하면, 오늘의 문제 링크가 뜨고, 문제풀이용 클래스 이름이 자동으로 클립보드에 복사된다.IDE에서 바로 붙여넣어 클래스를 생성한 뒤 코딩을 시작하면 된다. 비슷한 번거로움을 겪었던 개발자라면 한번 참고해보길 권한다.leet.bash문제 정보 가져오기leet.sh는 LeetCode의 GraphQL API를 이용해 오늘의 문제 정보를 가져온다.GraphQL API는 공식적으로 제공되지 않지만 Leet..

Development/Develop Tools 2024.11.16
Github 저장소 언어 표기 설정

IntroGithub 저장소의 언어 표기는 저장소의 주요 언어를 한눈에 보여주는 유용한 기능이다. 하지만 다양한 파일 포맷을 포함할 경우, 본래 의도한 언어와 다르게 표시될 수 있다. Github은 언어 통계를 위해 Linguist라는 오픈소스 도구를 사용한다. Linguist는 각 파일의 확장자와 내용에 따라 언어를 감지하고, 라인 수를 기준으로 언어 비율을 계산한다. 이때 코드베이스의 양적인 부분만을 반영하기 때문에 핵심 코드가 아닌 파일이 많다면 실제 프로젝트 언어 비율과 다르게 나타날 수 있다.이번 글에서는 .gitattributes 파일을 통해 Github 언어 통계를 조정하고, 불필요한 언어가 표시되지 않도록 하는 방법을 설명하겠다.특정 파일과 폴더 제외 설정.gitattributes.gita..

Development/Develop Tools 2024.11.15
`git stash`로 변경 내용을 보관한 뒤에 브랜치를 삭제하면 어떻게 될까?

Intro개발하다 보면 작업 중인 변경 사항을 일시적으로 보관하고 브랜치를 이동하거나 삭제해야 할 때가 있다. 이때 보통 git stash를 이용해 변경 사항을 임시 저장하는데, 만약 스태시해 둔 상태에서 브랜치를 삭제하면 어떻게 될까? 혹시 스태시한 작업이 사라지지는 않을까? 이번 포스트에서는 git stash와 브랜치 삭제의 관계를 알아본다.git stashgit stash는 현재 작업 중인 변경 사항(커밋되지 않은 파일 및 수정된 파일)을 임시 저장해 두는 기능이다. 이때 스태시는 브랜치에 의존하지 않고, 저장된 작업은 저장소 내에 독립적으로 유지된다. 즉, 특정 브랜치에서 git stash를 사용해도 이 스태시 항목은 브랜치가 아닌 저장소 자체에 저장되기 때문에 다른 브랜치로 이동하거나 브랜치를 ..

Development/DevOps 2024.11.13
Git에서 마지막 커밋 취소하기

IntroGit을 사용하다 보면 의도와 다르게 커밋을 하거나, 잘못된 브랜치에서 커밋을 진행하는 실수를 할 때가 있다. 이렇게 한 번 커밋을 하고 나면 --amend 옵션으로 이미 커밋한 내용을 수정하고, force push로 덮을 수 있지만 때로는 커밋 자체를 완전히 취소해야 할 경우도 있다.이 글에서는 실수로 커밋한 내용을 되돌리기 위한 방법들을 예시와 함께 살펴보고, 각 상황에서 주의할 점에 대해 정리한다.실습커밋을 취소해야 하는 상황커밋 취소가 필요한 상황은 다양하다. 다음과 같은 경우가 대표적이다.커밋을 했으나 수정할 내용이 있다: 커밋 메시지나 커밋된 내용에 빠진 부분이 있다면 --amend 옵션을 사용하여 커밋을 수정할 수 있다.잘못된 브랜치에서 커밋을 한 경우: 작업 브랜치가 아닌 다른 브..

Development/Git 2024.11.09