레이블이 Syntax Highlighter인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Syntax Highlighter인 게시물을 표시합니다. 모든 게시물 표시

2010년 12월 7일 화요일

Syntax Highlighter 3용 srt 자막 브러쉬 공개

Syntax Highlighter에서 .SMI 자막은 별도의 브러쉬가 필요하지 않다.
XML/HTML 브러쉬를 적용하면 충분히 예쁘게 보여줄 수 있다.

<SYNC Start=500><P Class=KRCC>
자막제작: BLUEnLIVE< br>
<font color=yellow>배포처: http://zoc.kr</font>
<SYNC Start=7500><P Class=KRCC>&nbsp;

하지만, (내가 선호하는) .srt는 적절한 브러쉬가 없다.
물론, XML/HTML 브러쉬를 적용하면 약간 비슷하게 보여줄 수는 있지만, 2% 부족하다.

다름아닌, 시간을 하일라이팅하지 않는다는 한계가 있다.

1
00:00:00,500 --> 00:00:07,500
자막제작: BLUEnLIVE
<font color=yellow>배포처: http://zoc.kr</font>

시간을 제대로 표시해줄 수 있는 .srt 전용 브러쉬를 만들었다.

1
00:00:00,500 --> 00:00:07,500
자막제작: BLUEnLIVE
<font color=yellow>배포처: http://zoc.kr</font>

브러쉬는 아래 링크에서 다운받을 수 있으며,


사용할 때는 아래와 같이 브러쉬를 지정하면 된다.

<pre class="brush:srt;">


2010년 7월 11일 일요일

Syntax Highlighter 3.0.83 적용!

by BLUEnLIVE | 2009/12/20 21:02

텍큐닷컴에서는 Syntax Highlighter를 지원한다. 비록 업데이트도 늦고(이건 뭐 파일만 바꿔치면 되는 건데... 쩝...) 한계도 좀 있지만, 고...


이미 이 바닥에선 살아있는 전설이 되어버린 Syntax Highlighter가 3.0으로 업데이트되었다. (이하 SH3이라 부름)


텍큐닷컴은 자체적으로 SH2를 지원하지만, 구버전인 2.0.320만 지원한다.
(지금은 2.1.364, 2.1.382를 거쳐 3.0.83까지 나왔음)

텍큐닷컴판 SH의 가장 큰 장점은 사용법이 무척 단순하다는 점이다.
코드를 입력한 뒤에 코드 앞뒤에 [code 언어] [/code]만 쓰면 끝이다.

하지만, 단순한 만큼 파라미터를 지정할 수 없고, 업데이트는 전무하다는 단점이 있다.
게다가 텍큐닷컴이 폐쇄 또는 합병의 절차를 밟고 있기 때문에 큰 것을 기대할 수도 없다.

몇 가지 상황을 고려해서, 아예 2.x 브렌치를 포기하고 3.x로 갈아타기로 했다.

3.0은 기존 버전에 비해 다음과 같은 개선이 있다.

1. 플래쉬 완전 제거

기존의 1.x, 2.x에서는 copy to clipboard 기능을 구현하기 위해 플래쉬를 사용했다.
하지만, 3.x에서는 플래쉬를 완전히 제거하고 브라우저의 기본적인 복사 기능만으로 이 기능이 동작하도록 구현했다.


2. 화면에서 코드 직접 선택 가능

2.x까지는 코드를 선택해보면 일부분만 선택되었다. (그래서 copy to clipboard 기능이 있었음)
하지만, 3.x에서는 원하는 범위까지 코드의 선택이 가능하다.

게다가 더블클릭하면 코드 전체를 선택해준다.


3. 자동 하이퍼링크 생성

코드 중에 하이퍼링크가 있으면 하이퍼링크를 클릭할 수 있도록 해준다.


4. XRegExp 사용

3.x는 정규식 확장 중 하나인 XRegExp를 사용한다.
(그래서 어쩌라고!)


5. CommonJS 완전 호환

(그래서 어쩌란 거냐고!)


6. CSS 지원 강화

CSS의 지원이 강화되었다. 게다가 SASS 3.0도 지원한다.
(다시 한번 말하는데, 그래서 어쩌란 거냐고!!!)


그런데, 이 SH3를 텍큐닷컴에서 그대로 사용할 수 없다.
적용은 가능하지만, 일부 코드가 정상적으로 출력되지 않는다.

그래서 약간의 수정을 가했다.

1. 치환자 입력을 위해 \#를 #로 변환

기존의 티스토리/텍스트큐브 용 SH에서도 적용했던 건데, 지금 와서 없애긴 뭣해서 다시 적용했다.
\#라고 입력하면 #로 출력해준다.
즉, [#\#_HELLO_#\#]이라고 쓰면 [##_HELLO##_]와 같은 치환자로 변신하는 것이다.


2. 코드 맨 앞과 맨 뒤의 <br /> 또는 엔터 제거

왜 생기는지는 모르겠지만, 가끔 이런 형태가 생기는 경우가 있더라.
그래서, 코드 맨 앞뒤에 엔터나 <br />이 있는 경우 제거하도록 했다.


설치하는 방법은 아래와 같다.

1. 파일 업로드

아래 파일을 다운받아 압축을 푼 뒤에 스킨 편집 → 파일 업로드를 통해 업로드한다.



2. 스킨 수정

아래의 코드를 스킨에 삽입한다.

여기서 주의할 점이 몇 가지 있다.


a. <body>에 코드를 삽입해야 함

<head>가 아니라 <body>의 맨 앞에 넣어야 한다.
텍스트큐브닷컴은 <head> 내에 자바 스크립트 코드를 집어넣으면 씹어먹는다.


b. css는 소문자로 업로드 됨

이것 역시 텍스트큐브닷컴의 특성인데, 이미지 파일은 파일명이 그대로 유지되는 것에 비해, css 파일은 소문자로 바뀌어 올라간다.


c. 블로그 이미지 주소를 찾아서 적어야 함

텍스트큐브의 문제점 중 하나인데, 주소에 "./images/"를 적으면 제대로 인식하지 않는다.
그래서, 블로그 이미지 주소를 찾아서 직접 적어줘야 한다.

※ 류청파(koc/SALM) 님이 피를 토하며 댓글을 달고, 관련 글을 쓰셨다. ./images를 적으면 된다고.
하지만, 이론은 이론일 뿐 실제로 적용해보지 않은 이론은 별 쓸모 없더라.
여전히 텍스트큐브닷컴은 종종 상대주소를 인식하지 못한다.

<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shCore.gif"></script>

<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushMsx.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushAvs.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushNasm8086.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushAS3.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushBash.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushColdFusion.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushCpp.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushCSharp.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushCss.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushDelphi.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushDiff.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushErlang.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushGroovy.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushJava.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushJavaFX.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushJScript.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPerl.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPhp.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPlain.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPowerShell.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushPython.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushRuby.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushSass.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushScala.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushSql.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushVb.gif"></script>
<script type="text/javascript" src="http://블로그 이미지 주소/images/j_shBrushXml.gif"></script>

<link type="text/css" rel="stylesheet" href="http://블로그 이미지 주소/shthemedefault.css"/>
<link type="text/css" rel="stylesheet" href="http://블로그 이미지 주소/shcoredefault.css"/>

<script type="text/javascript">
//<![CDATA[
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
//]]>
</script>


덧1. SH3는 계속 업데이트 되고, 새로운 테마와 언어 파일을 받을 수 있다.
추가 다운로드는 SH3 홈페이지를 확인하기 바람.


덧2. 내 블로그에서는 주석이 잘못 표시되는 문제가 있었다.
확인해보니, 블로그 스킨(css)에 .commentsdisplay가 정의되어 있었다.
아래의 내용을 style.css에 추가해서 해결했다.

.syntaxhighlighter .comments {
    display:inline;
}

2009년 12월 20일 일요일

텍큐닷컴 용 Syntax Highlighter 2.0 버그 패치

텍큐닷컴에서는 Syntax Highlighter를 지원한다.
비록 업데이트도 늦고(이건 뭐 파일만 바꿔치면 되는 건데... 쩝...) 한계도 좀 있지만, 고무적인 것은 사실이다.

이 기능을 사용하려면 환결설정-글쓰기에서 아래와 같이 체크만 하면 된다.

근데 웬 Code Highlighter? 정식 명칭은 Syntax Highlighter란 말이다!


하지만, 이 기능은 버그가 하나 있는데, Copy to clipboard를 클릭한 뒤 붙이면 앞에 &nbsp;가 붙는 버그이다.

이 버그를 해결하려면 다음과 같이 하면 된다.


1. 관련 파일 설치

아래 파일을 다운받아 압축을 풀어 스킨 올리기를 통해 업로드한다.




2. 스킨 수정

스킨 제일 마지막 부분에 있는 </body> 앞에 아래와 같이 적는다.
이 때 추가적으로 사용하고 싶은 브러쉬(언어) 파일이 있으면 함께 적으면 된다.

<script type="text/javascript" src="http://(블로그 이미지 주소)/j_shCore.gif"></script>
<script type="text/javascript" src="http://(블로그 이미지 주소)/j_shBrushMsx.gif"></script>
</body>


이렇게 수정하면 아래와 같이 제대로 동작하는 모습을 볼 수 있다.


이렇게 동작하는 원리는 간단하다.
SH의 앞부분은 아래와 같다.

if (!window.SyntaxHighlighter) var SyntaxHighlighter = function() {


이 코드를 통해 SH는 여러번 정의되면 그 중 제일 앞에 있는 것만 사용되도록 되어있는데, 텍큐닷컴에서 제공하는 shCore.js보다 먼저 버그가 수정된 j_shCore.gif[footnote]확장자는 .gif이지만, 실제로는 .js 파일임[/footnote]를 등록시키는 것이다.

2009년 12월 19일 토요일

텍큐닷컴은 Syntax Highlighter을 개선하라!

텍큐닷컴이 티스토리에 비해 장점으로 내세웠지만, 의외로 단점이 될 수 있는 것이 바로 Syntax Highlighter(이하 SH)이다.

이 SH는 텍큐닷컴 자체에서 지원해주기 때문에 일단 코드의 입력이 너무 쉽다는 장점이 있다.

원래는 SH을 사용하려면
<pre class="brush:html">
  HTML코드
</pre>

또는
<script type="syntaxhighlighter" class="brush:html"><![CDATA[
  HTML코드
]]></script>

와 같이 장광설을 늘어놓아야 했으며, 그것도 HTML 편집 모드에서 해야 하기 때문에 눈 빠지는 경험을 했어야 했다.

하지만, 텍큐닷컴에서는
[ code html]
  HTML코드
[ /code]

와 같이 간단하게 사용할 수 있다.
(위의 예에서 [ code], [ /code]는 실제로는 공백이 없도록 적어야 함)


하지만, 텍큐닷컴 측의 무관심 덕분에 다른 단점들이 대폭 부각되고 있다.
지금까지 식별된 다섯 가지 단점들을 정리했다.


1. 버그

SH의 버튼 중에 "copy to clipboard"가 있다. 글자 그대로 코드를 클립보드로 보내는 버튼이다.
그런데, 이 버튼을 클릭하면 아래 캡쳐화면처럼 &nbsp;가 잔뜩 달라붙는 문제가 발생한다.


이 문제는 SH의 버그는 아니고, SH와 텍큐닷컴 사이에 발생하는 일종의 충돌이다.
(SH 홈페이지에서는 이 문제가 발생하지 않음)
즉, 이 문제는 텍큐닷컴 측에서 수정을 해줘야 한다. 하지만, 이 문제를 아는지 모르는지 그것조차 알 수 없다.

원래 이 SH를 티스토리용으로 공개할 때는 이 버그를 패치한 상태로 공개했지만, 텍큐닷컴으로 온 지금은 방법이 없다. ㅡ.ㅡ;



2. 버전 업

현재 SH 홈페이지에서 공식적으로 배포하는 버전은 2.1.364로, 2009년 10월에 발표되었다.
하지만, 텍큐닷컴에서 지원하는 버전은 2.0.320으로 이건 5월에 발표된 것이다.
일부 버그도 패치되었고, 새로운 기능도 있는데 왜 버전업을 하지 않는지 이해가 안간다.

추가된 기능 중에는 <pre> 태그 대신 <script> 태그를 사용할 수 있는 기능도 있는데, 이 기능을 사용하면 처음 페이지가 로딩될 때 <pre> 태그의 코드를 보여주지 않아 조금 더 깔끔한 출력을 보여줄 수 있다.



3. highlight 기능 지원

SH의 강점 중 하나가 원하는 행을 강조하는 기능이다.
아래와 같이 적으면 1,2,4 행을 강조해서 보여준다.

<pre class="brush:html;highlight:[1,2,4]">
  HTML코드
</pre>


하지만, 이런 기능을 지원하지 않는다.

[ code html(1,2,3)]
  HTML코드
[ /code]


이러한 형식으로 입력한 경우 괄호 안의 내용을 변환하도록 하면 좋을 것 같다.

(내용 추가: '09.12.20)

현재에도 아래와 같은 꼼수를 사용해서 highlight 기능이 사용이 가능하다.

[ code html;highlight:(1,4)]
  HTML코드1
  HTML코드2
  HTML코드3
  HTML코드4
[ /code]


가능은 하지만, 번거로운데다가 정규식의 꼼수를 사용하는 것이라 텍큐닷컴에서 깔끔하게 사용할 방법을 제공하면 좋겠다.



4. 추가 문법 지원

원래 SH의 강점 중 하나는 추가적으로 문법과 테마를 추가할 수 있는 점인데, 시스템에서 지원하는 과정에서 이런 자유도가 떨어졌다.
테마나 문법을 추가할 수 있는 방안을 제공해야 한다.



5. SH로 표현할 수 없는 표현 추가

[ code] ~ [ /code]로 코드를 묶기 때문에 [ code ]를 SH로 표현할 수 없다.
자기 자신을 표현할 수 있는 우회책을 마련해야 한다.
Syntax Highlighter가 Syntax를 표현할 수 없다니!!


2009년 11월 14일 토요일

Syntax Highlighter 2.1.364 업데이트

무려 1달이나 전에 Syntax Highlighter가 2.1.364로 업데이트되었다.
이제야 알았다는 아쉬움을 뒤로하고, 바로 티스토리에 적용했다.

사용자 삽입 이미지


이번 패치 역시 많은 양의 버그 패치와 더불어 약간의 기능 추가 및 변화가 있다.

수정된 주요 기능은 아래와 같다.

- ruler 기능 제거. 아무도 안 쓰는 것 같아서임
- line wrapping이 모든 환경에서 정상 작동
- expand source를 show source로 변경
- <pre> 태그 외에 <script> 로 사용 가능 (updated usage page)
- 테마 파일 구성의 변경 (즉, 기존에 자체적으로 만든 테마가 있으면 사용 불가 ㅡ.ㅡ;)

더 자세한 변경된 기능은 공식 홈페이지에 올라온 변경 내역를 참고하기 바란다.

이 중 가장 주목할만한 기능은 <script> 태그이다.
기존의 사용법은 아래와 같았다.


이것을 아래와 같이도 쓸 수 있다.


이렇게 <script> 태그를 사용하면 아래와 같은 장단점이 있다.

장점
- 티스토리 새관리의 개같은 버그<pre> 태그에 지맘대로 <br />을 붙이는 버그에서 해방
- <pre>를 사용하면 하일라이팅 되지 않은 코드가 보였다 하일라이팅된 모양으로 변하는데, 이런 깜박임이 없어짐

단점
- 위지윅 편집기에서 볼 수 없음 ㅡ.ㅡ;


설치는 아래의 파일을 다운받아 압축푼 뒤, 스킨 업로드로 올린 뒤에 스킨을 수정하면 되며, 세부 수정 방법은 티스토리에 Syntax Highlighter 2.0 적용하는 방법 포스트를 참고하면 된다.


이 스킨에는 기존에 공개한 스킨에 포함된 아래의 패치가 모두 포함되어있다.

- 치환자 입력 가능
- 언어팩 추가: MSX, AviSynth
- Copy to Clipboard 버그 수정


덧. 이 버전을 적용하면서 커맨트 영역이 제대로 출력되지 않는 문제가 발생했다.
여러모로 확인한 결과 스킨 css의  .post  .commentsSH의 .comments충돌한다는 것을 알게되었다.

이 문제를 해결하려고 Firefox+Web DeveloperInternet Explorer 8개발자 도구를 사용해봤는데, 결국 IE8로 찾았다.

IE8이 여전히 다수의 문제점을 안고 있는 브라우저이긴 하지만, 엄청난 발전이 있던 것도 사실이다.
IE8의 개발자 도구는 css의 충돌을 찾는데 있어서 최적의 도구이다.

사용자 삽입 이미지

저렇게 엔터를 끼워넣은 적이 없다구!


2009년 9월 8일 화요일

Syntax Highlighter 2.0용 x86 어셈블리 브러쉬 공개

Visual Studio 계열 쉬프트(>>) 연산 버그의 원인이라는 뻘포스팅을 하면서 보니 Syntax Highlighter에 어셈블리 브러쉬가 없더라. 워낙 기본적인 언어라 있을 것 같기도 한데 참...

아뭏든, 하나 있으면 좋을 것 같아 만들어봤다.
일단, 아래 파일을 다운받아 압축을 풀고 올리고 나서


아래의 내용을 HTML 헤더에 추가한 뒤에

<script type="text/javascript" src="scripts/shBrushAsm.js"></script>

아래와 같이 적으면 된다.

<pre class="brush: asm;">어셈블러 코드</pre>

brush 명은 asm 또는 x86을 사용하면 된다.
기타 자세한 설명은 기존 포스팅을 참고. (어짜피 이거 쓰려는 분들은 뭔지 잘 아실 것이니 자세한 설명은 생략)
적용한 화면은 아래와 같다.

사용자 삽입 이미지

그런데, 문제가 있다.
당연한 얘기지만, SH의 브러쉬는 거대한 정규식 덩어리다.
주석 역시 정규식으로 지정되어 있는데, 하필 어셈블러의 주석은 애매하기 짝이 없는 세미콜론(;)이다.

이건 단독으로는 평범한 문자이지만, &nbsp; 와 같이 사용될 때는 의미를 갖기 때문에 정규식으로 구성하기가 너무 어렵다.
현재는 아래와 같이 애매하게 지정해뒀다.

{ regex: /^;.*$/gm,     css: 'comments' },            // one line comments
{ regex: /\s\;.*$/gm,     css: 'comments' },          // one line comments

즉, 행의 맨 처음이거나 바로 앞에 공백이 있는 경우만 주석으로 처리하는 것이다.
이게 문제가 될 수 있는 것이 mov ecx, 32;00000020H 처럼 쓰는 경우엔 주석으로 인식을 못 하는 거다.

정규식으로 &문자열; 의 포맷이 아닌 경우를 찾는 방법을 못 찾아 미봉책만 쓴 것이다.

혹시 이런 경우에 사용할 수 있는 정규식을 아시는 고수분 계시면 한 수 가르침 부탁드린다.




2009년 5월 15일 금요일

Syntax Highlighter 2.0.320 업데이트

사용자 삽입 이미지


며칠 전(정확히는 5월 3일)에 Syntax Highlighter가 2.0.320으로 업데이트 되었다.
2.0.320을 티스토리에서 사용할 수 있도록 수정한 버전을 공개한다.

아래 파일을 다운받아 설치하면 된다. (상세한 설치방법은 티스토리에 SH 2.0 적용하는 방법을 참고하기 바란다)



덧1. 이번 업데이트에서 수정된 내용은 아래와 같다. (원문: Syntax Highlighter Changes 3.0.20)

1. 속도 향상
2. stripBrs 옵션 추가 (행의 끝에 있는 <br/> 무시)
3. wrap-lines 옵션 추가
4. font-size 인자 제거
5. 마우스 커서가 올라갈 때만 도구 표시
6. 언어팩 추가: ActionScript3, JavaFX, PowerShell
7. 라이센스 정정: LPGL 3.0


덧2. 이 배포판에는 티스토리에 SH 2.0 적용하는 방법 (재게시)에서 수정된 내용이 모두 포함되어 있다.

1. 치환자 입력 가능
2. 언어팩 추가: MSX, AviSynth
3. Copy to Clipboard 버그 수정

2009년 4월 8일 수요일

티스토리에 Syntax Highlighter 2.0 적용하는 방법 (재게시)

사용자 삽입 이미지

티스토리에 Syntax Highlighter 2.0 적용하는 방법에서도 적었듯이, Syntax Highlighter 2.0은 많은 개선이 있었지만, 아이러니하게도, 티스토리에서 널리 사용되는 hi8ar.net님의 화이트보드 스킨에서는 정상동작을 하지 않았습니다.
(그래서 그 포스팅은 2.0을 적용하는 방법을 적은 글이지만, 1.5.1 환경에서 작성되었습니다)

원인은 스킨의 article.css.article code 속성이 shCore.css.syntaxhighlighter code 속성과 충돌하는 것입니다.
이 오류를 해결하려면 shCore.css에 다음 내용을 추가하면 됩니다.
.syntaxhighlighter code
{
    display: inline;
    overflow: visible;
}
직접 패치가 귀찮으면 아래 링크에서 다운받으시면 됩니다.


이 버전은 화이트보드 스킨과의 충돌을 해결한 것 외에도 아래의 기능들을 수정 보완했습니다.

1. 치환자 입력 가능

1.5.1에서도 추가했던 기능입니다. 아래와 같이 입력하면
[#\\#_title_#\\#]
이렇게 치환자를 입력할 수 있습니다.
[#\#_title_#\#]


2. 추가 언어파일 지원

1.5.1에서 추가했던 파일들을 2.0 환경에서 사용할 수 있도록 변환했습니다.
아래와 같이 지정하면 MSXAviSynth의 언어파일을 사용할 수 있습니다.
<script type="text/javascript" src="./images/shBrushMsx.js"></script>
<script type="text/javascript" src="./images/shBrushAvs.js"></script>


3. Copy to Clipboard 버그 수정

Syntax Highlighter 2.0.296은 Copy To Clipboard에서 &nbsp;가 그대로 복사되는 버그가 있습니다.
이 버그를 수정했습니다.

사용자 삽입 이미지

이 문제가 해결되었습니다. ㅡㅡ;



2009년 4월 6일 월요일

티스토리에 Syntax Highlighter 2.0 적용하는 방법

사용자 삽입 이미지

블로그 관련 to-do 리스트에서 공지한 사항 중 하나인 Syntax Highlighter 2.0을 티스토리에서 적용하는 방법입니다.
많은 분들이 관련 글을 올려주셨는데, 이상하게 한 가지는 모두들 빠뜨리시더군요. 그 부분을 포함해서 설명하겠습니다.

우선 2.0이 기존의 1.5.1에 비해 바뀐 부분은 아래와 같습니다.

1. CSS 형식테마 기능
2. 지정된 행의 강조
3. 자동 줄넘김 기능
4. XHTML 표준 준수


이 과정에서 형식이 약간 변경되었습니다.

1. 인자 형식의 변경
   <pre name="code" class="html">의 형식에서 <pre class="brush:html;">의 형식으로 변경되었습니다.

2. 실행 함수 이름과 위치의 변경
   dp.SyntaxHighlighter.HighlightAll('code'); 가 html의 마지막에 위치하는 것에서
   SyntaxHighlighter.all(); 가 html의 헤더에 위치하는 것으로 변경되었습니다.
   (1.5 시절에 입력된 내용을 위해 호환 모드도 지원합니다)

3. <pre>, <textarea> 에서 동작되던 것이 <pre>에서만 동작하도록 변경
   <pre>에서만 동작되며, <textarea> 등의 다른 태그에서 동작시키려면 별도로 지정해야 합니다.


설치 및 사용법은 아래와 같습니다.


1. 관련 파일의 설치

아래 링크에서 다운받은 파일의 압축을 푼 뒤 스킨 올리기 기능을 이용해서 올립니다.


이 파일에는 SH 2.0의 기본 언어 외에 AviSynth 스크립트MSX 베이식 언어 파일이 포함되어 있습니다.


2. 스킨의 수정

스킨 앞부분, 정확히는 </head> 앞부분에 아래의 내용을 추가합니다.
    <script type="text/javascript" src="./images/shCore.js"></script>
    <script type="text/javascript" src="./images/shBrushCpp.js"></script>
    <script type="text/javascript" src="./images/shBrushCSharp.js"></script>
    <script type="text/javascript" src="./images/shBrushCss.js"></script>
    <script type="text/javascript" src="./images/shBrushDelphi.js"></script>
    <script type="text/javascript" src="./images/shBrushDiff.js"></script>
    <script type="text/javascript" src="./images/shBrushJScript.js"></script>
    <script type="text/javascript" src="./images/shBrushPlain.js"></script>
    <script type="text/javascript" src="./images/shBrushXml.js"></script>
    <script type="text/javascript" src="./images/shBrushMsx.js"></script>
    <script type="text/javascript" src="./images/shBrushAvs.js"></script>
    <script type="text/javascript" src="./images/shLegacy.js"></script>
    <link type="text/css" rel="stylesheet" href="./images/shCore.css"/>
    <link type="text/css" rel="stylesheet" href="./images/shThemeViolet.css"/>
    <script type="text/javascript">
        SyntaxHighlighter.config.bloggerMode = true;
        SyntaxHighlighter.config.clipboardSwf = './images/clipboard.swf';
        SyntaxHighlighter.all();
    </script>
</head>
주목해야 할 부분은 16행의 ~bloggerMode = true;입니다.
티스토리의 위지윅 화면에서 코드를 입력하면 각 행의 끝에 <br> 태그가 삽입되는데, 대부분의 포스트에서 이 <br> 태그를 지우라고 적었더군요.
그런데, 이와 같이 설정하면 각 행의 <br>을 자동으로 엔터로 변환합니다.
즉, 위지윅 화면에서 코드만 입력하는 것으로 충분하단 얘기입니다.
(이 내용이 앞에 적은 다들 빠뜨린다는 바로 그 부분입니다)

만약 새롭게 2.0을 사용하는 것이 아니라 1.5를 사용하시던 분이라면 스킨 맨 마지막 부분에 아래 내용을 추가해야 합니다.
    <script type="text/javascript">
        dp.SyntaxHighlighter.HighlightAll('code');
    </script>
</body>
이 코드는 기존 방식으로 입력된 내용을 2.0의 방식으로 내부적으로 호출해주는 코드입니다.


3. 코드에 태그 추가

위지윅에서 코드를 입력한 뒤에 HTML 편집화면으로 이동해서 코드의 앞뒤에 <pre> 태그를 씌웁니다.
뒷부분에는 그냥 </pre>만 씌우면 되지만, 앞부분은 조금 신경써야 합니다.
<pre class="brush:c-sharp; highlight:[3,5];">
속성값 중 highlight는 강조할 행을 표시할 떄 사용합니다.


4. 문제점

SH2.0은 웹 표준 준수를 비록하면 많은 부분에서 안정성을 꽤했습니다.
하지만, 아이러니하게도 제가 지금 사용하는 hi8ar.net님의 화이트보드 스킨에서는 정상동작을 하지 않습니다.


2009년 3월 25일 수요일

블로그 관련 to-do 리스트

1. bluenlive.net과 whysoserious.kr 재통합

이게 무슨 딴날당과 친박연대 합치는 소리냐마는요...
블로그를 둘로 쪼개고나니 어느 한 쪽도 제대로 운영이 되지 않는다는 생각이 들었습니다.
게다가, bluenlive.net 메일 주소는 다른 사람들에게 불러주기도 약간 불편하더군요.

그래서 두 블로그를 통합하고, 새로운 도메인(zoc.kr)을 사용할 예정입니다.

a. http://zoc.kr, ha@zoc.kr 를 활성화
b. 새로운 메일 계정으로 새 티스톨 블로그 생성
c. 마지막으로 데이터 모아서 이전개업

이런 순서로 진행할 예정입니다.



2. 스킨 변경

두 블로그를 합치고 나면 스킨은 완전히 다른 스타일로 바꿀 예정입니다.
요즘 워드프레스 스킨을 티스토리용으로 변환한 게 많더군요. 그런 방향으로 갈 생각입니다.

참, 트루타입 글꼴은 작별 예정입니다. 구닥다리 LCD 모니터 등 의외로 가독성이 떨어지는 환경이 많더군요.



3. 자체 flv 플레이어 적용

사용자 삽입 이미지

예쁜 플레이어 하나 적용하고, flv 파일을 직접 올릴 예정입니다.
광고가 뜨는 것이 그닥 보기 좋지 않군요.

이 작업을 하면서 [터미네이터 2] 포스트 동영상의 부활을 추진할 예정입니다.
유튜브여 안녕~

플레이어 코드 보기...




4. syntax highlighter 2.0 적용

사용자 삽입 이미지

Syntax Highlighter가 2.0으로 업그레이드 되었습니다.
속도도 빨라졌다고 하고, 테마 기능도 지원하는군요.

하지만, 적용을 위한 코드가 약간 변경되었더군요.
기존 컨텐츠를 위해서 레가시 모드도 지원하던데, 그런 거 적용하지 않고 기존 코드를 몽땅 수정할 예정입니다.




5. cumulus 태그 플러그인 적용 가능성 검토

QAOS의.com의 mepay님 의견을 검토한 결과, 적용 가능성을 검토하기로 했습니다.

여기에서 볼 수 있는데, 느낌이 아주 좋습니다. 가능한 적용할 방법을 찾아볼 예정입니다.

사용자 삽입 이미지


6. BBCode 플러그인 수정

이번에 희대의 괴작 IE8이 나왔는데, BBCode를 제대로 변환하지 못하는 버그가 발생합니다.
IE8... 니들 정말 실망 시키지 않는구나. 언제나 개판이야.

IE8에서도 잘 돌아가도록 수정할 예정입니다.

그리고, 리스트 코드 [list] 를 추가할 예정입니다.
필요하기 때문에 적용할 예정이지만, 깔끔한 코드 구현은 어려울 듯 합니다... ㄷㄷㄷ



2009년 1월 13일 화요일

Code Highlighter 마이너 버그패치

블로그팁 : Code Highlighter 더 쉽게 사용하기에 올렸던 내용의 마이너 버그패치입니다.


일부 테마에서 Code Highlighter가 약간 깨진다는 보고가 있었습니다.
(Butterfly (Purple) ver.1.0 에서 확인했습니다)
하지만, 좀 바빠서(라고 쓰고는 게을러서라고 읽는다) 손을 대지 못하고 있었는데, 오늘 수정하게 되어 올립니다.

사용자 삽입 이미지

이게 뭥미~


스킨의 css스타일과 SyntaxHighlighter.css의 css스타일이 충돌이 난 것이 원인인데요, 이럴 땐 그저 만병통치약 !important가 짱입니다.

.dp-highlighter ol li span에서 padding!important를 추가했습니다.
아래와 같이 말이죠.

.dp-highlighter ol li span 
{
 margin: 0;
 padding: 0!important;
 border: none!;
}


이것만 수정하면 아래와 같이 정상적으로 출력되는 모습을 볼 수 있습니다.

사용자 삽입 이미지

짜잔~


적용하실 때는 아래 파일을 다운받아 압축을 푼 후 스킨→직접올리기에서 업로드하면 됩니다.


2008년 10월 2일 목요일

Syntax Highlighter용 AviSynth 언어파일 공개

AVISynth와 dgavcdec를 이용한 H.264 동영상 편집AVISynth를 이용한 로고 제거법을 쓰다보니 Syntax Highligher용으로 AviSynth 언어파일이 필요하더군요.
(한국어/영어 등의 언어가 아니라 C++, JScript 등의 언어입니다 ㅎㅎ)

종종 사용하는 도구이고, 때때로 관련 포스팅도 해야 하는 필요성도 있어 언어파일을 만들기로 했습니다.
그런데, 막상 AviSynth를 보니 예약어의 갯수가 C++보다 훨씬 많더군요. ㅡㅡ;;;

며칠간의 삽질 끝에 만든 언어파일을 공개합니다.
컨트롤 함수나 내장 함수 등은 당연히 지원하고, 유명한 플러그인도 거의 지원하도록 만들었습니다.




덧1. 본 언어파일을 적용할 때는 class="avs" 또는 class="avisynth"를 적으면 됩니다.
<pre name="code" class="avs">스크립트</pre>
<pre name="code" class="avisynth">스크립트</pre>

<script type="text/javascript" src="./shBrushAvs.js"></script>
덧2. Syntax Highlighter의 사용법은 블로그팁 : Code Highlighter 더 쉽게 사용하기를 참고하시면 됩니다.

덧3. 기존 버전이 행의 끝에 <br> 태그가 있으면 엔터를 두 번 추가하는 버그가 있어 수정했습니다.


 

2008년 2월 9일 토요일

블로그팁 : Code Highlighter 더 쉽게 사용하기

티스토리에서 Google Syntax Highlighter 사용하기에서 Google의 Syntax Highlighter를 사용하는 방법을 소개했습니다.

그런데, 막상 몇 분의 글을 읽어보니 너무 어렵다고 하시더군요.
게다가, 전에 올린 버전은 약간의 문제점이 있었습니다.

그간 지적된 문제점을 개선한 버전을 더 쉽게 사용하는 방법을 소개하겠습니다.

일단, 원래 버전의 문제점은 아래와 같습니다.

  1. 자동으로 붙는 <br/> 태그를 일일이 없애야 한다

  2. 티스토리 치환자 [##_ ~ _##]를 코드에 넣을 수 없다

  3. 설치하는 과정이 너무 복잡하다

이 문제점은 아래와 같이 수정했습니다.

  1. 코드 내부에 <br/>이 있으면 자동으로 개행처리
    단, &lt;br>과 같이 입력한 경우는 제외. 티스토리 편집기에서 자동으로 삽입한 코드에 한함
    즉, WYSIWYG 입력기에서 <br>을 입력하면 <br>로 표시됨

  2. \#를 입력하면 #로 출력
    즉, [\##_ ~ ##_]으로 입력하면 치환자 표시 가능

  3. 설치 과정을 아래에 더 쉽게 설명

그리고, (순전히 제가 사용할 목적으로) MSX-BASIC을 처리해주는 코드를 삽입했습니다. (수정사항 4번)

설치 과정은 아래와 같습니다.
원래 버전의 설치절차는 다 잊고 아래 순서만 따라하시면 쉽게 설치할 수 있습니다.

1. Highlighter 관련 파일 업로드

아래에 링크된 zip 파일을 다운받아 압축을 풉니다.
압축 형식은 zip 이므로 어떠한 프로그램으로 풀어도 상관없습니다.


다음, 관리 메뉴의 스킨→직접올리기에서 압축을 푼 파일을 모두 업로드합니다.




2. 스킨파일(skin.html) 수정

1번의 파일 업로드 화면에서 HTML/CSS 편집 메뉴를 클릭하면 skin.html 파일을 직접 편집할 수 있습니다.
이 skin.html 파일의 맨 아래는 아래와 같은 2줄입니다.
</body>
</html>

이 2줄 바로 위에 Highlighter를 활성화시키는 코드를 집어넣으면 됩니다.
아래의 코드를 붙여넣는데, 코드 바로 위의 메뉴에서 view plain이나 copy to clipboard를 이용하면 됩니다.
참고로, Firefox에서는 copy to clipboard가 제대로 작동하지 않습니다. -.-;;; (잘 동작하는군요)
<!-- google code for syntaxhighlight -->
<link type="text/css" rel="stylesheet" href="./images/SyntaxHighlighter.css"></link>
<script language="javascript" src="./images/shCoreMod.js"></script>
<script language="javascript" src="./images/shBrushCSharp.js"></script>
<script language="javascript" src="./images/shBrushXml.js"></script>
<script language="javascript" src="./images/shBrushCss.js"></script>
<script language="javascript" src="./images/shBrushCpp.js"></script>
<script language="javascript" src="./images/shBrushJScript.js"></script>
<script language="javascript" src="./images/shBrushMsx.js"></script>
<script language="javascript">
dp.SyntaxHighlighter.ClipboardSwf = './images/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>
<!-- google code for syntaxhighlight -->
<!-- 이 아래는 입력할 필요 없음. skin.html에서의 위치를 표시하기 위함 -->
</body>
</html>

3. 코드에 적용

일단 WYSIWYG 편집기에서 원하는 코드를 입력합니다.
엔터를 입력하면 자동으로 <br/>로 변하는데, 신경 쓸 필요 없습니다.

가령, css 코드라면 아래와 같이 입력합니다.

@charset "utf-8";
    body {
       font-family: 돋움,Dotum,AppleGothic,sans-serif;
       font-size:12px;
       line-height: 1.5;

       /*@background-image=background-image:*/ background-image:url(./images/bnl_bluebg.jpg) /*@*/;
       /*@background-image-position=background-position:*/ background-position: center top /*@*/;
       /*@background-image-repeat=background-repeat:*/ background-repeat: no-repeat /*@*/;
       /*@background-color=background-color:*/ background-color: #ffffff /*@*/;
       padding:0; margin:0;
    }

다음, HTML 편집 모드로 들어가서 해당되는 코드의 앞에 <pre name="code" class="css"> 를, 뒤에 </pre>를 추가하면 됩니다.
위의 코드 앞뒤에 <pre> 태그를 붙인 결과는 아래와 같습니다.
@charset "utf-8";
   body {
      font-family: 돋움,Dotum,AppleGothic,sans-serif;
      font-size:12px;
      line-height: 1.5;

      /*@background-image=background-image:*/ background-image:url(./images/bnl_bluebg.jpg) /*@*/;
      /*@background-image-position=background-position:*/ background-position: center top /*@*/;
      /*@background-image-repeat=background-repeat:*/ background-repeat: no-repeat /*@*/;
      /*@background-color=background-color:*/ background-color: #ffffff /*@*/;
      padding:0; margin:0;
   }

새롭게 추가한 MSX-BASIC의 코드를 사용하려면 아래와 같이 하면 됩니다.
일단 코드를 입력합니다.

10 LET A=10
20 LET B=20
30 LET C=A
40 LET A=B
50 LET B=C
60 PRINT "A = "; A; ", B = ";B

다음 이 코드의 앞에 <pre name="code" class="msx">를, 뒤에 </pre>를 추가합니다.
결과는 아래와 같습니다.
10 LET A=10
20 LET B=20
30 LET C=A
40 LET A=B
50 LET B=C
60 PRINT "A = "; A; ", B = ";B

티스토리의 치환자를 입력하려면 아래와 같이 하면 됩니다.
아래와 같이 코드를 입력합니다. [## 사이에 \를 집어넣었습니다.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>[\##_title_##] :: [\##_page_title_##]</title>
<link href="./style.css" rel="stylesheet" type="text/css" />

다음, 앞과 마찬가지로 앞에 <pre name="code" class="html">을, 뒤에 </pre>를 추가합니다.
결과는…
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>[\##_title_##] :: [\##_page_title_##]</title>
<link href="./style.css" rel="stylesheet" type="text/css" />

짜잔~ 이렇게 쉽게 치환자를 입력할 수 있습니다 ^^;;;




어떤가요? 정말 쉽고 멋지지 않나요?
(이것도 어렵다고 하시면 어떻게 더 쉽게 만들어야할지 모르겠습니다)

많은 분들께서 이 기능을 사용하시면 좋겠습니다.

덧1. 원본의 코어 코드의 파일명은 shCore.js인데, 수정 버전은 shCoreMod.js로 변경했습니다.
       원본과 혼동을 없애기 위해서 및 서버 캐쉬로 인해 파일 수정이 즉각 반영되지 않는 문제를 피하기 위해서입니다.

덧2. 원래의 코드를 제가 작성한 것은 아니지만, GPL에 따르는 코드이기 때문에 자유롭게 수정해서 재배포합니다.

덧3. Copy to clipboard 기능에 버그가 있어 수정했습니다. (2008. 5. 22)

2008년 1월 21일 월요일

블로그팁: 티스토리에서 Google Syntax Highlighter 사용하기

블로깅을 하면서 Syntax Highlighter(code highlighter)를 사용할 일이 제법 많이 있습니다.
C/C++/C# 소스를 올리는 경우도 있고, HTML 소스나 css 설정을 올리는 경우도 있습니다.
물론, XML 소스를 올리는 경우도 있습니다.

태터툴즈를 사용하시는 분들은 CodeHighlight Plug-in을 사용하면 됩니다만,
티스토리에서는 이 플러그인을 지원하지 않습니다.

방법을 뒤지던 중 Google Code project로 개발된 Syntax Highlighter가 있다는 것을 알았습니다.
하루 동안의 삽질 끝에 이걸 티스토리에 적용할 방법을 알아냈습니다.
(위의 태터툴즈용 플러그인도 이 Google의 Highlighter를 활용한 것입니다)


Google Syntax Highlighter



이 코드는 순수하게 javascript로 작성되어 있기 때문에 설정을 하고 나면 아주 간편하게 사용할 수 있습니다.
속도가 약간 느리다는 약점이 있습니다만…

이것을 설치, 활용하는 절차는 아래와 같습니다.


1. Syntan Highlighter (이하 SH) 다운로드

SH에서 다운로드 가능합니다. : 클릭
현재 1.51까지 나와있습니다. : 다운로드


2. 필요한 파일 모으기

관련된 파일들(*.js, SyntaxHighlighter.css, clipboard.swf)를 한 폴더에 저장해야 합니다.
다운받은 SyntaxHighlighter_1.5.1.rar 파일의 압축을 풀면 dp.SyntaxHighlighter 아래에 Scripts, Styles, Uncompressed 폴더가 있습니다.


dp.SyntaxHighlighter - Scripts/Styles/Uncompressed



Scripts 폴더와 Uncompressed 폴더에는 같은 내용의 함수 파일들이 들어있는데, Uncompressed 폴더의 함수들이 사람이 읽기에 좀 더 편합니다. 설치할 때는 이 중에서 Scripts의 내용만 사용합니다.


폴더를 하나 만든 뒤에 Scripts 폴더에 있는 모든 파일들(*.js 13개, clipboard.swf)과 Styles 폴더에 있는 SyntaxHighlighter.css 파일을 몽땅 저장합니다.
이 때 별도의 서브 폴더를 만들 필요 없이 그냥 저장하면 됩니다.




위 화면은 c:\_sh_\ 폴더를 만들어서 필요한 파일을 저장한 화면입니다.


3. 파일 업로드

2번에서 c:\_sh_ 폴더에 저장한 파일 15개를 전부 업로드합니다.
업로드할 때는 스킨 메뉴에서 직접올리기 기능으로 업로드하면 됩니다.




티스토리는 파일을 업로드하면 핵심 파일들을 제외하면 모두 images 폴더에 저장합니다.
위의 화면에서 sh*.js 파일들이 images 폴더에 저장되어 있는 것을 확인할 수 있습니다.


4. 스킨파일(skin.html) 수정

티스토리에서 Google Code - Syntax Highlighter를 사용하려면 해당 javascript 코드를 스킨파일에 추가해야 합니다.
추가할 위치는 </body> 바로 앞입니다. 맨 앞에 집어넣으면 아무런 변화도 없습니다.

<!-- google code for syntaxhighlight -->
<link type="text/css" rel="stylesheet" href="./images/SyntaxHighlighter.css"></link>
<script language="javascript" src="./images/shCore.js"></script>
<script language="javascript" src="./images/shBrushCSharp.js"></script>
<script language="javascript" src="./images/shBrushXml.js"></script>
<script language="javascript" src="./images/shBrushCss.js"></script>
<script language="javascript" src="./images/shBrushCpp.js"></script>
<script language="javascript">
dp.SyntaxHighlighter.ClipboardSwf = './images/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>
<!-- google code for syntaxhighlight -->
</body>
</html>
이 코드는 Google SH - Usage에서 제시하는 코드와 약간 차이가 있습니다.
3번에서 언급한 저장 위치문제 때문에 폴더를 ./images/로 수정해야 합니다.

사용할 모든 언어를 다 정해도 되지만, 사용할 것만 올리면 조금이라도 가벼워집니다.
위에서는 C#, XML(HTML), CSS, C++ 용 js 파일만 삽입했습니다.

지원 가능한 언어는 Google SH - Languages를 참고하면 됩니다.


5. 코드의 삽입

해당 코드의 앞뒤에 <pre> 태그만 붙여주면 됩니다.
<pre name="code" class="html">
... some code here ...
</pre>
형식으로 코드를 삽입하면 됩니다.
< > 등의 문자는 &lt; &gt; 등의 코드로 입력해야 하므로 기본적인 입력WYSIWYG으로 하면 편합니다.
하지만, 자동으로 입력된 </br> 태그를 삭제해야 하므로 마무리HTML 모드로 해줘야 합니다.


6. 기타사항

<pre> 태그에 옵션을 추가해서 모양을 조절할 수 있습니다.
사용 가능한 옵션은 nogutter, nocontrols, collapse, firstline[value], showcolumns의 다섯 가지가 있으며, 콜론(:)으로 구분하고 여러 개의 옵션들을 붙여서 사용할 수 있습니다.
※ 위의 코드는 nogutter 옵선을 사용해서 행번호를 표시되지 않도록 했습니다.

더 자세한 사용법은 Google SH - Configuration을 참고하시기 바랍니다.

※ 기능을 보완하고 설치 과정을 수정했습니다. Code Highlighter 더 쉽게 사용하기를 읽어주세요