Intro여러 개의 서버를 관리하다 보면 환경 설정 파일들이 여기저기 흩어져 관리하기 복잡해진다. 특히 .zshrc 나 .bashrc 같은 셸 설정 파일은 여러가지 도구와 플러그인, alias를 관리하는 파일이라서 해당 파일 내용을 잃어버리거나 실수로 덮어쓴다면 굉장히 번거로워진다.개인적으로는 이 문제를 해결하기 위해 .zshrc 파일을 Git 리포지토리에 자동으로 백업하는 시스템을 만들었다. 한번 시스템을 구축해두니, 가끔 쉘 설정 파일 편집한 날에는 새벽에 자동으로 백업이 되어 있으니 매우 편해서 해당 내용을 공유해보려한다.이번 글에서는 cron 스케줄링을 활용해 각 서버에서 .zshrc 파일을 매일 자동으로 백업하는 방법을 차근차근 설명해 보겠다.Git 리포지토리리포지토리 생성 및 SSH 키 등록백..
전체 글 506
IntroLeetCode 문제를 매일 풀이하는 개발자라면 공감할 텐데.. 문제 링크를 찾아가고, 클래스 이름을 짓고, 파일을 생성하는 과정이 굉장히 번거롭다.그래서 이를 간단히 처리하기 위해 leet.sh와 ClassNameFactory.java 두 가지 프로그램을 작성했다.이제 터미널에서 leet 한 줄만 입력하면, 오늘의 문제 링크가 뜨고, 문제풀이용 클래스 이름이 자동으로 클립보드에 복사된다.IDE에서 바로 붙여넣어 클래스를 생성한 뒤 코딩을 시작하면 된다. 비슷한 번거로움을 겪었던 개발자라면 한번 참고해보길 권한다.leet.bash문제 정보 가져오기leet.sh는 LeetCode의 GraphQL API를 이용해 오늘의 문제 정보를 가져온다.GraphQL API는 공식적으로 제공되지 않지만 Leet..
IntroGithub 저장소의 언어 표기는 저장소의 주요 언어를 한눈에 보여주는 유용한 기능이다. 하지만 다양한 파일 포맷을 포함할 경우, 본래 의도한 언어와 다르게 표시될 수 있다. Github은 언어 통계를 위해 Linguist라는 오픈소스 도구를 사용한다. Linguist는 각 파일의 확장자와 내용에 따라 언어를 감지하고, 라인 수를 기준으로 언어 비율을 계산한다. 이때 코드베이스의 양적인 부분만을 반영하기 때문에 핵심 코드가 아닌 파일이 많다면 실제 프로젝트 언어 비율과 다르게 나타날 수 있다.이번 글에서는 .gitattributes 파일을 통해 Github 언어 통계를 조정하고, 불필요한 언어가 표시되지 않도록 하는 방법을 설명하겠다.특정 파일과 폴더 제외 설정.gitattributes.gita..
Intro개발하다 보면 작업 중인 변경 사항을 일시적으로 보관하고 브랜치를 이동하거나 삭제해야 할 때가 있다. 이때 보통 git stash를 이용해 변경 사항을 임시 저장하는데, 만약 스태시해 둔 상태에서 브랜치를 삭제하면 어떻게 될까? 혹시 스태시한 작업이 사라지지는 않을까? 이번 포스트에서는 git stash와 브랜치 삭제의 관계를 알아본다.git stashgit stash는 현재 작업 중인 변경 사항(커밋되지 않은 파일 및 수정된 파일)을 임시 저장해 두는 기능이다. 이때 스태시는 브랜치에 의존하지 않고, 저장된 작업은 저장소 내에 독립적으로 유지된다. 즉, 특정 브랜치에서 git stash를 사용해도 이 스태시 항목은 브랜치가 아닌 저장소 자체에 저장되기 때문에 다른 브랜치로 이동하거나 브랜치를 ..
Intro기존에는 주로 자동 증가 숫자 타입을 PK로 쓰곤 했는데, 최근에는 분산시스템에서도 사용 가능한 UUID를 데이터베이스의 기본 키(Primary Key)로 사용하는 경우가 많아지고 있다. 이번 글에서는 UUID및 숫자 타입을 PK로 사용했을때의 장단점을 비교해보고 추가로 대안도 찾아보자각 타입의 특징Numeric ID성능: 숫자 기반이므로 저장 공간이 적고, 데이터베이스 인덱싱 성능도 우수하다. 조회 성능에서 유리하다.단순함: 자동 증가 숫자 방식은 직관적이고, 값을 예측할 수 있어서 관리하기 쉽다.가벼움: Long 타입은 8바이트(64비트)로 UUID보다 작아, 대규모 데이터베이스에서 저장 공간을 절약할 수 있다.UUID고유성과 확장성: UUID는 분산 시스템에서 중앙 서버 없이도 고유 식별자..