레이블이 코드인 게시물을 표시합니다. 모든 게시물 표시
레이블이 코드인 게시물을 표시합니다. 모든 게시물 표시

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년 4월 27일 일요일

007 영화에서 거세된 "복수"의 코드

Dr. No: I thought there might be a place for you with SPECTRE.
James Bond: I'm flattered. I'd prefer the revenge department.
                        My first job would be finding the man who killed Strangways and Quarrel.


닥터 노: 스펙터엔 당신같은 사람이 필요하오.
제임스 본드: 혹하는군. 난 복수 부서에 넣어주시오.
                     첫번째 임무는 스트랭웨이즈와 쿼럴을 죽인 놈들을 찾아내는 것이 되겠지.
- [Dr. No (살인번호)] 중에서

사용자 삽입 이미지

I'd prefer the revenge department. (난 복수 부서에 넣어주시오)






긴 제임스 본드 영화의 역사에서 가장 커다란 위기이언 플레밍사망이었습니다.
물론 그의 사후에도 그의 원작소설들이 남아있기는 했지만, 그의 사후에 제작된 007영화들은 생전에 제작된 영화들에 비해 캐릭터의 생명력이 떨어져보입니다.

그가 살아있는 동안 제작된 3편의 영화들은 사실, 소설과 영화에서의 주된 적이 약간씩 다릅니다.
[살인번호] : Dr. No는 소설에서는 프리랜서, 영화에서는 스펙터 소속
[위기일발] : 소설에서는 소련 SMERSH, 영화에서는 스펙터
[골드핑거] : 골드핑거는 소설에서는 SMERSH 요원, 영화에서는 프리랜서

하지만, 이러한 설정의 변화에도 불구하고, 영화에서 악당들은 캐릭터가 살아있었고, 이것을 통해 제임스 본드생명력을 얻을 수 있었습니다.


1. 소설에서의 "복수"

이언 플레밍은 생전 14편의 007 소설을 집필했는데, 이 중 단편 모음집 2편을 제외한 12편이 장편소설이었습니다.
그리고, 이 12편의 장편소설 중에 제임스 본드의 복수를 주된 플롯으로 삼은 소설이 3편입니다.
<죽느냐사느냐>에서는 친구 필릭스 라이터가 상어에게 한쪽 팔과 한쪽 다리를 잃자 복수에 나서게 되고, <여왕폐하의 007>에서 부인을 살해당한 뒤 복수하는 것이 <두번산다>의 핵심 플롯입니다.
(물론, <여왕폐하의 007>의 주제는 복수가 아닙니다. 하지만, 작가 플레밍 입장에서의 이 작품은 복수를 위한 서막입니다)

즉, 장편소설의 1/4는 제임스 본드의 원한과 복수가 주된 플롯이었던 것입니다.


2. 영화에서의 "복수"

이 글 맨 위에 나온 대사는 첫 영화인 [살인번호]에서 본드와 닥터 노가 처음 만났을 때의 대사입니다.
이 장면은 소설에서는 없는 장면으로 (원작과는 다르게) 스펙터라는 조직을 끼워넣는 과정에서 등장했습니다.
그리고, 본드의 성격을 규정한 장면 가운데 하나가 되었습니다. (그는 복수를 하고야 마는 사나이입니다)
이 영화를 제작할 때는 원작자 이언 플레밍이 상당한 수준으로 개입했으므로 저 대사는 플레밍의 뜻이 담겨있다고 봐야 합니다.

하지만, 지금까지 나온 007 영화 21편 중에서 복수가 제대로 다뤄진 것은 [살인면허]가 유일합니다.
[죽느냐사느냐]에서 (소설과는 달리) 친구인 필릭스 라이터가 상어에게 당하지 않았던 것을 [살인면허]에 가서야 당하도록 플롯을 짰고, 이에 따라 복수를 감행하게 됩니다.

그래서, (흥행과는 무관하게) [살인면허]에서 제임스 본드는 생명력이 넘칩니다. ('왜 죽여야하는가'의 당위성이 있으니까요)

하지만, 또 하나의 복수 이야기가 되었어야 할 아내에 대한 복수는 완전히 묻혀버렸습니다.
[여왕폐하의 007]에서 블로펠드(정확히는 그의 오른팔인 이르마 분트)에게 아내를 살해당한 제임스 본드는 다음 작품인 [다이아몬드는 영원히]에서 3번이나 그를 죽입니다. 하지만, 3번 모두 제임스 본드의 표정은 그저 웃고 있을 뿐이어서 복수를 한다기 보다는 약간은 살인을 즐기는 듯한 인상만 줍니다.
게다가, 3번째에 보트에 타고 있는 블로펠드를 죽일 때는 사체를 확인도 하지 않는 등 복수할 의지가 전혀 없다는 것을 명백하게 보여줍니다.

게다가 [유어아이즈온리]에서 마지막으로 한번 더 그를 죽일 때는 아주 여유있는 농담 (Keep your hair on!)까지 하면서 제대로 즐기는 모습을 보여줍니다.

같은 사람을 무려 4번이나 죽이면서 분노하지도, 짜증내지도 않고 그저 즐기기만 하는 제임스 본드

결국, 제임스 본드 영화에 있어서 "복수"라는 코드는 완전히 거세되어 버리고, 그는 마치 살인을 즐기는 캐릭터로 변질되어 버린 것입니다.





앞으로 제작될 영화에서의 "복수"는?

제임스 본드는 [카지노 로얄]을 통해 성공적으로 재부팅되었습니다.
그런데, 이 영화는, 원작 소설에서는 적이 소련의 첩보기관인 SMERSH였기 때문에 복수를 하기 어려웠지만, 영화에서는 의문의 비밀조직이기 때문에 복수가 가능하고, 차기작인 [퀀텀]에서는 복수를 위해 그 조직을 깡그리 박살내는 것이 주된 내용이 될 것이라고 합니다.
(또한, 이러한 박살내기를 통해서 그의 파괴본능의 근원도 설명할 것 같습니다)

이러한 복수는 줄거리에도 생동감을 주지만, 주인공의 캐릭터생명력을 불어넣어줄 수 있을 것입니다.

앞으로는 원작 소설 및 초기 작품과 같은 생명력을 가질 수 있도록 가끔씩은 복수의 코드가 돌아오기를 바래봅니다.


   

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 더 쉽게 사용하기를 읽어주세요