Showing posts with label Story. Show all posts
Showing posts with label Story. Show all posts

Thursday, November 23, 2017

애드센스(Adsense) 승인 완료기

드디어 기다리고 기다리던 애드센스 승인이 완료가 됐다!🙌(반갑워 흑인어린이 친구!)

10일가량 '설정 작업 진행 중' 늪에 빠져 조마조마 하게 기다리던 중 마냥 기다릴 수 없어
이것저것 몸부림 치던게 구글에 까지 닿았나보다ㅋㅋ
나와 같은 문제로 고민하고있을 누군가를 위해 몇가지 내가 했던 방법들을 적어 볼 까 한다.



마냥 승인을 기다리던 어느날 하루면 된다던게 10일을 기다리게 돼니 왠지 의심이 들었다. 이곳저곳에서 정보를 찾아보니 많은 사람들이 비슷한 문제로 고민하고 있었다.
그러다 우연히 이미 승인대기중인 아이디로 애드센스가입하기를 누르게 됐는데






위와같은 팝업이 뜨는걸 발견했다. 설정 작업 진행 중 페이지에서 위와같은 팝업이 뜨는걸 보게 됐다.
내가 애드몹에 가입을 했었...나? 싶어서 애드몹에 가보니 가입이 안돼있어서 어차피 나중에 앱광고도 넣을 예정이라 바로 가입을 하고 다시 돌아와 봤다.


애드몹 가입을 하고보니 뭔가 매뉴들이 활성화 되긴했지만 여전히 설정 작업 진행중..(이것은 된것도 안된것도 아니여)
그래도 뭔가 변화가 된거 같아 하루정도 더 기다려봤지만 뭔가 중간에 꼬인것 같은 느낌을 받아서 매뉴 왼쪽 하단에 '의견보내기'를 통해 스크린샷과 함께 상황을 설명했다.
그러고 반나절?만에 승인이 됐고 조금 지나니 광고가 잘 나오는걸 확인 할 수 있었다.
우연인지 아님 내가 했던 행동들이 효과가 있었는지 모르지만.. 누군가에게 도움이 됐으면 한다.

Wednesday, November 15, 2017

Popular Posts 수정기

무료 템플릿을 사용하다보니 문제가 한두가지가 아니다.(혹은 내가 뭔가 문제가 있던가😒)

메인 Post화면에서 kotlin 관련글 썸네일을 불러오지 못하더니 Popular post에는 불러와서 보여준다.. 아무튼 뭐 이건 나쁠건 없지만 문제는 이미지가 하나도 없는글이다.
썸네일이 없어서 공간을 무너트린다. 탭은 템플릿에서 제공하고 포스트 정보는 구글에서 제공하는 위젯이라... 템플릿제공자와 구글의 환상적인 콜라보? 우리 구글형이 그럴리 없어!
아무튼.. 오늘은 이걸 고쳐보고자 다시 블로그 소스를 펼쳐 문제가 되는 부분을 찾아봤다.


...그래도 양반인게 분기 주석을 잘 달아줬다.ㅋㅋ
<b:if> 라던가 expr이런 문법들은 익숙치 않아 다른 줄에서 사용한 것들을 참고해서
대충 느낌적인 느낌으로 수정을 시도해봤다.(JSTL 문인가..? 😏)
<b:if></b:if>가 한쌍으로 분기가 되는걸보고 if문 뒤에 <b:else></b:else>로 추가 분기분을 넣고 수정을 시도해봤지만.. Popular post탭이 전부 사라져버렸다.(아마도 오류때문에 html 태그 생성이 안된듯하다.)
한참을 다시 보고 이것저것 시도해본중! if-else 사용법이 틀렸다.
기본적으로
[if 태그 열고] [if 태그 닫고] [else태그 열고] [else태그 닫고]
순서로 하는거라 생각했는데 그게 아니었다.
[if 태그 열고] [else태그 선언하고][if 태그 닫고]
이렇게 분기를 해야했다.





이렇게 수정처리를 하고 블로그를 업데이트 했더니


드디어 맘에 들게 수정이 됐다!🙌

초반이라 그런지 거의 하루에 하나정도씩은 수정할게 생기는듯 하다.😭ㅋㅋㅋ

Tuesday, November 14, 2017

블로그 코드 하이라이트: 더 이상 복붙 노가다는 그만! (Prism.js, highlight.js 완벽 적용법)

개발자, 데이터 분석가, 혹은 IT 관련 지식을 공유하는 블로거라면 누구나 한 번쯤 겪는 고충이 있습니다. 바로 '코드'를 어떻게 블로그에 깔끔하고 보기 좋게 올릴 것인가 하는 문제입니다. 단순히 텍스트를 복사해서 붙여넣으면 가독성이 떨어지는 것은 물론, 들여쓰기가 망가지고 특수문자가 깨지는 등 온갖 문제가 발생합니다. 이런 문제를 해결하기 위해 등장한 것이 바로 '구문 강조(Syntax Highlighting)' 기술입니다.

많은 분들이 초기에 겪는 과정은 비슷합니다. 일단 글을 쓰고, 코드 부분을 HTML 편집 모드로 들어가 <pre><code> 태그로 감싸는 수작업을 반복합니다. 하지만 이는 한두 번なら 몰라도, 포스팅이 늘어날수록 엄청난 비효율과 스트레스를 유발합니다. 저 또한 이 과정을 겪으며 더 나은 방법을 찾아 헤맸고, 그 과정에서 발견한 몇 가지 방법과 최종적으로 정착하게 된 가장 효율적인 솔루션을 공유하고자 합니다.

이 글에서는 단순히 코드를 예쁘게 만들어주는 온라인 도구를 소개하는 것을 넘어, 한 번의 설정으로 블로그 전체의 코드 블록 스타일을 관리하고, 가독성과 전문성을 극대화할 수 있는 자바스크립트 라이브러리(Prism.js, highlight.js) 적용법까지 상세하게 다룹니다. 이 글을 끝까지 읽으시면 더 이상 코드 블록 때문에 골머리를 앓는 일은 없으실 겁니다.

1. 가장 쉬운 첫걸음: 온라인 코드 하이라이터

가장 먼저 접하게 되는 방법은 웹사이트 형태의 온라인 코드 변환기입니다. 별도의 설치나 설정 없이, 웹사이트에 코드를 붙여넣기만 하면 바로 스타일이 적용된 HTML 코드를 생성해주는 방식입니다. 급하게 한두 개의 코드 조각을 포스팅해야 할 때 매우 유용합니다.

1-1. Hilite.me 와 ColorScripter

원문에서 소개된 hilite.mecolorscripter.com과 같은 사이트들이 대표적입니다. 사용법은 매우 직관적입니다.

  1. 사이트에 접속하여 코드 입력창에 자신의 코드를 붙여넣습니다.
  2. 코드의 프로그래밍 언어를 선택합니다. (예: Java, Python, JavaScript)
  3. 원하는 디자인 테마(스타일)를 선택합니다.
  4. 'Highlight!' 또는 변환 버튼을 클릭합니다.
  5. 생성된 HTML 코드를 복사하여 블로그 글쓰기 에디터의 HTML 모드에 붙여넣습니다.
ColorScripter 사용 예시 화면

ColorScripter와 같은 온라인 도구는 직관적인 인터페이스를 제공합니다.

특히 ColorScripter는 생성된 코드를 복사해서 HTML 모드가 아닌, 일반 글쓰기 모드(Rich Text Editor)에 바로 붙여넣어도 스타일이 유지되는 편리함을 제공합니다. 하지만 이 편리함에는 몇 가지 명확한 한계가 존재합니다.

1-2. 온라인 도구의 한계점

  • 유지보수의 어려움: 블로그의 디자인을 변경하거나 코드 테마를 통일하고 싶을 때, 이전에 작성했던 모든 게시물을 하나하나 찾아 들어가서 HTML 코드를 수정해야 합니다. 이는 사실상 불가능에 가까운 작업입니다.
  • 과도한 인라인 스타일(Inline Styles): 생성된 HTML 코드는 <code><span style="color: #ff3399;"></code>과 같이 수많은 인라인 스타일 태그로 이루어져 있습니다. 이는 HTML 코드를 매우 지저분하고 길게 만들며, 웹 페이지 로딩 속도에 미미한 영향을 줄 수 있습니다.
  • CSS 충돌 문제: 원문에서도 겪었던 문제입니다. 블로그 스킨(테마)에 이미 정의된 CSS 스타일과 온라인 도구가 생성한 CSS 스타일이 충돌하여 줄 번호가 틀어지거나 레이아웃이 깨지는 현상이 발생할 수 있습니다. 원문에서는 아래와 같은 코드로 임시방편의 해결을 보았습니다.
/* 원문 작성자가 시도했던 CSS 수정 코드 예시 */
.colorscripter-code-table td:first-child div div {
    white-space: pre !important;
}

이처럼 특정 클래스를 찾아 강제로 스타일을 덮어쓰는 것은 좋은 해결책이 아닙니다. !important 속성은 다른 스타일과의 연쇄적인 충돌을 유발할 수 있기 때문입니다. 근본적인 문제는 이 방법이 '일회성'이며 '확장성'이 없다는 점입니다. 우리는 더 스마트하고 지속 가능한 방법이 필요합니다.

2. 전문가의 선택: 자바스크립트 구문 강조 라이브러리

온라인 도구의 단점을 완벽하게 보완하는 방법이 바로 자바스크립트 라이브러리를 활용하는 것입니다. 원리는 간단합니다. 블로그 스킨에 특정 자바스크립트 파일을 한 번만 추가해두면, 방문자가 페이지를 열 때마다 이 스크립트가 자동으로 페이지 내의 <pre><code>...</code></pre> 태그를 찾아 약속된 규칙에 따라 아름다운 스타일을 입혀줍니다.

장점은 명확합니다:

  • ✍️ 깨끗한 원본 글: 포스팅 시에는 순수한 텍스트 코드만 <pre><code> 태그로 감싸주면 끝입니다. 지저분한 인라인 스타일이 전혀 없습니다.
  • 🎨 일관성 및 유지보수: 블로그 스킨에 연결된 CSS 파일 하나만 수정하면 블로그 전체의 모든 코드 블록 디자인이 한 번에 변경됩니다.
  • ⚙️ 풍부한 기능: 줄 번호 표시, 복사 버튼 추가, 특정 줄 하이라이트 등 다양한 부가 기능을 쉽게 추가할 수 있습니다.
  • 🚀 성능: CDN을 활용하면 로딩 속도 저하도 거의 없습니다.

가장 대표적인 두 라이브러리는 Prism.jshighlight.js입니다. 각각의 특징과 블로그 적용법을 자세히 알아보겠습니다.


2-1. Prism.js: 가볍고 강력하며 확장성 높은 라이브러리

Prism.js는 '가벼움'과 '모듈성'을 핵심 가치로 삼는 라이브러리입니다. 필요한 언어와 플러그인만 선택해서 나만의 맞춤형 스크립트 파일을 만들 수 있어 불필요한 코드 로딩을 최소화할 수 있습니다. 현대적이고 깔끔한 디자인 테마로 많은 사랑을 받고 있습니다.

Prism.js 적용 5단계 (티스토리/Blogger 기준)

단 한 번의 설정으로 모든 준비가 끝납니다. 차근차근 따라 해보세요.

1단계: 나만의 Prism.js 파일 빌드하기

먼저 Prism.js 공식 다운로드 페이지에 접속합니다. 여기서 필요한 구성요소를 직접 선택해야 합니다.

  • Compression level: 'Minified version' (압축 버전)을 선택합니다.
  • Themes: 원하는 디자인 테마를 하나 선택합니다. 처음이라면 'Default'나 어두운 테마인 'Okaidia', 'Tomorrow Night' 등이 무난합니다.
  • Languages: 본인이 자주 사용하는 프로그래밍 언어를 모두 선택합니다. (예: Markup + HTML + XML, CSS, C-like, JavaScript, Java, Python, SQL, Bash...) 너무 많이 선택하면 파일 크기가 커지니, 꼭 필요한 것들 위주로 고릅니다.
  • Plugins: 매우 중요한 부분입니다! 활용도를 극대화할 수 있는 필수 플러그인들을 선택하세요.
    • Line Numbers: 코드 왼쪽에 줄 번호를 추가해줍니다. (필수)
    • Toolbar: 코드 블록 오른쪽 상단에 여러 버튼을 추가할 수 있는 기반이 됩니다. (필수)
    • Copy to Clipboard Button: Toolbar와 함께 사용되며, 코드를 쉽게 복사할 수 있는 버튼을 만들어줍니다. (강력 추천)
    • Line Highlight: 특정 줄을 강조하고 싶을 때 사용합니다. (선택)
    • Show Language: 코드 블록에 어떤 언어인지 표시해줍니다. (추천)

2단계: CSS 및 JS 코드 생성 및 복사

선택을 완료한 후, 페이지 하단으로 스크롤하면 'DOWNLOAD JS'와 'DOWNLOAD CSS' 버튼이 보입니다. 이 버튼을 클릭해서 파일을 다운로드할 필요는 없습니다. 우리는 CDN(Content Delivery Network)을 활용하여 더 빠르고 안정적으로 파일을 불러올 것입니다.

버튼 바로 아래에 생성된 코드가 있습니다. 이 코드를 복사해서 사용할 것입니다. 바로 이 코드가 여러분이 직접 선택한 기능들만 담고 있는 맞춤형 코드입니다.



<link href="생성된_CSS_링크.css" rel="stylesheet" />


<script src="생성된_JS_링크.js"></script>

만약 CDN 주소를 직접 얻고 싶다면, cdnjs 같은 CDN 사이트에서 직접 필요한 파일의 링크를 가져올 수도 있습니다.

3단계: 블로그 스킨 HTML에 코드 삽입하기

이제 복사한 코드를 블로그 스킨에 심어줄 차례입니다. 티스토리의 경우 [블로그 관리] → [스킨 편집] → [html 편집] 메뉴로 이동합니다.

  • CSS 파일 링크: 복사한 <link ... > 태그는 HTML 문서의 <head></head> 사이 아무 곳에나 붙여넣습니다. 다른 CSS 링크들이 모여있는 곳에 넣으면 관리가 편합니다.
  • JS 파일 링크: 복사한 <script ... > 태그는 페이지 로딩 속도를 위해 </body> 태그 바로 위에 붙여넣는 것이 가장 좋습니다.

4단계: 게시물에서 사용하기

모든 설정이 끝났습니다! 이제 글을 쓸 때 코드 블록을 삽입하는 방법은 매우 간단해집니다. 글쓰기 에디터를 HTML 모드로 변경하고, 아래 형식에 맞춰 코드를 작성하면 됩니다.


function sayHello(name) {
  // 템플릿 리터럴을 사용한 문자열 조합
  console.log(`Hello, ${name}!`);
}

sayHello('World');
  • <pre> 태그에 class="line-numbers" 를 추가하면 줄 번호 플러그인이 활성화됩니다.
  • <code> 태그에 class="language-xxx" 형식으로 프로그래밍 언어를 명시해줘야 합니다. (예: language-javascript, language-python, language-css)
  • 중요!: 코드 내에 <> 같은 HTML 특수 문자가 있다면, 반드시 &lt;&gt; 로 변환(HTML Escaping)해야 합니다. 대부분의 최신 에디터는 이 과정을 자동으로 해주거나, 온라인 'HTML-encode' 도구를 사용하면 편리합니다.

5단계: 결과 확인

이제 글을 발행하고 확인해보세요. 여러분이 선택한 테마와 플러그인이 적용된 아름다운 코드 블록이 나타날 것입니다. 오른쪽 상단에는 복사 버튼도 달려있을 겁니다.

function createPerson(firstName, lastName) {
  return {
    firstName: firstName,
    lastName: lastName,
    fullName: function() {
      return `${this.firstName} ${this.lastName}`;
    }
  };
}

const person = createPerson('John', 'Doe');
console.log(person.fullName()); // 결과: "John Doe"

Prism.js와 플러그인을 적용한 코드 블록의 최종 모습 예시


2-2. highlight.js: "그냥 작동하는" 쉬운 솔루션

highlight.js는 Prism.js와 쌍벽을 이루는 또 다른 인기 라이브러리입니다. 가장 큰 특징이자 장점은 '자동 언어 감지(Automatic language detection)' 기능입니다.

즉, Prism.js처럼 class="language-xxx"를 매번 지정해주지 않아도, highlight.js가 코드의 내용을 분석해서 "이건 파이썬 코드군!", "이건 자바스크립트야!" 하고 스스로 판단하여 알맞은 스타일을 적용해줍니다. 편의성 면에서는 최고라고 할 수 있습니다.

highlight.js 적용 4단계

적용 과정은 Prism.js보다 훨씬 간단합니다.

1단계: CDN 링크 가져오기

공식 사용법 페이지cdnjs와 같은 CDN 사이트로 갑니다. 두 개의 파일이 필요합니다.

  • CSS 테마 파일: 원하는 테마를 고릅니다. 수많은 테마가 있으니 미리보기 사이트에서 확인해보세요. (예: default.min.css, atom-one-dark.min.css)
  • JS 코어 파일: highlight.min.js 파일을 선택합니다. 이 파일 안에 수많은 언어 팩이 이미 포함되어 있습니다.

2단계: 블로그 스킨 HTML에 코드 삽입하기

Prism.js와 동일한 방법으로 스킨의 HTML을 편집합니다.

  • CSS 링크는 <head> 안에, JS 링크는 </body> 태그 바로 위에 삽입합니다.
  • 초기화 코드 추가: highlight.js는 라이브러리를 불러온 후, 이를 실행하라는 명령을 한 줄 추가해주어야 합니다.

3단계: 게시물에서 사용하기

이제 글을 쓸 때 HTML 모드에서 아래와 같이 아주 간단하게 작성하면 됩니다.


import pandas as pd

data = {'나라': ['한국', '미국', '일본'],
        '수도': ['서울', '워싱턴 D.C.', '도쿄']}
df = pd.DataFrame(data)

print(df)

놀랍게도 class를 지정하지 않아도 자동으로 Python 코드로 인식하여 스타일을 적용해줍니다. 물론, 감지 정확도를 높이고 싶거나, 자동 감지가 잘 안되는 언어의 경우 Prism.js처럼 <code class="python"> 과 같이 명시해주는 것이 좋습니다. (highlight.js는 'language-xxx'가 아닌 'xxx' 형식의 클래스명을 사용합니다.)

4단계: 결과 확인

글을 발행하면 hljs.highlightAll(); 스크립트가 페이지의 모든 <pre><code> 블록을 찾아 자동으로 색을 입혀줍니다.

# highlight.js (atom-one-dark 테마) 적용 예시
import numpy as np

def create_random_matrix(rows, cols):
    """
    지정된 크기의 랜덤 행렬을 생성합니다.
    """
    matrix = np.random.rand(rows, cols)
    return matrix

my_matrix = create_random_matrix(3, 4)
print(my_matrix)

3. Prism.js vs highlight.js: 무엇을 선택해야 할까?

두 라이브러리 모두 훌륭하지만, 약간의 지향점 차이가 있습니다. 선택에 도움이 되도록 표로 정리해 보았습니다.

특징 Prism.js highlight.js
핵심 철학 경량성, 모듈성, 확장성 편의성, 범용성, 자동화
파일 크기 필요한 것만 선택하여 매우 가볍게 구성 가능 다양한 언어를 기본 포함하여 상대적으로 파일이 큼
언어 감지 수동 지정(class="language-xxx")이 원칙. (Autoloader 플러그인으로 가능) 자동 언어 감지가 핵심 기능
부가 기능 플러그인 시스템이 매우 잘 되어 있음 (줄 번호, 복사 버튼 등) 플러그인 생태계가 상대적으로 약함. (일부 기능은 직접 구현 필요)
추천 대상 - 블로그 성능에 민감하고 최적화를 원하는 사용자
- 줄 번호, 복사 버튼 등 다양한 편의기능을 원하는 사용자
- 가장 쉽고 빠른 설정을 원하는 사용자
- 다양한 언어를 다루며 매번 클래스 지정이 귀찮은 사용자

개인적인 추천: 만약 당신이 "어떤 것을 써야 할지 정말 모르겠다"면, Prism.js에 필수 플러그인(Line Numbers, Toolbar, Copy to Clipboard Button)을 추가하여 사용하는 것을 권장합니다. 초기 설정이 5분 정도 더 걸릴 뿐이지만, 독자들에게 코드 줄 번호와 복사 버튼을 제공하는 것은 매우 큰 편의성을 주기 때문입니다.

결론: 스마트한 블로깅을 위한 최종 선택

개발 블로그에서 코드 블록의 가독성은 콘텐츠의 질을 결정하는 중요한 요소입니다. 더 이상 비효율적인 방식에 시간을 낭비하지 마세요.

온라인 코드 생성기는 급할 때 사용하는 비상약과 같습니다. 장기적이고 전문적인 블로그 운영을 위해서는 Prism.jshighlight.js와 같은 자바스크립트 라이브러리를 도입하는 것이 현명한 투자입니다.

한 번의 설정으로 블로그 전체의 코드 품질을 높이고, 독자에게는 쾌적한 읽기 경험을, 스스로에게는 글쓰기의 효율성을 선물하세요. 이 가이드가 여러분의 기술 블로그를 한 단계 더 성장시키는 데 도움이 되기를 바랍니다.

Monday, November 13, 2017

Adsense 1차 승인






드디어 기다리고 기다리던 애드센스 1차 승인이 됐다!(짝짝짝🙌)ㅋㅋㅋ
자동승인이라는 얘기는 들었지만 '현재 귀하의 블로그에서는 애드센스를 사용할 수 없습니다.'라는 멘트만 나오고 내가 따로 승인신청을 한것도 아니고 승인도 안돼서 불안해 하던 차에 거의 일주일이 조금 넘어서 1차 승인이 됐다.
멘트가 바뀌고 [애드센스 가입] 버튼이 생성돼 가입을 진행했다 ㅎㅎ
가입하고 광고 달면 끝이라 생각했는데 아직 승인 절차가 더 남았단다..
최대 1일의 시간이 걸린다는데.. 조용히 기다려 본다.
아직 블로그 총 방문자는 두자리수 남짓 일간 방문자수 0.2명쯤? 이지만 ㅋㅋ 언젠가 성장하겠지~!
나 스스로도 공부도 많이하고 더 좋은 정보를 나누는 공간이 됐으면 좋겠다.😊

Friday, November 10, 2017

Sitemap 오류 수정기

블로거 사이트맵 오류 해결: 썸네일 누락으로 인한 JavaScript 'undefined' 문제와 try-catch 해결법

블로그 운영에 있어 검색 엔진 최적화(SEO)의 중요한 부분 중 하나는 바로 사이트맵(Sitemap) 제출입니다. 저도 사용 중인 블로거(Blogger) 템플릿 제작자가 제공하는 가이드 문서를 보고 사이트맵 기능을 적용해 보았습니다.

블로거 사이트맵 적용 시도 중 발생한 JavaScript undefined 오류 화면
사이트맵 적용 후, 썸네일 관련 'undefined' 오류가 발생한 모습

사이트맵 적용 시도와 예상치 못한 오류

하지만 예상대로 한 번에 성공하지는 못했습니다. 😅 사이트맵 페이지를 확인해보니, 위 이미지처럼 일부 영역이 제대로 표시되지 않고 개발자 콘솔에는 'undefined' 관련 오류가 발생하고 있었습니다. "역시나 쉽게 되지 않는구나..." 하는 생각이 들었죠.

오류의 원인: 이미지 썸네일 누락과 JavaScript 중단

오류 메시지와 코드를 자세히 살펴보니, 게시물에 대표 이미지(썸네일)가 없는 경우, 썸네일을 처리하는 자바스크립트(JavaScript) 부분에서 값을 제대로 가져오지 못해 'undefined' 오류가 발생하며 스크립트 실행이 중간에 멈춰버리는 것이었습니다. 이 때문에 사이트맵 목록이 정상적으로 생성되지 못하고 있었습니다. (여담이지만, 템플릿 소스 코드가 정렬도 제대로 되어 있지 않아 분석하는 데 애를 먹었습니다.)

해결 과정: `try-catch`로 JavaScript 오류 극복하기

웹 개발 경험이 많지 않아 처음에는 `if`문으로 `undefined` 경우를 분기 처리하려고 시도했지만, 여전히 특정 지점에서 스크립트가 중단되는 현상이 해결되지 않았습니다. (아마도 `undefined`인 객체의 속성에 접근하려 할 때 발생하는 오류를 `if`문만으로는 완벽히 잡아내지 못한 것 같습니다.)

고민 끝에, 과거 자바(Java) 프로그래밍에서 예외 처리에 사용했던 try-catch 구문이 자바스크립트에도 동일하게 존재한다는 것을 알게 되었습니다. 이 `try-catch` 구문으로 오류 발생 가능성이 있는 코드 전체를 감싸주었더니, 드디어 문제가 말끔히 해결되었습니다! 🎉

자바스크립트 try-catch 구문을 적용하여 사이트맵 오류를 수정한 코드 예시
오류 발생 부분을 `try-catch`로 감싸서 예외 처리한 코드

추가 개선: 기본 썸네일(Default Thumbnail) 적용으로 완성도 높이기

오류는 해결했지만, 썸네일이 없는 게시물의 경우 이미지가 표시되지 않아 어딘가 비어 보이는 아쉬움이 있었습니다. 이를 개선하기 위해, 썸네일이 없을 때 보여줄 기본 이미지(디폴트 썸네일)를 설정하는 코드를 추가했습니다.

기본 썸네일 이미지를 적용하여 개선된 블로거 사이트맵 화면
기본 썸네일을 적용하여 모든 게시물에 이미지가 표시되도록 개선

이제 썸네일 유무에 관계없이 모든 게시물 항목이 일관된 형태로 표시되어 훨씬 보기 좋아졌습니다. 드디어 사이트맵이 제대로 작동하는 것 같아 뿌듯합니다! 😃

템플릿 코드의 어려움과 향후 과제

이번 사이트맵 오류를 해결하면서 다시 한번 느낀 점은, 제공받은 템플릿 소스 코드의 복잡성과 가독성 문제였습니다. 코드가 정렬되어 있지 않고, 일부는 암호화된 것처럼 보이기도 해서 오류가 발생할 때마다 원인을 찾고 수정하는 것이 쉽지 않았습니다. (없는 실력에 더더욱...)

가독성을 높이고자 웹 기반 코드 정렬 도구를 사용해 전체 소스를 정리해보기도 했지만, 이 과정에서 오히려 띄어쓰기 문제 등으로 새로운 오류가 발생하기도 했습니다. 물론 지금은 많은 부분을 수정하여 안정화된 상태입니다.

현재 블로그 로딩 속도도 다소 느린 편이라, 언젠가는 전체 템플릿 소스를 대대적으로 정리하고 최적화하는 날이 오지 않을까 하는 작은 희망을 가져봅니다. (과연... 🤔)

블로거에서 사이트맵을 설정하거나 자바스크립트 오류로 어려움을 겪는 분들께 이 글이 조금이나마 도움이 되었으면 좋겠습니다. 혹시 비슷한 경험이나 더 좋은 해결 방법이 있다면 댓글로 공유해주세요!

Wednesday, November 8, 2017

Page Navigation Custom

블로거(Blogger) 페이지 네비게이션 사라짐 현상, 이렇게 해결했어요! (pagenavi 오류 복구)

블로거 템플릿을 사용하다 보면 예기치 않게 페이지 네비게이션(페이지네이션)이 사라지는 경우가 있습니다. 저도 최근 템플릿 설정을 변경하던 중, 어느 순간부터인가 블로그 하단의 페이지 이동 버튼들이 감쪽같이 사라져 버렸습니다. 😭 원인을 정확히 파악하기 어려워 답답했죠.

블로거 템플릿에서 기본으로 제공되던 숫자 페이지 네비게이션 예시
사라지기 전, 템플릿에서 정상적으로 작동하던 페이지 네비게이션의 모습입니다.

문제 상황: 갑자기 사라진 블로그 페이지네이션

보시다시피, 글 목록 하단에 있어야 할 페이지 이동 링크가 보이지 않는 상태입니다. 이로 인해 이전 글들을 찾아보기가 매우 불편해졌습니다. 특히 콘텐츠가 많은 블로그일수록 페이지 네비게이션은 필수적인 기능이죠.

페이지 네비게이션이 사라진 블로그 하단 화면 - pagenavi 오류
페이지 네비게이션이 보이지 않는 문제 발생 화면

해결 과정: 사라진 페이지 네비게이션 복구하기

단순 설정 오류인지, 템플릿 코드 문제인지 파악하기 위해 몇 가지 단계를 거쳤습니다.

  1. 원인 분석 (크롬 개발자 도구 활용): 우선, 크롬 개발자 도구(F12)를 이용해 문제의 원인을 분석했습니다. HTML 코드를 살펴보니, 기존 네비게이션이 pagenavi라는 CSS 클래스와 연관되어 있음을 추측할 수 있었습니다.
  2. 구글링으로 해결책 검색: 이를 바탕으로 구글에 "Blogger pagenavi", "블로거 페이지네이션 복구", "Blogger navigation fix" 등의 키워드로 검색했고, 다행히 몇 가지 유용한 해결 방법을 찾을 수 있었습니다.
  3. 스크립트 및 CSS 적용: 검색한 자료 중 제 블로그에 적용 가능한 자바스크립트(JavaScript)와 CSS 코드를 찾아 블로그 HTML 편집 모드에 추가했습니다.
새롭게 추가한 자바스크립트 및 CSS 기반 페이지 네비게이션 적용 후 모습
새로운 코드를 적용하여 복구된 페이지 네비게이션

찾은 자료를 바탕으로 블로그 HTML 편집 모드에서 새로운 JavaScript 코드와 CSS 스타일을 추가하고, 제 블로그 환경에 맞게 약간의 수정을 거쳐 적용했습니다. 그 결과... 짠! 이렇게 새로운 페이지 네비게이션이 생겼습니다. 기존 템플릿의 '정품' 네비게이션보다는 다소 심플해 보이지만, 일단 급한 불은 껐습니다. 😄 추후 CSS를 좀 더 다듬어서 블로그 디자인과 잘 어울리도록 개선할 예정입니다. 😋

💡 중요 팁: 페이지당 게시물 수 일치시키기

새로운 페이지 네비게이션 스크립트를 적용할 때 매우 중요한 점이 있습니다. 스크립트 내의 perPage (또는 유사한 이름의 변수, 예를 들어 numPostsPerPage 등) 값과 블로거 '레이아웃' 설정에서 '블로그 게시물' 위젯의 '기본 페이지에 표시할 게시물 수'가 반드시 동일해야 합니다. 이 숫자가 일치하지 않으면 페이지별로 게시물이 제대로 표시되지 않거나, 마지막 페이지 계산 오류 등 예기치 않은 문제가 발생할 수 있습니다.

예를 들어, 스크립트에서 perPage = 7로 설정했다면, 블로거 레이아웃 설정에서도 한 페이지에 표시할 게시물 수를 7개로 맞춰주어야 정확하게 페이지가 나뉘고 모든 글을 문제없이 볼 수 있습니다.

참고 자료

제가 페이지 네비게이션 문제를 해결하는 데 큰 도움을 받은 자료는 다음과 같습니다. 비슷한 문제를 겪고 계신 분들께 유용할 것입니다.

혹시 저와 같이 블로거 페이지 네비게이션 문제로 어려움을 겪고 계신 분들께 이 글이 조금이나마 도움이 되었으면 좋겠습니다. 궁금한 점이 있다면 댓글로 남겨주세요!

Monday, November 6, 2017

blog 시작!

드디어 블로그의 제대로 된 첫 글이다.
블로그를 하려고 보니 무엇으로 시작할 지부터 고민이었지만 최종적으로 구글에서 서비스하는 Blogger를 '갓'구글형이니까라고 선택하게 됐다.
개인적으로 공부한 내용을 복습도 하고 스스로 꾸준한 공부를 하도록 압박(?)을 하기 위해서 개설했지만, 블로그를 운영해본 경험도 없고 설정을 하다 보니 욕심이 생겨서 이것저것 알아보다가 이제야 첫 글을 쓰게 됐다.
글을 써본 적도 없어서 존댓말로 써야 하나 반말로 써야 하나 반존대(?)를 해야 하나
맞춤법을 틀리면 어떡하지 하는 등의 고민이 꼬리에 꼬리를 물지만 일단은 하나하나 헤쳐가기로 하고 글을 써본다.
블로그의 목적은 위에서 말한 것처럼 공부한 것들의 복습용으로 올릴 예정이고 최대한 공식? 정식? 문서를 활용해서 기본에 충실하게 내용들을 채워볼까 한다.
아마 주 콘텐츠는 '안드로이드 개발'이 될 듯싶지만 프로그래밍 전반에 있어서 유용한 팁이나 정보들도 함께 올려볼 생각이다.