Jekyll 블로그 Hugo로 이전한 후기

Jekyll + Minimal Mistakes로 만들었던 블로그를 Hugo로 이전했습니다. 왜 Hugo인가? 가장 큰 이유는, Ruby보다는 Hugo가 사용하는 언어인 Go에 경험이 많았기 때문입니다. 사실 이 점이 블로그 글 작성에 큰 영향을 미치지는 않습니다. 실제 사용시에는 Hugo cli 명령어 정도만 사용하니까요. 하지만 혹시 모를 문제 발생시에 해결하기 훨씬 수월할 것 같다는 안정감이 들었습니다. Hugo를 사용한 정적 웹사이트 개발 프로젝트를 수행했던 경험이 있고, Hugo가 사용하는 템플릿 언어인 text/template 을 자주 사용했습니다. macOS에서 빌드 속도가 Jekyll에 비해 매우 빠릅니다. Linux에서는 비슷한 성능을 보여줬지만, macOS의 경우 Jekyll은 체감 빌드 시간이 1분 정도 걸리는 데 비해 Hugo는 대략 3초 이내로 빌드가 완료됩니다. Hot Reload를 지원해 테마 개발이 편리합니다. Google Analytics, 목차 생성 기능 등 기본 제공되는 기능들이 풍부합니다. 테마를 git submodule로 관리해 소스트리가 깔끔합니다. 단점은? Github pages에서 기본적으로 지원하지 않습니다. Jekyll의 경우, 별도 설정 없이 페이지 빌드와 배포가 자동으로 수행되는 반면, Hugo의 경우 Github Actions를 수동으로 설정해 주어야 합니다. 단점이 별로 없는 것 같지만, 위 단점이 생각보다 많이 컸습니다. 그래서 사실 Go를 많이 좋아하고, 경험이 있는 것이 아니라면 그냥 Jekyll을 사용하는 것이 나을지도 모르겠네요. ...

2023년 2월 13일  · 3 분 · 1265 단어 · dfkdream

만료된 GPG 키 갱신하기 (유효기간 연장)

Github 등 Git 서버에서는 커미터가 자신임을 증명하기 위해 GPG 서명을 사용할 수 있습니다. 이때 사용되는 GPG 키는 보안을 위해 유효기간을 지정하는 것이 권장되는데, 유효기간이 지나면 해당 키로 커밋을 할 수 없는 등 문제가 발생합니다. ...

2022년 3월 30일  · 2 분 · 523 단어 · dfkdream

macOS에 pyenv 설치, 사용하기

pyenv, pyenv-virtualenv 설치 방법과 자주 사용되는 명령어들을 모아 보았습니다. 테스트 환경 macOS Monterey iTerm2 ZSH pyenv 설치 brew install pyenv echo 'eval "$(pyenv init --path)"' >> ~/.zprofile echo 'eval "$(pyenv init -)"' >> ~/.zshrc 특정 버전의 python 설치 pyenv install <python-version> ex) pyenv install 3.8.12 pyenv-virtualenv 설치 brew install pyenv-virtualenv echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc virtualenv 생성 pyenv virtualenv <python-version> <venv-name> ex) ...

2022년 3월 8일  · 1 분 · 179 단어 · dfkdream

zsh-autosuggest와 zsh-syntax-highlighting 충돌 문제 해결

zsh-autosuggestions와 zsh-syntax-highlighting은 zsh 사용을 엄청 편리하게 해 주는 플러그인입니다. 그런데 macOS에서 이 플러그인들을 설치했더니 플러그인 간에 충돌이 발생해 자동완성된 명령어가 보이지 않거나 하이라이팅이 제대로 되지 않는 문제가 발생했습니다. 이 포스트에서는 이런 문제들을 해결해 보겠습니다. ...

2020년 2월 21일  · 3 분 · 1035 단어 · dfkdream

[Golang] 구조체 필드를 배열처럼 접근하기

리플렉션 (reflect 패키지) 를 사용하면 구조체를 배열처럼 인덱스로 접근할 수 있습니다. import( "fmt" "reflect" "strconv" ) type test struct{ A int B int C string } 값 읽기 t := test{1,2,"3"} fmt.Println(reflect.ValueOf(t).Field(0).Int()) fmt.Println(reflect.ValueOf(t).Field(1).Int()) fmt.Println(reflect.ValueOf(t).Field(2).String()) 결과 1 2 3 자료형이 일치하지 않을 경우 패닉이 발생합니다. ...

2019년 4월 5일  · 1 분 · 396 단어 · dfkdream