[Hexo] Github Page로 블로그 만들기 07

어..하는 김에 하는 포스팅이다..
사실 저번 포스팅을 마지막으로 블로그 만들기 포스팅을 끝내려했는데
해당 포스팅을 하다보니 한 가지 이슈가 생겨서 이렇게 별도 포스팅을 하나 더 하게 되었다.

예전 포스팅에 덫 붙이려했더니..나름 또 다른 주제같기도하고
저번 포스팅이 생각보다 길어질 거 같아서 이렇게 별도로 뺐다.

이야기하려는 건 마크다운에서 이미지를 넣는 방법이다.
…정말 별 거 아니지 않은가?

![이미지 이름](이미지 경로) 와 같은 형식으로 마크다운에 선언하면 알아서 이미지가 로드된다.
사실 나도 저게 끝인 줄 알았고, 그래서 별의심없이 사용했으며 별도의 언급을 하지 않았다.

기존 포스팅들에서는 딱히 이미지를 로드할 필요가 없었기에 사용하지 않은 기능이었는데
[Hexo] Github Page로 블로그 만들기 06을 작성하다보니
화면 캡쳐를 넣는 게 좀 더 이해에 좋을 것 같아서 2장의 이미지를 넣게 되었다, 위와 같은 마크다운 문법으로.

그리고 여기서 앞서 말했듯 한 가지 이슈가 발생했다.

그 이슈가 뭐냐면…포스팅의 상세 페이지에서는 이미지가 나오는데 메인 페이지에선 엑박이 뜬 것이다

처음엔 이게 뭥미? 싶었다.
개발자라면 누구나 그렇겠지만 이미지나 css,js 파일등이 로드되지 않으면 일단 경로부터 보곤한다.
나도 그래서 개발자 도구를 열어서 메인 페이지와 상세 페이지를 비교해봤는데
두 페이지가 각각 이미지를 로드할때 잡는 베이스경로가 달랐다.

블로그 주소가 localhost:4000 이고 마크다운에 이미지 경로가 ./test.png 예로 들어보자면
메인 페이지는 localhost:4000 이 베이스가 되어서 읽어오는 이미지의 경로가 localhost:4000/test.png가 되버리고 상세 페이지는 localhost:4000/year/month/day 가 베이스라서
localhost:4000/year/month/day/test.png 를 읽어오는 거다..

해당 문제가 발생한 원인은 _config.yml의 post_asset_folder 옵션을 true로 설정했기 때문이다.
그냥 편하게 source 아래에 image 폴더 같은 거 만들어서 무조건 저기에 몰아넣으면 편할수도 있겠지만..
블로그별 리소스 관리측면에선 해당 옵션이 true 인 편이 훨씬 편하기에 저렇게 사용하는 게 더 효율적이라 생각한건데
이런 함정이 나를 기다릴 줄은 몰랐다.

사실, 그전에 마크다운 문법인 ![이미지이름](이미지경로)로 할떄로 경로를 어떻게 잡아야 하나 한참 헤맸던터라
상세페이지에서 이미지가 뙇하고 나와줬을때 다 했다, 싶었는데..홈으로 가니 나오는 엑박을 보곤 정신적 피로감이 팡하고 터졌다.

게다가 관련 사항에 대해 구글링을 해봐도 잘 나오질 않아서 그냥 이미지 없이 글로만 설명할까, 란 생각도 했다.
하지만 앞으로 포스팅에 이미지를 하나도 안 넣을 것도 아니기에..어쩔 수 없이 나는 언제나 그렇듯 답을 찾아야 했다.


그래서 뭐 어떻게 해결한 건데?

해답은 의외로 쉬운 곳에서 나왔다.
아니, 어쩌면 당연히 해답이 있어야 할 곳에서 해답이 나왔다.

Hexo의 공식 가이드 중 Asset Folders 항목에 해답이 있었다.

해당 가이드를 읽어보면 아래쪽에 상대 경로 참조를 위한 태그 플러그인 이라는 항목이 있는데

해당 항목을 보면 마크다운 구문의 상대경로를 통해 asset 파일 참조 시 아카이브, 또는 인덱스 페이지에서 이를 표시하지 못 하는 문제가 있습니다
..라고 적혀있다. 그리고 그에따라 Hexo2에서 해결하기 위한 플러그인을 만들었고,,Hexo3에서 이를 위한 태그 플러그인들이 추가 되었다고 한다.

태그 플러그인이 무엇인지는 차후에 더 알아보도록 하고, 일단 위에서 나온 엑박 문제를 해결하기 위한 코드는 아래와 같았다.
위와 같이 post_asset_folder 옵션이 true일 때

{ % asset_img image.png % }

위와 같은 형식으로 마크다운 파일에 적어주면 상세페이지에서도, 메인 페이지에서도 이미지가 아주 잘 나온다.
(태그 플러그인의 이스케이프 문자가 먹질 않아서 중괄호와 퍼센트 사이를 띄웠는데, 실제 사용시엔 붙여야 한다)

다만 저 앞에 있는 asset_img 라는 단어를 img나 여타다른 임의 문구로 바꿨을 때는
hexo에서 자체 에러를 뿜뿜하는데 아마 태그 플러그인 내부적으로 asset_img 라는 단어를
시동어쯤으로 사용하는가보다, 하는 추측을 했다.

정리하자면, 포스팅에서 필요한 리소스 파일(이미지든 뭐든)이 있다면 생성된 디렉토리에 넣고
위와 같은 태그 플러그인으로 파일의 명을 명시하면 hexo가 알아서 로드를 해준다는 것이다.

..하,고작 이걸 위해 얼마나 시간을 날린거니 나ㅠㅠ..이번 포스팅은 여기까지.
다음엔 또 이렇게 태그 플러그인이라는 생소한 아이를 봐버렸으니 그에 대한 걸 다루지 않을까 싶은데..
6편으로 마무리 하려 했던 블로그 만들기 포스팅은 끝날 기미가 보이질 않는 것 같다.

좀 적당히 파고들어가는 성격이면 에라 됐다 싶을텐데..끙…
여튼 그럼 다음 포스팅에 보는 걸로 하자.

Share Comments

[Hexo] Github Page로 블로그 만들기 06

아마도 이게 Hexo로 블로그 만들기,의 마지막 포스팅이 되지 않을까 싶다.
여섯번째 포스팅의 주제는 댓글기능이다.
이카루스 테마 페이지에선 Comment 기능으로 언급되어있고, disqus라는 서비스를 사용할 계획이다.


disqus?

나도 사실 얘가 뭔지는 잘 모른다.
disqus의 홈페이지에 접속해보면
Disqus helps publishers increase engagement and build loyal audiences
라는 문구가 대문에 걸려있다.

뭐..구글 번역을 돌린 뒤에 나온 문구를 조금 의역해보자면
Disqus는 게시자와 다른 사람과의 소통을 원활히 할 수 있고 그로인해 원만한 사잇관계를 건설할 수 있다…
..라고 내 맘대로 의역해본다.

그냥 글 쓴 사람이랑 글 보는 사람이랑 서로 의견을 주고 받을 수 있는 대화의 장, 뭐 이런 느낌 이랄까.


disqus, 한 번 해보자.

일단 disqus 서비스를 이용하려면 당연한 이야기지만 해당 서비스에 가입을 해야한다.

disqus 홈페이지로 이동하여 가입을 하자.
가입을 하는 방법은 페이스북, 트위터, 구글 계정으로도 가능하며 찝찝하다면 Sign-up으로 가서 직접 가입하도록 하자.

가입을 하고 로그인을 했다면 메인화면에서 우측 상단에 있는 사람 모양의 아이콘을 눌러보자.

사람 모양의 아이콘을 누르면 위 이미지와 같은 메뉴들이 나오는데 저기서 Settings 를 눌러보자.

Settings를 누르면 나오는 화면이다.
사용자 모양의 아이콘을 누르고 Settings를 눌렀으니 당연히 해당 계정에 대한 설정 페이지로 이동을 하는데
이때 좌측에 떠 있는 메뉴 박스를 보면 Account 라는 항목이 있다.
이름만 봐도, 아 얘가 뭔가 계정 연계 같은 걸 담당하고 있을 것 같다 라는 느낌이 든다, 눌러보자.

누르면 위 이미지처럼 Accout 항목에 대한 설정이 나오는데 그 중에 가장 상단에 있는 Username 을 주목해야 한다.

위 스샷에서는 bli로 적혀있지만, 저건 글을 작성하는 나의 계정이 이미 적용된 직후라 그렇고
처음에는 뭔 소린지 알 수도 없는 문자들이 적혀있을 것이다.

해당 값이 disqus 기능을 사용하기 위해 필수로 알아야하는 계정의 값이며
몇몇 설정에서는 disqus shortname 이라고 쓰이기도 한다.

해당 값을 내가 사용하려는 username 으로 수정하고 저장해주자.
당연한 말이지만, 유니크한 값이며 여기서 명시한 이름을 통해서 disqus측에서 제공하는 댓글러 서비스를 이용할 수 있다.

댓글러 서비스란 몇 개의 사이트에서 해당 Account로 disqus 기능을 쓰는지 이번 주에 댓글은 몇 개인지등의
대시보드성 서비스를 제공해주는 것을 말한다. 이는 disqus 홈페이지에서 확인할 수 있다.

username을 설정했다면 꼭 기억해두도록 하자.
이제 아래에서 써야하니까.


이카루스 테마에 적용하기

사실 이 부분은 정말 간단하다.

이카루스 테마 안에 _config.yml 에 보면 Comment 설정값에 대한 영역이 있는데
여기에 disqus에서 할당받은 shortname(disqus settings 페이지에선 username)을 넣어주기만 하면 끝난다.

자동으로 설정이 되는 거다.

만약 이카루스 테마를 사용하지 않을 경우엔 disqus에서 할당해주는 스크립트 코드를 직접 넣어주거나
코멘트가 나와주길 바라는 레이아웃에 설정을 해줘야 하는데..이카루스 테마의 경우 이미 관련코드는 물론이고
설정값에 shortname을 넣는 것만으로 그 값을 읽어가서 그 간의 댓글과 멘트를 달아준다.

다만, 주의할 점이 있는데 이카루스 테마에서 사용할 경우
root 디렉토리의 _configy.yml에서 URL 설정을 별도로 해줘야 한다는 것이다.

URL 설정파트에 보면 url 이라는 설정항목이 있을텐데 이 값은 그간 블로그를 만드는 포스팅에서도 신경쓰지도, 건드리지도 않았었다.

값을 지정하지 않아도 블로그에 접속하는데 무리가 없어서다. 즉, 사실상 쓰이는 곳이 없다고 판단되었던 이유였다.
그런데 이번에 코멘트 기능을 넣으면서 발생했던 문제점이 있었는데 메인 화면의 포스트들 하단에 기존에 존재하던 Share 버튼 외에도 Comments 라는 버튼이 생성된 거다.
그리고 이 Comments 버튼을 누르면, 이상하게도 해당 포스트의 댓글들이 나와야되는데..Bookmark인지 뭔지 하는 이상한 사이트로 이동한다.

그래서 처음엔 이게 뭐지, 버그인가 싶었다.

이카루스 테마를 사용할 때는 별도로 무언가 설정이 필요한데 내가 미처 찾지 못 했나..어디지, 어디지 하며 한참을 헤맸다. 그러다 해당 버튼이 이동하는 링크를 복사해서 직접 봤는데…
http://yoursite.com/tech_blog/년/월/일/포스팅타이틀#코멘트 와 같은 형태였다.
즉, Comments를 누르면 해당 글로 이동해서 코멘트를 달 수 있도록 기능 설계가 되 있는 것이었다.

그리고 이때 쓰이는 값이 _config.yml에 설정된 url 값이었다.
(생각해보니 당연하다..호스팅 되는 주소를 코드내에서 알 리가 없지 않은가?)

그래서 이카루스 테마에서 disqus를 통해서 댓글 기능을 사용하려 한다면
url 설정값을 실제 호스팅되는 곳의 URL로 변경을 해줘야 한다.

그러면 아주, 잘, 동작을 할 것이다.
(물론 적용 후 로컬에서 테스트 하고 싶다면 localhost:4000 어쩌구로 해야겠지만, 실제 deploy할 땐 수정을 잊지 말아야 한다.)

Share Comments

[Hexo] Github Page로 블로그 만들기 05

저번 포스팅에서 예고했던 대로, 이번 포스팅에서는 _config.yml에 대한 몇 가지 설정 값을 포스팅 할 예정이다.
그러다보니 앞선 포스팅에서 필요할 때마다 언급했던 사항들이 중복으로 포스팅 될 수도 있음을 유의하자.
또한, 사용해 본 설정 위주의 포스팅이니 사용하지 않았거나 확인되지 않은 설정은 적혀있지 않다는 걸 기억해두기 바란다.


Site_사이트에 대한 기본 사항들

  • title : 웹 브라우저 상단 탭에 표시되는 타이틀이면서 일부 테마에선 메뉴바 Home 으로 쓰위는 위치에도 쓰인다.
  • author : 본인에 대한 정보. 본 블로그의 경우 최하단에 2018 Grey Lee 로 cc(creative commons)표시현용으로 쓰였다.
  • language : 메뉴나 기타 영역들에 대한 언어 설정. 보통 themes 아래에 있는 languages 디렉토리 아래에 yml 파일로 설정되어 있다.
  • timezone : 블로그에 반영되는 시간의 적용 기준.

URL_URL에 대한 정보들

  • url : 별도의 호스팅을 할 경우 설정이 필요하며 Github처럼 호스팅을 위한 배포처가 별도로 있을 경우 추가 설정이 필요없다.
  • root : generate한 정적파일들이 호스팅 서버에 올라갔을 경우의 root 디렉토리를 의미한다. github의 특정 레파지토리로 올릴 경우 해당 레파지토리명를 명시해야 한다.
  • permalink : 포스팅된 글로 이동시의 URL 형식을 의미한다.

Directory_파일들의 경로 설정

  • source_dir: source(post, page, draft)들이 들어가 있는 디렉토리 경로
  • public_dir: generate 한 정적 파일들이 떨어질 디렉토리 경로
  • tag_dir: tags 값에 관련된 파일들의 경로
  • archive_dir: archives 값에 관련된 파일들의 경로
  • category_dir: categories 값에 관련된 파일들의 경로

Writing_포스팅과 관련 된 기본 설정값들

  • new_post_name : hexo new post 를 통해서 포스팅 파일을 생성했을 때의 파일 이름의 기본형태
  • default_layout : hexo new 를 했을 때 세번쨰 인자로 post, page 등을 전달하지 않아도 생성되는 기본 형태
  • post_asset_folder : 생성된 포스트마다 리소스를 분류하기 위한 별도의 디렉토리를 함께 생성할지 여부
  • highlight : 코드들에 대한 테마 적용여부, 사용할 지(enable) 라인별 숫자를 넣을지(line_number) 등이 설정된다.

Pagination

페이지네이션은 상단의 index_generator와 좀 더 아래에 per_page로 나뉘어져 있다.

  • index_generator : 블로그 메인(Home)에서 아용되는 페이지네이션에 대한 설정. 한 페이지에 몇 페이지나(per_page) 보일지, 정렬순서는 어떻게(order_by)할지 설정한다.
  • per_page : 위의 index_generator pagination이 적용되지 않은 일반 페이지의 페이지네이션. Achives, Categories와 같이 리스트형으로 포스팅의 제목 정도가 나오는 영역에서의 페이지네이션.

Date/Time format_날짜와 시간의 형태

  • date_format : 날짜의 형태를 정의한다.
  • time_format : 시간의 형태를 정의한다.

theme_블로그에 테마 입히기

  • theme : 테마가 들어가 있는 디렉토리의 이름을 명시해주면 내부의 _config.yml의 값에 따라 테마가 적용된다.

Deployment_hexo deploy를 통한 배포처 설정하기

  • deploy : hexo deploy 명령을 하면 배포될 곳을 명시한다. 배포처의 타입(type)과 배포될 장소(repo), 그리고 해당 브랜치(branch)를 설정한다.
Share Comments