Jekyll 불평
오늘 설치해서 몇번 만져보다 보니 느낀 불평/불만 들을 적는다.
정적 페이지 생성 도구이다 보니, 글을 적고 배포하는 과정은 다음과 같다.
- 마크업 언어(이 경우엔
Kramdown
) 로 글을 적는다. - “Writing posts” 참조 jekyll build
하여 정적 페이지로 변환한다.- 변환된 페이지를 deploy 한다.
마이크로 블로깅 서비스 중에서도 간단함과 사용자 편의를 고려한 서비스가 워낙 많다보니, 생경하다못해 “왜 이렇게까지..?” 싶은 느낌마져 든다.
글 하나 올리기가 이렇게 힘들다니
특히 페이지에 글을 적는 행위만 해도 _post
디렉토리에 YEAR-MONTH-DAY-title.MARKUP
형식의 이름으로 파일을 생성해야 한다는 규칙이 있으며, 헤더는 YAML 방식으로 작성된다.
모두 다 .md 파일을 생성해서, 좋아하는 편집기 상에서 직접 마크업 언어로 작성한다. 따라서 편집기의 단축키나 기능을 연결해 놓지 않는 한, 사용자가 모든 메타데이터를 “직접” 작성한다.
예를들어, 글 하나 작성할때 다음을 수동으로 입력한다.
- 파일명, 이때 파일명은
_post
디렉토리에YEAR-MONTH-DAY-title.MARKUP
의 형태로 생성한다. - 파일의 헤더는 YAML Front Matter 로 작성한다.
즉, 파일을 생성해서, 편집기로 열어 메타데이터를 입력하는 것 까지 사용자가 직접 생성해야 한다.
규칙을 외우기 전까지는 메뉴얼을 항상 껴안고 있어야 할 것이다.
알아야 할 건 더 많다니
jekyll 을 운영한다는 것은, 기본적으로 다음에 대한 “간단한” 지식이 필요하다고 생각된다.
- git 버전 관리 - 글 관리를 보통 git 으로 한다
- ruby 로 작성된 app 관리 - bundle 로 필요한 ruby 라이브러리를 관리
- 마크업 언어에 대한 이해 - Markdown 은 쉽기로 유명하지만, WYSYWIG 에 익숙한 현대인이라면…
- HTML/CSS/JS - Frontend 를 구성하는 요소에 대해서 대충이라도 알아야 테마를 편집한다.
- Build - LaTex 같은 조판 언어를 다뤄본 사용자가 아니라면 듣도보도 못한 개념이다.
더 많겠지만, 몰라서 적질 못하겠다. 아무튼 기본적으로 알아야 할 내용이 많다.
근데 왜 써?
글 쓰는데도 이렇게 손이 많이 가면 너무 이상하다고 생각하다가, 곧 생각을 바꿔먹은게 다음의 장점이 있기 때문이다.
- 좋아하는 편집기로 직접 편집, 역량에 따라 고도의 커스터마이징을 할 수 있다.
- 마크업 언어 사용 가능, 위지윅에서 느낄 수 없었던 표현의 정확함과 자유로움은 큰 장점이다.
- Liquid Template Language 를 사용하여 동적 페이지 생성 가능
- 오프라인에서도 작업 가능, 정적 페이지 생성 도구이다 보니 굳이 온라인에서 작업할 이유가 없다. 심지어 버전관리도 되는 놀라움
- 간단함, 이상한 말처럼 들리겠지만, 잡다한 기능이 없어서(근데 너무 없어) 간단하다. 필요한 기능은 만들면 된다.
그러니까, 달리는 차안에서 인터넷 없이 익숙한 편집기로 작성한 글을 정적 페이지로 만들어 결과를 확인한 뒤에, 인터넷이 연결된 환경에서 한번에 업로드 할 수 있다.
인터넷이 연결되지 않은 환경에서도 블로깅을 할 수 있다는것은 대단히 편리한 일이다.
편집기에 익숙한 사용자라면, 특정 문자열을 출력하는 기능을 단축키로 등록할수도 있을텐데, 마크업 언어의 경우에는 서식문자를 통하여 결과물의 형태가 달라지기 때문에 쉽게 기능추가를 할 수 있게된다.
조금 풀어서 말하자면, 일반적으로 사용하는 WYSYWIG 방식의 편집기에서 어떤 문자열을 bold 로 설정하고 싶다면,
해당 문자열을 선택해서, 서식에서 "굵게"
설정을 누르는 식이지만, 마크업 언어에서는 "굵게"
라는 의미를 가지는
서식문자를 추가함으로써 결과물에서 반영되게 할 수 있다. 예를들어 마크다운에서는 **bold**
라는 표현으로 bold 를 표현한다.
편집기에서 특정 문자열의 앞뒤에 **
를 붙여주게끔 단축키를 설정한다면, 간단히 "굵게"
라는 기능을 추가한것과 진배 없다.
이외의 장점이 더 있겠지만, 몰라서 쓰지 못하겠다.
어쨌든, 기능은 제공할테니 잘 커스터마이징 해서 쓰세요! 의 입장이다 보니, 이런 행위에 익숙한 사용자들이라면 손에 착 달라붙게 사용할 수 있을 것이다. 이런 행위에 익숙한 사용자라면 보통은 프로그래머나 퍼블리셔라고 가정해도 될 것 같다.
예를 들어, 기본 테마상에는 태그/카테고리 출력을 지원하지 않는데, 다음과 같이 기능을 제공할 수 있다.
- 글을 포스팅 할때 YAML 헤더에
tag
와category
키워드를 입력할 수 있다. - 템플릿 언어인 Liquid 를 이용하여, YAML 헤더를 파싱하여 동적으로 글 목록을 생성한다.
또다른 예로, 동적으로 페이지를 생성한다고 가정해 보자.
다른 블로그 소프트웨어라면, 아마 RESTAPI 를 통해 글을 생성하거나 할 것이다.
그러나 이 경우엔, 단순히 마크다운으로 된 텍스트 파일만 _post
디렉토리에 던져놓으면 된다.
없는 기능은 만들면 된다. 무겁고 거대하지 않으니, 커스터마이징은 직접 하면 된다. 나처럼 잘 모르는 사용자에게는 불친절하기 짝이 없게 느껴지나, 사실은 손대는 대로 확장되는 놀라운 플랫폼이다. 그야말로 프로그래머를 위한 블로깅 플랫폼 이라고 볼 수 있겠다.
같이보시오
- jekyll 이 불편한 분들은 Ghost 블로그 플랫폼을 추천
- kramdown
- Liquid
- Jekyll docs
- 5 reasons you should use Jekyll
- Use Tags and Categories in your Jekyll based Github Pages without plugins