항상 내 맘 같지 않은 기술 블로그

개발이 비교적 익숙하지 않은 데이터분석가 또는 데이터사이언티스트가 Github Pages를 활용하여 기술블로그를 운영하기 위해서는 몇 가지 난관이 있습니다. 자료를 찾아보면 주로 Jekyll, Hugo, Hexo, Gatsby.JS 와 같이 낯설고 어려운 프레임워크을 사용해야 합니다. 튜토리얼은 간신히 따라갔다 하더라도, 기존의 테마를 내 입맛에 맞게 커스터마이징을 하거나 기능을 추가하기 위해서는 html, CSS 또는 NodeJS 같은 프레임워크를 알아야 합니다. 마음에 드는 테마가 있어도, 오랜 기간 관리가 되지 않아 Latex 엔진이 제대로 작동하지 않는 경우가 생기기도 하죠. 번거로웠던 적이 많았습니다. 그냥 조용히 다른 쉬운 플랫폼을 선택할 걸 하는 후회가 드는 순간도 있었습니다. 진짜 많은거 바라지 않으니, 가장 심플하게 기본만 딱 하는 테마는 없을까 찾아보기도 했구요. 이러한 와중에 fastpages를 접하게 되었습니다.


이번에는 fastpages

Source: https://github.com/fastai/fastpages

장점

fast.ai 에서 개발한 fastpages는 Jekyll을 기반으로 하는 툴입니다. 제가 생각하는 fastpages의 장점은 다음과 같습니다.

  • 디자인이 군더더기 없이 깔끔하다. 부족한 것도 없지만 더 덧붙일 것도 없다. 따라서 코드를 수정할 필요가 없다.
    • Latex, Syntax highlighting 모두 깔끔하다.
    • Altair, Plotly 와 같은 interactive visualization도 embedd 할 수 있다.
  • html을 쓰지 않아도 된다.
    • 기존의 방식과 같이 markdown(.md) 파일로 블로그 포스트를 작성할 수 있다.
    • jupyter notebook(.ipynb) 파일까지도 그대로 블로그 포스트로 변환해준다. (!!!!!)
    • 아마 많이 사용할 일은 없겠지만, word 파일까지도 가능하다고 한다.
  • 다른 프레임워크 기반 명령어가 따로 필요 없이, 그저 add, commit, push 명령어만으로 포스트를 간편하게 업데이트할 수 있다. 나머지는 Github Action을 배포과정 알아서 진행하기 때문.

단점

단점은 … 아직까지는 없습니다. 단지, {github username}.github.io 형태의 주소는 지원하지 않고, {github username}.github.io/{user가 생성한 fastpages 블로그 레포지토리 이름} 을 통해서만 블로그가 생성된다는 점이 한계인 것 같네요.


한번 만들어봅시다

fastpages 블로그용 레포지토리 생성하기.

  • fastpages 공식 레포지토리에서 Use this template 버튼을 클릭하고 새로운 레포지토리를 생성합니다. 이때, 레포의 이름은 아무것이나 정해되 상관 없되, {계정명}.github.io는 피해야 합니다.

    Generate a copy of this repo by clicking on this link. Name your repo anything you like except {your-username}.github.io.

 

  • 잠시 기다리면, “Initial Setup"이라는 새로운 Pull Request가 자동으로 생성된 것을 확인할 수 있습니다.

    GitHub Actions will automatically open a PR on your new repository ~ 30 seconds after the copy is created. Follow the instructions in that PR to continue.

 

PR 가이드 따라가기

  • 다음 링크에서 prive key와 public 키를 생성합니다. 이때, 옵션은 RSA4069를 선택 후 “Generate SSH-Keys” 버튼을 클릭합니다.

    Create an ssh key-pair. Open this utility. Select: RSA and 4096 and leave Passphrase blank. Click the blue button Generate-SSH-Keys.

 

  • 두번째 주어진 링크에서 새 “New repository secret” 버튼을 클릭하고, Value 입력 칸에 앞서 생성한 Private key 전체를 복사하여 붙여넣습니다. Name 입력 칸에는 “SSH_DEPLOY_KEY"라고 입력하고 저장합니다.

    Navigate to this link and click New repository secret. Copy and paste the Private Key into the Value field. This includes the “—BEGIN RSA PRIVATE KEY—” and “–END RSA PRIVATE KEY—” portions. In the Name field, name the secret SSH_DEPLOY_KEY.

 

  • 세번째 링크에서는 “Add deploy key” 버튼을 클릭하고, 앞서 생성한 Public key를 복사하여 붙여넣습니다. 이름은 아무렇게나 지정해도 된다고 합니다. 그리고 제일 아래 “Allow write access” 박스를 꼭 체크합니다.

    Navigate to this link and click the Add deploy key button. Paste your Public Key from step 1 into the Key box. In the Title, name the key anything you want, for example fastpages-key. Finally, make sure you click the checkbox next to Allow write access (pictured below), and click Add key to save the key.

 

  • 마지막으로 PR을 merge합니다. 이후 fastpages 블로그가 배포되는 과정은 Github actions에서 아래와 같이 확인할 수 있습니다.

 

  • 완료되면, {github username}.github.io/{레포지토리 이름} 에서 fastpages 기반의 블로그가 배포되었음을 확인할 수 있습니다.

 

이것만 알아도 블로깅 문제 없다!

(나머지는 저도 아직 잘 몰라요. 몰라도 크게 상관 없더라구요 …)

  • _config.yml
    • 블로그의 이름, Latex사용 여부, 미리보기 여부, 태그 보여주기 여부 등을 설정할 수 있는 파일입니다. 자신의 SNS계정 버튼도 추가할 수 있고, description, pagination의 갯수 등의 사항들도 설정할 수 있습니다.
  • index.html
    • 블로그 메인 페이지에 보여지는 컨텐츠를 작성하는 파일입니다. 저는 아무것도 입력하지 않았기에 디폴트로 작성되어 있던 fastpages 소개 텍스트를 삭제했습니다.
  • _pages/about.md
    • 블로그의 자기소개 페이지 About페이지의 내용을 작성하는 파일입니다. markdown 포맷으로 작성하면 됩니다.
  • 포스트를 저장하는 디렉토리는 아래 종류에 따라 달라지므로 디렉토리를 구분해서 작성하시면 됩니다.
    • _notebooks/
    • _posts/
    • _word/
    • images/

주의! 포스트를 작성할 때는 notebook, markdown, word 파일 포맷에 상관 없이 무조건 YYYY-mm-dd-{아무 이름} 형태로 작성되어야 fastpages가 이를 인식하고 파일을 html로 변환합니다.

 

블로그 로컬에서 확인하기

배포 또는 포스트 최종 업로드 전, 내가 작성한 포스트가 블로그에 잘 보여지는 지 확인하고 싶을 때가 있습니다. 이때는 make server 명령어를 칩니다. localhost:4000 에서 블로그가 생성되었음을 확인할 수 있습니다. (단, docker가 작동 중에 있을 때만 가능합니다.)


마무리 하며

기술 블로그를 초반에 시작했을 때는 정말 의욕은 많이 앞섰지만, 늘 “이 디자인은 마음에 들지 않아, 이건 이런 기능이 없어, 이건 계속 오류가 생겨"와 같은 쓸데 없는 생각들이 불쑥불쑥 튀어나왔던 것 같습니다. 하지만, 이번 기회에 fastpages가 아주 깔끔하면서도 만족스러워 다짜고짜 블로그를 바꿔버렸습니다. 이제 과거에 작성했던 글들도 슬슬 옮겨놔야할 것 같네요! 새로운 술은 새 포대에 담으라고 했던가요? 새로운 블로그를 만들었으니 글도 술술 써지기를 기대해봅니다!


Reference