저번에 이어서 python code들의 formatting을 조금 더 간편하게 Git Hooks를 통해 도전한다.
Git Hooks
Git Hooks는 Git 작업의 특정 지점에서 실행되는 스크립트다. 사용자 정의 작업을 수행하거나 작업의 유효성을 검사하기 위해 사용되며 git repository 내부에 설정되어 해당 이벤트가 발생할 때마다 실행된다.
pre-commit
pre-commit은 Git Hooks을 활용하여 코드 commit 전에 자동으로 실행되는 도구다. 코드의 품질을 유지하고 일관성을 강제하기 위해 사용되며 일반적으로 코드 스타일 체크, 정적 분석, 테스트 실행 등의 작업을 수행한다. 또한 commit 하기 전에 코드에 대한 일련의 검사를 수행하여 품질을 향상시키고, 잠재적인 오류나 스타일 가이드 위반을 방지한다.
1
$ pip install pre-commit
pre-commit은 위와 같이 설치할 수 있으며, .pre-commit-config.yaml 파일을 사용하여 구성한다. 이 파일에는 사용할 Git Hooks 스크립트, 훅을 실행할 리포지토리 경로, 특정 파일에 대한 훅의 적용 여부 등의 설정이 포함된다.
pre-commit은 다양한 Git Hooks (코드 포맷팅, 정적 분석, 린팅, 테스트 실행 등)를 지원하며을 수행할 수 있다. .pre-commit-config.yaml 파일에서 필요한 훅을 구성하고 해당 훅이 실행될 때 어떤 작업을 수행할지 결정할 수 있다.
Algorithm 문제를 풀고 GitHub에서 관리하고 있었는데, 문제를 해결할 때 replit을 초기에 많이 사용했었다. 하지만 현재 사용하고 있는 Visual Studio Code와 indentation의 규칙이 달라서 GitHub Actions로 모두 동일한 format을 가지도록 자동화하겠다.
GitHub Actions는 구동 조건 (CronJob, 특정 branch에 push, …)을 만족하면 준비된 스크립트를 자동적으로 실행해준다. 따라서 CI/CD를 포함하여 다양한 작업에 사용되고 있다. (로또 자동화도 가능,,,)
Go는 구글에서 개발한 프로그래밍 언어로, 간결하고 효율적인 코드 작성을 위해 설계된 언어입니다. Go는 정적 타입 언어로, C와 유닉스 환경에서 사용되는 도구들의 장점을 결합한 언어로 개발되었습니다.
Features of Go
간결하고 가독성이 좋은 문법
C 스타일의 문법을 가지고 있으며, 불필요한 기능을 제거하여 코드를 간결하게 작성 가능
문법이 간단하고 가독성이 좋아 새로운 개발자들의 빠른 숙달
효율적인 동시성 지원
동시성을 위한 기능 내장 $\rightarrow$ 병렬 프로그래밍의 쉬운 구현
Goroutine은 경량 스레드로, 작은 메모리 오버헤드로 수많은 고루틴을 동시에 실행 가능 $\rightarrow$ 대규모 시스템에서 효율적인 동시성 처리 구현 가능
빠른 컴파일과 실행 속도
정적 타입 언어지만 빠른 컴파일 속도
Garbage collection을 통한 편한 메모리 관리 $\rightarrow$ 대규모 시스템에서도 빠른 실행 속도를 제공합니다.
강력한 표준 라이브러리
풍부한 표준 라이브러리를 제공 (네트워킹, 암호화, 웹 개발, 데이터베이스 액세스 등 다양한 작업)
크로스 플랫폼 지원
다양한 운영 체제와 아키텍처에서 사용할 수 있도록 크로스 플랫폼 지원 제공
하나의 코드베이스로 여러 플랫폼에서 실행할 수 있는 이식성 높은 프로그램 개발 가능
Go는 웹 서버, 분산 시스템, 클라우드 서비스, 네트워크 프로그래밍 등 다양한 분야에서 사용된다. 특히, 동시성 처리에 강점을 가지고 있어 대규모 시스템의 성능을 향상시킬 수 있다. 또한, Go는 개발자들의 생산성을 높이기 위해 설계된 언어로, 간결한 문법과 강력한 도구들을 제공하여 개발자들이 효율적으로 코드를 작성할 수 있도록 도와준다.