컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Monthly Archive
Saturday, April 29, 2006

[Perl/펄] 세상에서 가장 간단한 RSS리더기를 만들어 보자

#!/usr/bin/perl
use strict; use warnings;

# 간단한 RSS 리더기 v0.1

#use encoding "utf8"; # 유니코드로 출력. 화면에선 글자 깨짐.
use encoding "utf8", STDOUT => "cp949"; # 화면에서 글자 잘 보임

use LWP::Simple;
use XML::RSS; # CPAN 에 가서 다운로드받아야 함

my $my_url = 'http://feeds.feedburner.com/mwultong'; # 기본 피드 주소
$my_url = $ARGV[0] if (defined $ARGV[0]); # 다른 피드 주소를 옵션으로 주면 그 다른 주소를 사용

my $content = get($my_url);

my $rss = new XML::RSS;
eval { $rss->parse($content); };

# 피드 헤더 정보 출력
print "URL: ".$my_url."\n";
print "XML encoding: ".$rss->encoding."\n";
print "RSS Version: ".$rss->version."\n";
print "Title: ".$rss->channel('title')."\n";
print "Language: ".$rss->channel('language')."\n";
print "Rating: ".$rss->channel('rating')."\n";
print "Copyright: ".$rss->channel('copyright')."\n";
print "Publish Date: ".$rss->channel('pubDate')."\n";
print "Last Build Date: ".$rss->channel('lastBuildDate')."\n";
print "CDF URL: ".$rss->channel('docs')."\n";
print "Items: ".scalar(@{$rss->items})."\n\n";

for my $item (@{$rss->{'items'}}) { # 포스트들의 제목 출력
  print "$item->{title}\n";
}

__END__

여기서부터는 이런저런 메모를 적을 수 있다.



위의 코드를 rss.pl 등의 적당한 이름으로 하드에 저장하면 된다.


이것은 포스트 제목들만 출력하는 간단한 RSS리더기다. Atom은 되지 않고 RSS만 가능하다. RSS 1.0은 물론 2.0도 지원된다.

별도의 모듈을 다운받아야 이 펄 코드를 실행시킬 수 있다. 그렇지만 어렵지는 않다.

CPAN에서 XML::RSS 로 검색하면 모듈이 하나 나오는데 거기서, XML-RSS-1.10.tar.gz 라는 이름의 파일(버전에 따라 다름)을 다운로드 받아서, WinRAR 등으로, 안을 들여다보면,

XML-RSS-1.10\lib\XML
이런 폴더가 압축되어 있고, XML 폴더 밑에 RSS.pm 이라는 앙증맞은 파일이 하나 들어 있다. 이것이 그 모듈이다. 텍스트 파일로 되어 있다.

이 RSS.pm 만 풀어서 라이브러리 폴더에 넣어주면 된다.(펄 라이브러리를 지정하는 방법은 여기를 참고.) 이 모듈에는 .xs 파일이 없기 때문에, 즉 순수한 펄 코드로만 이루어진 모듈이기에 C컴파일러로 컴파일할 필요가 없다.


필자의 경우

D:\WINDOWS_\Programs\perl_\site\lib
이 폴더에, XML 이라는 폴더를 하나 만들고, 그 XML 폴더 밑에 RSS.pm 파일을 넣어 주었다.

결국 RSS.pm 모듈의 전체적인 주소는 이렇게 되었다:
D:\WINDOWS_\Programs\perl_\site\lib\XML\RSS.pm


findpm RSS.pm
으로, 모듈이 잘 설치되었는지 확인해 보면, 이상한 에러가 나는데, 실제 스크립트 자체는 잘 작동했다.



위의 펄 소스의 뼈대는 일본 블로거의 블로그에서 가져온 코드를 약간 한국화시키고 기능을 추가한 것이다. 그리고 위의 소스 중에서 RSS 헤더 정보를 출력하는 부분은 XML::RSS 모듈 속에 동봉된 예제인 rss_info.pl 에서 따온 것이다. 그런데 헤더 정보 출력이 그리 정확하지 않았다.



아래는, 펄마니아의 피드인
http://www.perlmania.or.kr/rss/perlmania.xml
를 옵션으로 주고 실행했을 때의 결과이다.

rss.pl http://www.perlmania.or.kr/rss/perlmania.xml

이렇게 실행시키면 된다. (펄마니아 게시판에 스팸들이 많이 오는데 그것까지 다 나오고 있다.)

D:\Z>rss.pl http://www.perlmania.or.kr/rss/perlmania.xml
URL: http://www.perlmania.or.kr/rss/perlmania.xml
XML encoding: UTF-8
RSS Version: 1.0
Title: PerlMania
Language: 0
Rating: 0
Copyright: 0
Publish Date: 0
Last Build Date: 0
CDF URL: 0
Items: 10

외국어공부
defunct가 됩니다..
PDF 파일 보여주기
대박사이트이랍니다
대박사이트이랍니다
싱*싱*한* 레.걸. 가.슴 노.출 동/영/상♣
Re: 2박3일 동원훈련다녀왔습니다.
Re: Re: Re: 디비에서던져주는메세지를받고싶어요
Re: Re: 디비에서던져주는메세지를받고싶어요
Re: 문자열 검색 도와주세요.

D:\Z>


펄마니아의 피드는 현재, euc-kr 인데도 UTF-8 로 오인하는 버그가 RSS.pm 모듈에는 있었다.



피드 주소를 옵션으로 지정해 주지 않고 그냥 실행시키면 기본값으로, 필자의 피드인
http://feeds.feedburner.com/mwultong
이 나오도록 했다. (이 점이 불만스러운 분은, 자신의 피드 주소로 소스 코드를 수정하면 된다.ㅎㅎ)

D:\Z>rss.pl
URL: http://feeds.feedburner.com/mwultong
XML encoding: UTF-8
RSS Version: 2.0
Title: mwultong Blog ― 소설 / IT
Language: en-US
Rating: 0
Copyright: 0
Publish Date: 0
Last Build Date: Fri, 28 Apr 2006 21:53:52 -0500
CDF URL: 0
Items: 15

블로그 피드(Feed) 상단에, 그림 로고(Logo) 넣기
[QnA] 왜 TIF/TIFF 화일은 업로드할 수 없나요. 스캐너로 뽑은 사진인데-_-;
[HTML/CSS] 사이트 피드 자동검출/자동인식(Autodiscovery) 태그 수정하기
[공지] RSS 2.0 으로 블로그 피드를 바꾸었습니다
[독서] '댄 브라운' 소설 '다 빈치 코드' (베텔스만 코리아)
[스팸 방지/프라이버시 보호] 이메일(EMail)의 이미지를 차단하자
[독서] 김훈 소설 '언니의 폐경' 프리뷰 / 제5회 황순원 문학상 수상작품집
구글의 인기 검색어 알아보기 ㅎㅎ: Keyword Tool
블로그의 사이트 피드를 피드버너(FeedBurner)에 등록
[QnA] 3dsmax.chm 이란? 3dsmax.chm 파일은 어디서 다운로드받나요?
[QnA] 한자 폰트(글꼴) 있는 곳 / 좋은 한자 폰트는?
[HTML/CSS] 포스트 제목 툴팁(tooltip)의 쌍따옴표/홑따옴표 문제 해결
[독서] 마광수 소설 '권태' 프리뷰 (문학사상사)
[독서] 한강(韓江) 소설 '몽고반점' (이상문학상 대상 수상작) 프리뷰 (문학사상사)
[HTML/CSS] 메타 태그(META TAG)의 'REVISIT-AFTER' 속성은 이제 쓸모 없는 듯

D:\Z>


이번에는 정확하게 출력되었다.

유니코드 피드이지만, 명령 프롬프트 화면에서 유니코드를 출력하면 한글이 깨졌기에, 완성형 ANSI로 출력했다. 출력을 유니코드(UTF-8)로 하기 위해서는,

이것을
#use encoding "utf8"; # 유니코드로 출력. 화면에선 글자 깨짐.
use encoding "utf8", STDOUT => "cp949"; # 화면에서 글자 잘 보임

이렇게 주석(#) 기호를 옮겨서
use encoding "utf8"; # 유니코드로 출력. 화면에선 글자 깨짐.
#use encoding "utf8", STDOUT => "cp949"; # 화면에서 글자 잘 보임

수정한 후, 다음과 같이 재지향을 사용해서, 결과를 파일로 저장하면 된다:

rss.pl > out.txt

이렇게 하면 명령 프롬프트에 나온 글자들이 파일로 저장된다. 다만 도스 텍스트가 아닌 유닉스 텍스트이기에 메모장에서는 이상하게 보이는데, 울트라에디트 같은 고급 에디터에서 불러서 읽으면 된다. ("[Perl/펄] 한글 자소 분리: '똠방각하'를 'ㄸㅗㅁㅂㅏㅇㄱㅏㄱㅎㅏ'로 자동 변환" 포스트에 보면, 유닉스 텍스트를 도스 텍스트로 출력하는 sub LF2LFCR 라는 함수가 있는데, 이것을 쓰면 도스 텍스트로 출력할 수 있을 것이다.)




결론



이 포스트에서 소개한 펄 코드 자체는 너무 단순해서 별로 쓸모가 없지만, 이것을 기반으로 잘 응용하면 훌륭한 RSS툴을 만들 수도 있을 것이다.

아톰 피드를 지원하기 위해서는 CPAN에서 atom 으로 검색하여 모듈을 얻어서 사용하면 된다. (펄(Perl)은 어지간한 코드는 다 CPAN에서 구할 수 있기에 자신이 직접 만들 필요는 없다.) 그런데 아톰 피드는 외국에서도 별로 인기가 없는 듯했다.

블로그 피드(Feed) 상단에, 그림 로고(Logo) 넣기

프로블로거(ProBlogger.net) 사이트의 피드를 구독하면, 한RSS 등의 리더기 위쪽에 프로블로거 사이트의 로고 그림이 표시된다. (물론 피드 자체에도 로고가 현재 표시되어 있다)

로고를 피드에 어떻게 표현하는지 참 궁금했었다. 그런데 피드버너(FeedBurner)에 가입해 보니, 이미지 로고를 추가하는 옵션이 있었다.


Optimize / Feed Image Burner

이것이, 피드버너의 로고 삽입 메뉴다.

이곳의 드롭다운 목록에서 Specify custom image URL를 선택하고, 밑의 Image URL 에 그림 주소를 지정해 주면 되었다.

안타깝게도 피드버너에서 로고 그림 파일을 직접 호스팅해 주지는 않았다. 그림 파일의 주소 즉 URL만 지정할 수 있었다.

아무래도 로고인 만큼, 아주 작은 그림만 지정 가능했다. 가로 세로 길이 중의 하나가 144 pixels 를 초과하면 곤란한 모양이다.(It is recommended to be no more than 144 pixels tall or wide.)

블로그에 보통의 그림이나 사진을 올리는 방식으로, 로고 그림을 일단 업로드한 후, 그 그림의 주소를 지정해 주면 된다.

다만, 투명GIF 형식이 가장 무난했다. 왜냐하면 블로그라인처럼, 그림이 표시되는 화면 상단 부분의 바탕색이 흰색이 아닐 경우에는, 그림 로고의 테두리가 나타나 보기에 좋지 않았기 때문이다.

그런데, 필자가 사용하고 있는 이 블로거닷컴(blogger.com)에서는 현재 GIF나 PNG 업로드가 불가능하고, JPG도 화질을 강제로 저하시켜 버린다. 그래서 어쩔 수 없이, 예전에 업로드 제한이 없었던 시절(?)에 올려두었던 투명GIF를 우선 로고로 삼았다.



피드에 나오는 결과는 여기



현재(2006-04-28) 피드 화면의 우측 상단에 필자의 서명(Signature)을 로고로 삼아 올려두었다. (한RSS블로그라인으로 이 피드를 구독하면 화면 상단에 이 서명이 보이게 된다.) 앞으로 다른 그림으로 바꾸어 볼 생각인데, 블로거닷컴의 그림 업로드 제한 때문에 쉽지가 않을 것 같다. 다만, 타이니픽(tinypic.com)에서 이런 그림을 호스팅해 주고 있기는 하다. 그러나 조그만 그림 하나를 위해서 외부 서비스를 사용하는 것은 부담스럽다.



로고 크기(가로 세로 길이: Dimension)의 문제



블로그라인에서는 원본 높이(그림의 세로 길이:height) 그대로 보여 줬지만, 한RSS에서는 높이가 강제로 72픽셀로 축소되었다. 한RSS에서도 원본 그대로 표시되었으면 좋겠다.

참고로, 서두에서 언급했던 프로블로거의 로고는 220x73이었다. 즉 세로 길이가 73픽셀이었고 한RSS에서도 자연스럽게 보였다.

꼭 로고가 아니라도, 자신의 사진을 작게 축소시켜 피드에 붙이면 좋을 것 같다.

세로로 긴 그림은 곤란하고, 가로로 긴 그림이 적당했다.




결론



피드에 로고를 넣으면, 보기에도 좋고, 구독자들에게 강렬한 인상을 줄 수도 있고, 아무래도 기억되기도 쉬울 것이다.

일반적으로 피드에는 로고가 지원되지 않기에, 일단 피드버너로 피드를 '구운' 후, 로고를 집어 넣어야만 할 것이다. 그러나 단지 로고를 넣기 위해, 피드버너로 피드를 구울 필요는 없다고 생각된다. 현재의 피드가 만족스럽지 않을 때, 피드버너로 피드를 구운 후, '이왕이면!' 하고, 로고도 추가해 주는 식이어야 할 것이다.

Friday, April 28, 2006

[QnA] 왜 TIF/TIFF 화일은 업로드할 수 없나요. 스캐너로 뽑은 사진인데-_-;

.tif 나 .tiff 확장자를 가진 그림 파일은 웹용이 아니라, 인쇄용이나 편집용입니다. tif(tiff) 파일을 그대로 올릴 수 있는 인터넷 서비스는 별로 없을 것입니다.

tif 파일을 인터넷을 올릴 때에는 포토샵을 사용해 반드시 JPG 파일로 변환해 주어야 합니다. 그래야 용량도 아낄 수가 있습니다. 포토샵 File 메뉴에 Save for Web 이라는 것이 있습니다. 이곳에서 JPG로 변환하면 편리합니다.


만약 꼭 .tif 파일을 100% 그대로 인터넷에 올려야 한다면, WinZip 이나 WinRAR 등으로 tif 파일을 압축해서, 그림 파일이 아닌 일반 파일로서 업로드하시는 것이 좋습니다.



이론적으로, 인터넷에 직접 올릴 수 있는 그림/사진 파일은
.JPG (또는 .JPEG) <-- 사진
.GIF <-- 256색 이하의 간단한 그림
.PNG <-- GIF와 비슷하지만, 옵션에 따라서 256색 이상도 가능

이 3가지밖에는 없습니다.



그리고 이것은 아주 드문 경우인데,
JPG 도, CMYK모드로 된 특수한 JPG는 인쇄용이라서 업로드할 수 없고 설령 업로드했다 해도 웹브라우저에서 보이지 않습니다.

그럴 경우, 포토샵 메뉴의
Image / Mode / RGB Color
로, "CMYK JPG"를 일반적인 "RGB JPG"로 변환하신 후 업로드하시면 됩니다.

[HTML/CSS] 사이트 피드 자동검출/자동인식(Autodiscovery) 태그 수정하기

※ 이 글은 블로거닷컴(blogger.com+blogspot.com)의 블로그를 기준으로 설명합니다. HTML을 수정할 수 없는 블로그 서비스에는 적용되지 않을 것입니다.


우선, 블로그에 피드 아이콘 추가



피드버너(FeedBurner)로 피드를 변환한 후, 피드버너의 Publicize / Chicklet Chooser 메뉴에서 링크 아이콘을 선택하여 블로그의 적당한 곳에 붙여 두는 것이 좋다. 방문객에게 피드 주소를 알려주어야 하기 때문이다.

이런 코드를 피드버너에서 자동으로 만들어 주고 있었다:

<a href="http://feeds.feedburner.com/mwultong" title="Subscribe to my feed" rel="alternate" type="application/rss+xml"><img src="http://www.feedburner.com/fb/images/pub/feed-icon32x32.png" alt="" style="border:0"/></a>


결과:





※ 아래의 글은 FeedBurner Support :: View topic - Modifying the Autodiscovery Link in Blogger 이 도움말을 번안(?)한 것입니다. 영어가 편하신 분은 FeedBurner의 도움말을 읽으시면 됩니다.




피드 주소 자동검출(Autodiscovery) 태그



이 부분은 조금 손이 많이 가고 까다로웠다. 템플릿을 텍스트파일로 백업해 두지 않으면, 위험한 작업일 수도 있었다.

자동검출(Autodiscovery)이란, RSS리더기 등 각종 프로그램에, 블로그 주소만 입력하고도 그 블로그의 피드 주소를 자동으로 알아내게끔 하는 기능이다.

가령 필자의 블로그 주소는
http://mwultong.blogspot.com/
인데, 이 주소만 RSS/Atom리더기에 입력해도

필자의 블로그 피드 주소가
http://feeds.feedburner.com/mwultong
이라는 것을 자동으로 알아내게 된다.




HTML의 헤더에 이런 link 태그를 넣으면 된다(블로그의 경우, 템플릿을 통해 간접적으로 HTML을 편집하기에 템플릿에 넣어준다):
<link rel="alternate" type="application/rss+xml" title="mwultong Blog ― 소설 / IT" href="http://feeds.feedburner.com/mwultong" />

(단, 이 코드는 필자의 블로그에만 해당되는 내용으로 채워져 있다)


그런데 블로거닷컴에서는 직접 위와 같은 link 태그를 템플릿에 넣어줄 수 없었다. 왜냐하면 <$BlogMetaData$> 이 태그 속에, link 태그를 포함한 모든 헤더 태그들이 한덩어리로 뭉쳐서 들어가 있기 때문이다. 그래서 이 <$BlogMetaData$> 태그를 완전히 지우고 대신 그 내용을 분해해서 직접 편집하여 입력해야 했다.




작업 순서



우선, 템플릿이 아닌, 자신의 블로그의 HTML코드를 텍스트에디터로 열어보아야 한다. 템플릿이 아니라, 실제 HTML 코드라는 것에 주의! 블로그 첫 화면(메인 페이지)에 마우스 오른쪽 버튼을 눌러서 "소스 보기"를 하면 된다.



소스의 <head> 태그 바로 밑에, 템플릿에 있던 <$BlogMetaData$> 태그가 다음과 같이 장황하게 풀어져 나와 있다:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="MSSmartTagsPreventParsing" content="true" />
<meta name="generator" content="Blogger" />
<link rel="alternate" type="application/atom+xml" title="mwultong Blog ― 소설 / IT" href="http://mwultong.blogspot.com/atom.xml" />
<link rel="service.post" type="application/atom+xml" title="mwultong Blog ― 소설 / IT" href="https://www.blogger.com/atom/19884063" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=19884063" />
<style type="text/css">
@import url("http://www.blogger.com/css/blog_controls.css");
@import url("http://www.blogger.com/dyn-css/authorization.css?blogID=19884063");
</style>


위의 이런 코드를, 메모장 등의 텍스트 편집기에서, Shift+화살표키로 선택한 후, Ctrl+C 키로 복사해야 한다. 단, 위의 코드는 필자의 블로그 설정이 반영되어 있기에, 바로 위의 코드를 직접 복사하면 절대 안된다. 반드시 자신의 블로그 HTML 소스 코드에서 복사해야 한다. 위의 코드 박스의 내용은 설명을 위해서 예로 든 것에 지나지 않는다.


또 하나의 주의 사항:
자신의 블로그가 유니코드(UTF-8)인 경우와,
자신이 사용하는 텍스트에디터가 울트라에디트(UltraEdit)인 경우에만 해당:

위의 코드 박스에 보면 ... charset=UTF-8 ... 라는 인코딩 정의 부분이 있다. 따라서 이 코드를 복사하여 텍스트파일에 임시로 저장할 때는 반드시 그 텍스트파일의 인코딩이 UTF-8이어야 한다. 그렇지 않으면 그 텍스트 파일의 모든 한글이 완전히 깨져 버리고 영원히 복구할 수 없게 된다. 자신의 블로그가 유니코드(UTF-8)가 아닌 euc-kr이라면 문제가 없지만, 블로거닷컴은 UTF-8이 기본이기에 각별히 주의해야 한다.

텍스트 파일의 실제 인코딩이 무엇이든 상관없이, 파일에 ... charset=UTF-8 ... 라는 문자열이 있으면 울트라에디트가 그 파일을 무조건 유니코드로 착각하는데 그 과정에서 한글이 완전히 깨져 버리는 것이다. 그렇지만 EmEditor에서는 이런 문제가 없었다.





다시 본론으로 들어가서,

이제 템플릿의 head 태그 밑의 <$BlogMetaData$> 라는 것을 지우고, 대신 그 자리에, 아까 복사한 그 코드 뭉치를 삽입한다. 그런 후 이렇게
<link rel="alternate" type="application/rss+xml" title="mwultong Blog ― 소설 / IT" href="http://feeds.feedburner.com/mwultong" />

이 태그 한 줄을, 자신의 피드에 맞게 적절히 수정해야 한다:

즉, 템플릿의 <head> 태그 바로 아랫부분이 이렇게 된다:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="MSSmartTagsPreventParsing" content="true" />
<meta name="generator" content="Blogger" />
<link rel="alternate" type="application/rss+xml" title="mwultong Blog ― 소설 / IT" href="http://feeds.feedburner.com/mwultong" />
<link rel="service.post" type="application/atom+xml" title="mwultong Blog ― 소설 / IT" href="https://www.blogger.com/atom/19884063" />
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=19884063" />
<style type="text/css">
@import url("http://www.blogger.com/css/blog_controls.css");
@import url("http://www.blogger.com/dyn-css/authorization.css?blogID=19884063");
</style>

그리고 위의 코드들 아래에 <title> 태그가 위치해야 한다. <title> 태그가 <meta http-equiv="Content-Type... 태그보다 위에 있으면, 블로그 화면에 글자들이 전혀 나오지 않고 모두 하얗게 되어버리는 문제가 자주 생긴다. ("블로거(blogger.com)의 인코딩 버그 완벽 해결법" 참조)

어려운 부분은 없다. 다만 필자는 RSS 2.0 포맷을 기본으로 쓰기로 했기에(RSS 2.0이 가장 무난했음), type="application/rss+xml" 이렇게 정의해 주었다. (피드버너도 기본 출력은 Atom 이기에, 원래는 type="application/atom+xml" 이렇게 되어 있을 것이다.)

(피드버너로 만든 피드 주소로 가서
http://feeds.feedburner.com/mwultong
마우스 오른쪽 버튼으로 "소스 보기"를 하면, 필자의 경우 RSS 2.0으로 맞추었기 때문에
<rss version="2.0"> 이라는 태그가 보인다.)


그런 후 이제 블로그를 재게시하면 된다.





피드 자동 검출 테스트



한RSS는 현재 피드자동인식이 지원되기 않기에

블로그라인에서 테스트해 보았다. 블로그라인에 로그인한 후, Add 링크를 누른 후,
http://mwultong.blogspot.com/
이라는 블로그 주소만 입력해도
http://feeds.feedburner.com/mwultong
이라는 피드를 성공적으로 찾아내었다.
그런 후 Subscribe to This Feed(이 피드 구독)라는 링크를 누르면, 구독 리스트에 추가된다.

단, http://mwultong.blogspot.com/atom.xml 이라는 예전의 피드도 찾아내는데, 어떻게 찾았는지는 확실치 않다. 예전의 atom.xml 주소를 나오지 않게 하는 방법은 알 수 없었다. 피드 주소가 여러 개 나온다고 해서 그리 문제될 것은 없지만, 혹시라도 방문객들이 혼란을 느낄 수도 있다.






최기영님께서 주신 질문에, 제가 부족하나마 응답해 드렸습니다:

블로거닷컴은 아톰피드만 지원하고 RSS는 지원하지 않습니다. 그래서 아톰피드를 RSS로 직접 변환하셔야 합니다. www.feedburner.com 에 가신 후, 현재의 아톰피드 주소(가령 ... atom.xml 등)를 입력하시면 RSS 등으로 피드를 변환하실 수 있습니다. 물론 무료입니다.

만약 피드버너로 피드를 변환하신 후에도 호환이 잘 안된다든지 하는 문제가 발생하면, 피드버너에 로그인 하신 후 메뉴의 Optimize/Convert Format 에서 RSS 2.0 을 선택하시고 Save 버튼을 누르시면 해결될 것입니다.

그런 후, 블로그 템플릿에, 새로운 피드 주소로 가는 링크를 하나 만드시면 더욱 좋겠지요..





추가 사항:

그렇지만
원본 피드(예: http://mwultong.blogspot.com/atom.xml)를 블로거 대시보드에서 없애 버리면,
피드버너의 피드(예: http://feeds.feedburner.com/mwultong)도
작동하지 않습니다. 피드버너는 원본 피드를 재가공하는 것에 불과하기 때문입니다.


지금 생각해 보니 "자동검출"이 아닌 "자동발견"으로 번역해야 할 것 같군요...







Thursday, April 27, 2006

[공지] RSS 2.0 으로 블로그 피드를 바꾸었습니다

새 피드 주소는

http://feeds.feedburner.com/mwultong

이것입니다.



지금까지 사용해 왔던 피드 주소인
http://mwultong.blogspot.com/atom.xml
이것은 사실상 쓰지 않기로 했습니다.



피드 주소를 변경하실 경우에는
구독 버튼들을 누르시면 됩니다.





변경의 이유



일전에 한메일넷의 RSS 리더기인 rss.daum.net에 아톰피드(atom.xml)를 등록하려고 했는데 에러가 나고 등록이 되지 않았습니다. 피드가 유니코드(UTF-8)로 되어 있어서 그런가 했더니, 어제 보니 아톰피드라서 읽지 못한 것이었습니다. RSS 2.0의 피드는 잘 등록이 되었습니다.

lunamoth님의 말씀에 의하면 태터툴즈 내장 리더에서도 아톰피드를 읽지 못하고, 국내에서는 아톰피드 사용이 무리라는 생각이 들었습니다. 그래서 어쩔 수 없이 피드 주소를 변경하게 되었습니다. ㅠㅠ

[독서] '댄 브라운' 소설 '다 빈치 코드' (베텔스만 코리아)

'댄 브라운(Dan Brown)' 소설 '다 빈치 코드' 프롤로그 첫 페이지



프롤로그

파리, 루브르 박물관
오후 10시 46분

루브르 박물관의 관장 자크 소니에르는 대화랑의 아치형 천장 아래를 비틀거리며 걷고 있었다. 소니에르는 제일 가까이 있는 카라바조의 그림으로 돌진했다. 일흔여섯 살의 이 노인은 도금된 그림 액자가 벽에서 떨어질 때까지 잡아당겼다. 소니에르가 뒤로 넘어지자 그림이 몸을 덮쳤다. 소니에르의 예상대로 화랑의 출입을 봉쇄하는 철문이 천둥소리를 내며 떨어졌다. 마룻바닥이 흔들렸다. 얼마 지나지 않아 비상벨이 울려댔다.

소니에르는 숨을 헐떡거리며 잠시 누워 있었다.

'나는 아직 살아 있다.'

캔버스 아래에서 기어나오며 소니에르는 몸을 숨길 만한 장소를 찾아보았다.

"움직이지 마시오."

냉기에 가까운 목소리였다.

소니에르는 손과 무릎이 얼어붙는 것을 느끼며 머리를 천천히 돌렸다...





'댄 브라운' 소설 '다 빈치 코드' 본문 첫 페이지



1

로버트 랭던은 천천히 깨어났다.

어둠속에서 전화벨이 울리고 있었다. 작고 익숙하지 않은 울림이었다. 손으로 침대 옆을 더듬어 불을 켰다. 눈을 가늘게 뜨고 주위를 둘러본 랭던은 루이 16세 시대의 가구들과 수작업으로 된 프레스코 벽화, 거대한 마호가니 기둥이 침대 네 귀퉁이에 서 있는 호화로운 르네상스풍의 침실을 둘러보았다.

'대체 여기가 어디지?'

침대 기둥에 걸려 있는 자카드 천의 목욕 가운에는 '리츠 파리 호텔'이라고 적혀 있었다.

느리게 안개가 걷히기 시작했다. 랭던은 수화기를 집어 들었다.

"여보세요?"

"랭던 씨? 제가 손님을 깨웠는지 모르겠습니다."

남자의 목소리였다.

침대 옆의 시계를 본 랭던은 망연자실했다. 밤 12시 32분, 겨우 한 시간 정도 잤는데 죽은 듯이 잔 것 같았다.

"저는 호텔 안내인입니다. 손님, 방해해서 죄송합니다만, 방문객이 와 계십니다. 몹시 급한 일이라고 하시는데요."

랭던은 아직도 의식이 흐릿했다...



요즘에 말썽이 많은 그 소설입니다.

책의 가장 첫부분에 사실 이라는 페이지가 있었는데, "이 소설은 허구에 바탕을 둔 것입니다" 정도의 문장이 있을 줄 알았더니, 의외로 "이 소설에 나오는 예술작품과 건물, 자료, 비밀 종교의식 들에 대한 모든 묘사는 정확한 것이다"라는 문구가 있더군요.


사실 저는 이 소설을 아직 읽지 않았습니다. 바쁘기도 하고 또 소설의 서두가 좀 진부해서-_- 별로 흥미가 없었는데, 읽다가 보면 차츰 재미있는 부분이 나온다고 해서, 시간이 나면 한번 읽어볼 예정입니다.




출간일 : 2004-07-05 (원서 출간: 2003)
원제   : The Da Vinci Code
번역   : 양선아
감수   : 이창식
페이지 : 368쪽 (원서 Hardcover 페이지: 454 pages)
출판사 : 베텔스만 코리아

Wednesday, April 26, 2006

[스팸 방지/프라이버시 보호] 이메일(EMail)의 이미지를 차단하자

이메일은 원칙적으로 수신 확인이 불가능하다. 아웃룩 익스프레스 Outlook Express 등에 보면 "확인 메일"이라는 기능이 있긴 하지만 완전하지 않다.

몇년 전에 이 수신 확인을 100% 확실히 할 수 있는 서비스가 나왔었다. ⓒ Confirm.To (이메일 수신확인 및 수신증명 서비스: 외국 회사가 아니라 영등포구 여의도동에 있는 한국회사임) 라는 곳에서 제공하는 것이었다. 필자가 사용하던 핫메일(MSN Hotmail)로 테스트해 보았는데 정말 수신 확인이 되었다.

전혀 기쁘지 않았다. 엄청난 보안 헛점이기 때문이다. 당시에는 핫메일이 여러모로 가장 뛰어났는데 이런 헛점이 있다니 어이가 없었다. confirm.to 가 어떤 방식으로 수신 확인을 했는지도 알 수 없었다. 핫메일에서 이 문제를 고치지도 않았고, 네티즌 사이에서도 전혀 이슈화되지 않았기에, 필자는 곧 잊고 말았다.


스패머들이 스팸메일 속의 이미지 로딩 여부로, 수신 확인을 한다는 사실을 몇 년 후에 알게 되었다. 수신이 확인되면 그 메일 계정으로 집중적으로 스팸을 보내는 것이다. 그리고 그 무렵 핫메일에 이미지 차단 옵션이 추가되었다. confirm.to 역시 스패머들의 방식을 쓴다는 사실을 짐작할 수 있었다.

필자가 아는 한, 외국에서는 이런 비슷한 서비스가 없었는데, 외국에서는 confirm.to 같은 서비스가 불법일 수도 있었다.





실험



우선 핫메일에서 핫메일로 보내는 테스트를 했다. confirm.to가 요즘에도 서비스되는지, 그리고 정말 이미지를 추가하는지 알아보기 위해서다.

보낼 주소 끝에
.confirm.to
를 추가하여
foo@hotmail.com.confirm.to
이 주소로 보냈다. (자기 자신에게 편지를 보냈음)


그런 후
foo@hotmail.com
에 도착한 그 편지를 읽었다.


편지 본문이 이렇게 base64 로 인코딩되어 있어, 안에 있을 태그를 파악할 수 없었다.
PGZvbnQgc2l6ZT0rMT48UFJFICBzdHlsZT0nZm9udC1zaXplOjEwcHQnPgq+
yLPnx8+8vL+pCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpFeHByZXNzIHlvdXJz
ZWxmIGluc3RhbnRseSB3aXRoIE1TTiBNZXNzZW5nZXIhIERvd25sb2FkIHRv
ZGF5IC0gaXQncyBGUkVFISAKaHR0cDovL21lc3Nlbmdlci5tc24uY2xpY2st
...이하 생략



EmEditor 에 "Decode" 플러그인을 설치하여, base64를 디코딩했다. base64 인코딩을 푸니 다음과 같은 내용이 나왔다. 역시 숨겨진 이미지 링크가 있었다:
<font size=+1><PRE  style='font-size:10pt'>
안녕하세요

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

</PRE>

<img src=http://postel4.postel.co.kr/read/1345520521-be71261e8e2edf984f1301fd3f50e745.4f6405f179424eeb/foo@hotmail.com.confirm.postel.to width=0 height=0><link rel='stylesheet' type='text/css' href=http://postel4.postel.co.kr/read/1345520521-be71261e8e2edf984f1301fd3f50e745.4f6405f179424eeb/foo@hotmail.com.confirm.postel.to>
</BODY>
</HTML>


위에서
<img src=http://postel4.postel.co.kr/... 이것이 그것이다.

foo@hotmail.com.confirm.postel.gif
라는 아주 작고 투명한 GIF 그림이, 전혀 보이지 않게 삽입되어 있었다. 8x8 픽셀 크기에, 스펙은 256색이지만 완전한 투명색.

이 그림은 컨펌투 라는 그 회사의 서버(postel.co.kr)에서 로딩되기에, 이 그림이 로딩되면, 편지를 읽었다는 사실을 알 수 있다. 그뿐 아니라 언제 읽었는지, 읽은 이의 IP주소는 어떻게 되는가까지 알 수 있다. 핫메일에 컨펌투로부터 온 '리포트'가 도착했는데, "읽었는지 여부"뿐 아니라, "읽은 시각", "읽은 이의 IP주소" 등에 대한 리포트가 있었다. "읽은 이의 컴퓨터 이름"까지도 있었는데, 필자의 경우 파이어월을 사용해서 그런지 나오지 않았다.



Gmail 보안 테스트


이번에는 지메일로 편지를 보냈다. 컨펌투를 붙여서...

지메일은 기본적으로 이미지를 차단하기에, 지메일 화면에 다음과 같은 메시지가 나왔다:

외부 이미지가 나타나지 않습니다.
아래에 이미지 표시 - 항상 foo@hotmail.com의 이미지 표시


필자는 메일에 이미지를 추가하지 않았지만 역시 컨펌투에서 추가했다.




한편, 편지를 전송했던 곳인 핫메일로는 컴펌투 회사로부터 다음의 편지 2통이 왔다.
성공적으로 전송되었다는 내용과, 돈을 주고 가입하라는 내용일 뿐
수신이 확인되었다는 내용은 없었다.
리포트도 없었다.
즉 컨펌투가 수신확인을 못한 것이다.


Subject : [confirm.to 통지] 메일 발송 포인트 (8) 소진 예정 : *메일 제목*

Content-Type: text/html
Content-Transfer-Encoding: base64
Content-Disposition: inline


CONFIRM.TO Credits Warnings  account credits/status: 10/identified
[manage your account]



Status Serial ID:  postel4:1123521261-ed0421edd537f726caeb34d26e29af13
Status:  성공적으로 전송되었습니다.:
그러나, 귀하의 confirm.to 크레딧(포인트)이 거의 소진되어 가고 있습니다 ( 8 ).
포인트를 추가 구매하지 않으시면, 다음부터 confirm.to 홍보 배너가 본문에 첨부되어 수신자에게 전달되게 됩니다.
Credits Required:  2
Recommended Actions:  [추가 포인트 구매]


E-Mail From:  foo@hotmail.com
To:  foo@gmail.com
Subject:  *메일 제목*
Date:  Sun, 16 Apr 2006 01:12:01 +0000
Size:  204 bytes


From now on, your message may be sent with confirm.to advertizing banner added in the top of your message content.
If you credits go below zero, you can send message up to 10/per day and 30/per month. Any messsages coming after exceeding those limits will be discarded silently without this notice.
You are encouraged to buy confirm.to credits by credit card/checks or to get free credits by annoucing our service to others.
To view how the confirm.to banner looks like, you can email to yourself through confirm.to.
Please contact info@confirm.to for details.




Subject : [Notice] Confirm your Confirm.to Registration [Confidential]
Content-Type: text/html; charset=
Content-Transfer-Encoding: 8bit
Content-Disposition: inline


Confirm.To Service V2.0                       ( http://www.confirm.to )
-----------------------------------------------------------------------

Dear Sir:

 Thanks for using CONFIRM.TO services of Postel Services Inc.

   Your Postel ID : foo@hotmail.com
   Your Temporary Password  : 14641

 For security reasons, you have to confirm your application
   by visiting the following link to activate your account and
   change your password:

   http://postel.info/manage.cgi?menu=agree0&email=foo@hotmail.com&password=14641

 With your password, you can manage your confirm.to account
   for buying more usage credits or changing options.

 As a new user, you are given 12 free CREDITSs to test our services.

 In our credits system, every message posting and receipt notice
   consume  your credits which is charged proportionally to
   the message size as well as the number of recipients.

 With your credits, you can enjoy our new features:
   SMS/pager notification service ,
   Sharing your credits with your team members,
   Transfer your credits to others,
   Exhaustive email tracking services ,
   Certified mail using digital certificates ,
   Email language translation services,
   In-server redrawable/cancelable message.

 To learn more about confirm.to and its credits system,
   visit http://www.confirm.to/ and bookmark it in your brower.

 Thank you very much.

 Sincerely,

 Postel Services Customer Support.

 Email: info@postel.info
 Phone: +82-2-785-3351
 Home : http://www.confirm.to



즉, 이미지를 로딩하지 않게 하면 수신 확인이 불가능했다.
다시 말해서, 안전했다.



구글에서 검색해 보면, 이 "메일 수신 확인 서비스"가 범죄에 악용된다는 기사가 많다:
메일 수신 확인 악용

메일 수신 확인 범죄



결론



메일에 링크된 이미지 로딩을 하지 않으면, 안전한 것이었다. 그러나 국내 메일 서비스에는 이런 기능이 없는 듯했다. 한메일넷(daum.net)의 경우 "스팸메일 내용 중 이미지"에만 "보여주지 않기" 기능이 있었고, 일반 메일의 이미지를 차단할 수는 없는 것 같았다.

지메일 등의 외국 메일을 쓰는 수밖에는 없었다.

[독서] 김훈 소설 '언니의 폐경' 프리뷰 / 제5회 황순원 문학상 수상작품집

김훈 단편소설 「 언니의 폐경 」 본문 첫 1~2페이지




내 아파트에 오는 날이면 언니는 늘 베란다 창문 앞 테이블에 앉아서 저녁나절을 보냈다. 저녁 무렵에 언니는 좀 수다스러워졌다. 수다라기보다는 말문이 겨우 트이는 모양이었다. 여성잡지의 갱년기 특집을 보니까 폐경을 맞는 여자들은 저녁 무렵에 근거 없는 불안을 느낀다고 적혀 있었는데, 언니의 저녁 수다가 그 불안과 관련이 있는 것인지는 모르겠다. 저녁 무렵에 언니가 하는 말은 거의가 하나마나한 말이었다. 언니의 말은 노을이나 바람처럼 종잡을 수가 없었고 멀게 들렸다. 들렸다기보다는 스쳤다고 해야 맞겠다. 나는 늘 언니의 말에 대꾸할 수가 없었다.

― 얘, 비행기가 꼭 물고기 같구나. 저 지느러미를 좀 봐.

아파트 베란다 창문 너머로, 강화도 쪽 저녁노을 속으로 스며드는 비행기를 바라보면서 언니는 그렇게 말했다. 김포에서 뜬 비행기가 한강 하구 쪽 하늘에서 상어처럼 커 보이다가 붕어만큼 작아지면서 짙은 노을 속으로 사라질 때까지 언니는 강화 쪽 하늘을 바라보고 있었다.

― 얘, 꼭 버들치 같아. 대가리가 반짝거리네. 꼬랑지에 등이 켜졌어. 얘, 좀 봐.

얘, 라고 나를 부르기는 했지만, 언니는 등을 돌리고 창밖을 바라보고 있었다. 언니가 창밖을 내다보는 시간에 나는 싱크대 앞에서 저녁을 준비했다.

― 얘, 어쩜 저렇게 스미듯이 사라질 수가 있니?

한강은 하구에 이르러 아득히 넓어졌고, 저녁 썰물에 드러난 갯벌 위에 새들이 모여 있었다. 서해 쪽으로 물러가면서 낮아지는 산들의 잔영이 저녁 어스름에 가물거렸다. 구름이 없는 날, 노을은 아무 거칠 것 없는 빈 하늘에 가득 찼고, 가득 찬 노을은 오히려 비어 있는 것처럼 보였는데, 들여다보면 깊어서 시선은 한없이 빨려들어갔다. 점점 작아지는 비행기들이 그 깊은 노을 속으로 사라졌고, 저물어서 도착하는 비행기들은 노을의 저쪽에서 배어나오듯이 한 개의 점으로 돋아나서 김포 쪽으로 다가왔다. 베란다 창밖 하늘은 언니의 말처럼 물고기들이 날아다니는 수족관처럼 보이기도 했다...




작가는 이 작품에서 사물과 인간의 심정을 교묘하게 결합시켜 사물을 바라보는 50대 여성의 내면세계를 잔잔하고도 치밀하게 묘사하는 데 성공하고 있다. 밀물과 썰물이 교차하는 한강 하구의 묘사가 생성과 소멸의 보이지 않는 운동을 연상시키는 것처럼 모든 사물들이 그들의 내면 풍경과 연관되고 있는 점은 이 작품의 탁월한 문학성을 입증하고도 남는다. 아마도 50대 여성의 몸의 변화와 내면을 이처럼 과장 없이 설득력 있게 서술한 작가는 남녀를 불문하고 처음이 아닐까 생각된다.

김치수 「수록 작품 해설」 중에서




김훈 선생의 소설 「언니의 폐경」은 2005년 제5회 황순원문학상 수상작입니다. 그리고 최근에 나온 김훈 선생의 소설집인 "강산무진 (문학동네)" 안에도 이 「언니의 폐경」이 들어 있더군요.

출간일: 2005-09-23
페이지: 380쪽
출판사: (중앙M&B)







이것은 위의 "황순원 문학상 수상작품집"과는 별도로, 최근에 나온 강산무진의 목차:

차례
배웅
화장 <- 2004년 이상문학상
항로표지

고향의 그림자
언니의 폐경
머나먼 속세
강산무진

세속 도시의 네안데르탈인/ 해설. 신수정(문학평론가)
작가의 말



더 읽기: 독서

구글의 인기 검색어 알아보기 ㅎㅎ: Keyword Tool

구글의 인기 검색어들이 어떤 것인가 알고 싶었는데, 그것을 공개하지 않았다. 그런데 지금 소개하는 키워드 툴로, 특정 검색어의 인기도를 대충 알 수가 있었다. 예를 들어, 연예로 검색하는 사람은 거의 없고 연예인으로 검색하는 사람은 많다는 것을 알 수 있었다.


키워드 툴이란, 구글 애드워즈AdWords에서 키워드를 구입하는 사람의 편의를 위한 서비스인 듯한데, 로그인도 필요없고 아무나 사용할 수 있었다.

Google AdWords : Keyword Tool
https://adwords.google.com/select/KeywordToolExternal
바로 이 사이트다.


전체적인 인기 검색어의 순위는 나오지 않고, 어떤 검색어를 입력한 후, 그와 관련된 검색어들의 인기도만을 알 수 있었다.



한글 설정



처음에는 영문 키워드만 검색되고 한글은 먹히지 않는데,

Results are tailored to English, United States Edit

위의 문자열의 끝의 Edit 를 눌러서
All Languages
All Countries and Territories
모든 언어, 모든 나라로 바꾸어 주어야 한글 키워드 검색이 제대로 된다.




그런 후, Keyword Variations 탭에서,

Enter one keyword or phrase per line: 이라는 곳의 검색창에,

예를 들어 연예 라고 입력하고
Get More Keywords 버튼을 누르면
결과가 출력되고

옆에 있는 Show columns 리스트에서, Global search volume trendsKeyword popularity 등을 선택해 주면 현재 검색어의 인기 동향을 자세히 알 수 있다.

위와 같이 해 주면, 연예 라는 검색어에 대해 다음과 같은 관련 검색어들이 나왔다. 그리고 검색어들의 옆에는, 옵션에 따라서, 비교적 자세한 데이터가 나온다.

연예
연예 뉴스
연예 인
연예인
연예인 x 파일
연예인 누드
섹시한
섹시 연예인
섹시 비치
연예인 사진
여자 연예인
섹시 사진
양동근
섹시 동영상
섹시 댄스
연예인 지옥
연예인 노출
섹시 속옷
o양
동양
연예 기획사
섹시 스타
양들의 침묵
연예인 모녀
양미경
연예인 사진
양진석
연예인 합성
섹시 화보
박신양
양정환
양력
양정화
c양
평양
섹시 비치 2
o양 비디오
섹시
...이하 생략...


Avg Search Volume이라는 것은, 해당 검색어의 평균적인 검색량 즉 인기도일 것이다.

Search Volume Trends (Apr 2005 - Mar 2006) 라는 작은 그래프는 그 인기도의 동향일 것이다.


이 정도의 정보로도 사이트 운영에 조금은 도움이 될 것 같다.





프로그래밍 이란 키워드로 검색했을 때는 다음과 같은 관련 키워드들이 나왔다. 아래의 박스에는 나타나 있지 않지만, 역시 c 언어라는 검색어가 인기가 있었다.

프로그래밍
c 언어
소켓 프로그래밍
c 프로그래밍
프로그래밍 언어론
네트워크 프로그래밍
웹 프로그래밍
언어 치료
프로그래밍 언어
시스템 프로그래밍
쉘 프로그래밍
언어 장애
통신 언어
남북의 언어
언어 교육원
리눅스 프로그래밍
언어 영역
남북의 언어
인터넷 언어
윈도우 프로그래밍
언어 폭력
언어 학회
c 언어 소스
shell 프로그래밍
언어 습득
언어 교육
모바일 프로그래밍
c 언어 강좌
프로그램 언어
언어 발달
프로그래밍 소스
프로그래밍 강좌
c++ 프로그래밍
남북한 언어
스크립트 언어
언어 도구
pda 프로그래밍
객체 지향 프로그래밍
씨 언어
사회 언어 학회
개발 언어
...이하 생략...

Tuesday, April 25, 2006

블로그의 사이트 피드를 피드버너(FeedBurner)에 등록

http://mwultong.blogspot.com/atom.xml
이것은 블로거닷컴에서 기본으로 제공해 주는 아톰 피드.


http://feeds.feedburner.com/mwultong
이것은 오늘 만든 피드버너의 피드.




피드버너의 장점


* "블로그/사이트 주소"나 "피드 주소"가 바뀌어도, 고정된 피드 주소를 영원히 가질 수 있다.

* 자신의 피드를 몇 명이 구독하는지 알 수 있다. 즉 피드 카운터를 제공한다.

* feedburner.com 에서 피드를 대신 호스팅해 주기에, 설치형 블로그를 운영할 경우, 자신의 서버에는 무리가 가지 않는다.

* 피드를 어느 정도 '사용자 정의' 할 수 있다.



피드버너의 단점


* 원래의 원본 피드(필자의 경우에는 이것: http://mwultong.blogspot.com/atom.xml)를 재가공하는 것이기에, 업데이트에 딜레이가 있다. 30분마다 한번씩 원본 피드를 체크하는 모양이다.

게시물을 수정하면 원본 피드는 즉시 수정이 반영되지만, 피드버너의 피드는 최대 30분이 걸린다. (단, 피드버너 사이트의 하단에 Ping FeedBurner 라는 곳에서 수동으로 업데이트하면 즉시 반영된다.)

* 피드 자체의 한글 지원은 완벽했지만, FeedBurner 설정 화면에서는 한글이 먹히지 않았다.





피드버너의 간단한 설정법



Analyze 탭에서 구독자 통계를 볼 수 있지만, 현재 구독자라곤 필자 한 명 외에는 없어서 그런지, 통계가 나오지 않았다.

다음 탭으로 넘어가 보았다:


Optimize / Browser Friendly

http://feeds.feedburner.com/mwultong 이런 피드버너 주소를 보면, XML 인데도 HTML 처럼 보인다. (보기에는 좋지만, 피드가 무엇인지 모르는 독자들은 더 헷갈리게 되는 단점이 있다)

이때 Browser Friendly 를 비활성화(inactive)시키면, 아래와 같이 전통적인(?) 방식으로, XML의 뼈대가 브라우저에 그대로 출력되었다.




그런데 이 Browser Friendly 에서, 피드 화면에, 한글로 피드에 대한 설명(Personal Message)을 좀 붙이려고 했더니, 설명문의 한글이 깨져 버렸다.





Optimize / SmartFeed
이건 기본적으로 켜져 있는데, 방문객의 리더기가 어떤 피드에 호환되는지 자동으로 판단하여, 적당한 포맷의 피더를 보내주는 강력한 기능이었다. 피더의 호환 문제는 이걸로 모두 해결될 듯하다.




Optimize / FeedFlare
피더의 각 게시물 하단에, "게시물을 누군가에게 이메일로 보낼 수 있는 주소"나, "del.icio.us 에 쉽게 북마크를 저장하는 링크"나, "코멘트 개수 표시" 등등을 나타낼 수 있는 기능이었다. 피드는 물론, 블로그 자체에도 나타낼 수 있었다.

블로그의 템플릿에 코드를 조금 추가해 주어야 했다. 그러나 아무래도 한글을 먹지 않을 것 같아서 아직 테스트해 보지 않았다. 다만 외국 블로거들이 사용하는 것을 본 적은 있고, 잘 작동했다.





Optimize / Convert Format
여기서 피드의 포맷을 바꾸어 줄 수도 있는데

위에서 말한 SmartFeed 가 켜져 있으면 이 옵션 변경을 추천하지 않았다.(Important: We recommend not using this service if you use SmartFeed. SmartFeed will override any Convert Format settings in order to make your feed compatible with all feed readers, whether they support Atom, RSS, or both.)

이 옵션을 사용할 필요가 없는 듯했지만, 원본 피드가 이미 아톰 피드이기에, 피드버너의 피드는 RSS 2.0 으로 설정해 보았다. 그랬더니 Atom 0.3 으로 나오던 피드가 이제 RSS 2.0 으로 나오기 시작했다.

피드버너는 아래의 4가지 포맷을 지원하고 있었다. 기본값은 "Atom 0.3"이었다. (피드버느도 구글처럼 아톰을 선호하는 모양이다)
RSS 1.0
RSS 2.0
Atom 0.3
Atom 1.0




Publicize / PingShot
아크몬드님의 코멘트를 참고

이 2개는 항상 체크되어 있고
Technorati
My Yahoo

이 3개를 더 체크해 주었다
PubSub
Ping-o-matic
Newsgator


블로거닷컴(blogger.com)의 블로그는 기본적으로, 구글 블로그 검색에 자동 등록되지만, 설치형 블로그 같은 경우 현재, 기술적인 문제로 등록이 어렵다. PingShot 을 체크해 주면 "구글 블로그 검색"에 자동 등록될 것이다.




결론


피드버너를 본격적으로 사용하고 싶은 생각은 없다. 블로거닷컴에서 기본적으로 제공되는 피드(http://mwultong.blogspot.com/atom.xml)에도 별로 불만이 없었다.


업데이트: lunamoth님의 말씀을 읽고 보니, 아톰으로는 충분하지 않고 RSS가 필요할 듯하다. 피드버너의 피드를, 보조 피드로서 사용해야겠다.







< 피드버너(FeedBurner) 사이트 >


▶▶ FeedBurner에 등록하면 '구글 블로그 검색'에도 등록됨

[QnA] 3dsmax.chm 이란? 3dsmax.chm 파일은 어디서 다운로드받나요?

3dsmax.chm 은 맥스 레퍼런스인데, 즉 '도움말+참고서'입니다. 맥스에 대한 모든 사용법이 이 파일 안에 다 들어 있습니다.

다운받을 필요는 없고, 맥스가 설치된 폴더 밑에 help 라는 폴더가 있습니다. 그곳에 있습니다.

가량 D:\3dsmax 에 맥스가 설치되어 있다면
        D:\3dsmax\help
여기에 있는 것입니다.


그 외에 많은 파일들이 있는데, 모두 영문으로 되어 있습니다:

3dsmax.chm <- 3ds Max User Reference
:가장 중요한 파일. 맥스 사용자 참고서

3dsmax_t.chm <- 3ds Max Tutorials
:맥스 자습서(튜토리얼). 원본 DVD의 Tutorials 폴더 안의 파일들이 있어야 따라해 볼 수 있음

backburner.chm <- Backburner Reference
:1대의 컴퓨터로 맥스를 할 때는 필요 없음

maxscript.chm <- MAXScript Reference
:맥스 스크립트 프로그래밍 참고서

mr_reference.chm <- mental ray manual
:렌더러인 mental ray 와 쉐이더인 LumeTools 참고서. (내용이 부실함)


newfeatures.pdf <- New Features Guide
:맥스의 새로운 기능들 소개.

reactor.chm <- reactor 매뉴얼
:영화제작용 물리 시뮬레이터 참고서

max_reference.chm <- 여러 레퍼런스들을 한꺼번에 보기
max_reference.chw <- 레퍼런스용 데이터 파일




3dsmax.chm 와 3dsmax_t.chm 파일만 보시면, 맥스 책을 따로 구입하지 않아도 될 정도로 내용이 충실합니다. 다만 영문이라는 것이 문제긴 한데, 예전에, 한글로 번역된 3dsmax.chm 와 3dsmax_t.chm 파일을 디지탈캠프*라는 회사에서 배포한 적이 있습니다. 버전은 맥스5와 6일 겁니다. 주위에서 한번 수소문해 보시면 될 겁니다.

* www.dcamp.co.kr: "discreet 3ds max 국내 총판으로 유명한 디지털 콘텐츠 솔루션 및 스토리지 전문 기업인 ㈜디지탈캠프...": 그러나 지금은 연결이 안됩니다.

쉬운 영어로 되어 있으니까, 영문판을 읽어보시는 것도 좋습니다.

단, 멘탈레이(mental ray) 매뉴얼은 빈약하고 난해한데, 멘탈레이를 쓰는 곳은 국내에 거의 없을 것입니다. 다들 Vray를 사용하더군요. 물론 저도 렌더러 중에서 Vray를 가장 좋아합니다.

Monday, April 24, 2006

[QnA] 한자 폰트(글꼴) 있는 곳 / 좋은 한자 폰트는?

한자 폰트는 한글 폰트 속에 함께 들어 있습니다. .TTF.TTC 확장자를 가진 파일입니다. 크기가 작은 한글 폰트에는 한자가 들어 있지 않고, 10메가 이상되는 큰 한글 폰트에만 한자 폰트가 있습니다.


하드디스크에서의 글꼴 위치



MS윈도에서는 C:\WINDOWS\Fonts 이 폴더 속에 폰트들이 들어 있습니다. (윈도2000의 경우는 C:\WINNT\Fonts )

그렇지만 윈도에서 기본적으로 제공되는 한자 폰트는, 명조과 고딕 2가지뿐이고(바탕체와 굴림체 속에 들어 있을 것입니다), 모양도 평범합니다.




워드프로세서 설치 CD에서 한자 폰트 골라내기



아래아한글 설치CD 나 MS오피스 설치CD를 윈도탐색기로 훑어보면, .TTF.TTC 파일들이 많이 있습니다. 확장자가 보이도록 탐색기를 설정하면 쉽게 찾을 수 있습니다.


그런데 한글 글꼴에서 엔터키를 눌러 '폰트 뷰어'로 보아도, 한자 글꼴까지는 보이지 않을 것입니다. (윈도 내장 '폰트 뷰어 Font Viewer'가 아닌 전문 폰트뷰어라면 보이겠지만, 인터넷에서 다운로드받을 수 있는 폰트뷰어들은 대부분 영문용이라서, 한글 폰트를 잘 보여주지 못하더군요.)

CD의 한글 글꼴을 모두, 마우스로 드래그하여 C:\WINDOWS\Fonts 에 카피한 후,

MS워드나, 프로그램/보조 프로그램/워드패드 를 실행하고,

임의의 한자를 쓰고 가령 "五福星 小說 哀愁列車" 등으로

폰트 크기를 48포인트(point)나 72포인트로 잡아, 이렇게 확대시킨 후


五福星 小說 哀愁列車



CD에서 가져온, 한자가 들어 있는 한글 폰트를, 위의 한자들에, 하나씩 지정하며 검토합니다. (위에서 예로 든 큰 한자들은, 윈도에 기본으로 설치되어 있는 한글폰트인 '바탕' 글꼴에 들어 있는 명조체 한자입니다.)


적당한 한자 글꼴이 선택되었으면, 아까 CD에서 복사해 왔던 다른 한글글꼴들은 지우는 것이 좋습니다. (Fonts 폴더에 폰트들이 너무 많이 있으면 윈도우 시스템이 느려질 수도 있고 다운이 될 수도 있기 때문입니다.)
다만 윈도에 기본적으로 설치되어 있는
굴림 & 굴림체 & 돋움 & 돋움체
바탕 & 바탕체 & 궁서 & 궁서체
이 글꼴은 절대 지우면 안됩니다.





추천할 만한 한자 폰트들




한글 한자 폰트 - Fonts Korean Hanja


휴먼견출둥근고딕
둥근 고딕 한자는 이것밖에 없더군요. 획들이 약간 불균형한 것이 아쉬운 점입니다.

HY해서M
상당히 좋은 폰트입니다.

HY견명조
책 표지 활자로, 특히 사전류에서 흔히 사용되는 폰트입니다. 격조가 높고 균형이 잡힌 데다, 무엇보다도 실제 활자와 똑같기 때문에 이질감이 없습니다.

이상의 폰트는 워드프로세서 설치CD 안에서 흔히 발견할 수 있는 폰트들입니다. (그리고 잘 기억은 나지 않지만, 'HY견명조'는 MS워드/오피스 설치CD 안에 있더군요.)




일본의 한자 폰트들



일본 한자 폰트 - Fonts Japanese Kanji

이것은 일본의 한자 폰트들입니다. 한글 윈도에서도 아무 문제 없이 사용할 수 있습니다.(다만 폰트뷰어로는 잘 보이지 않습니다.) 일본어 워드프로세서인 '이치타로' 안에 있는 폰트일 것입니다. (업데이트: "JUST Suite 2008"이라는 일본 오피스 패키지를 설치하면 "Ichitaro 2008"도 설치되는데 그 안에 위의 DHPGyoSho-Lt 라는 일본어 행서체가 들어 있었습니다.)


한국에서는 사실상 한자를 쓰지 않기 때문에 질 좋은 한자 폰트도 거의 만들어지지 않습니다. 한자 폰트가 필요할 때는 일본어 폰트에서 골라보는 것도 좋을 듯합니다. 앞으로 중국에서 중문 폰트가 많이 나올 수도 있겠지만 지금으로서는 별로 보이지 않더군요.


DHPGyoSho-Lt
DFGyoSho-Lt & DHPGyoSho-Lt.ttc
실제 붓글씨를 폰트로 만든 것인데 명필입니다. '애'라는 글자에서 '애'가 느껴지고, '수'라는 글자에서 '수'가 느껴지지 않습니까. 붓글씨 폰트 중에서 가장 훌륭한 것이었습니다. 이 폰트로 병풍(屛風)이나 족자(簇子)도 만들 수 있겠더군요.


江戸勘亭流
EDO-KANTEIRYU.ttc
'에도간테류'

이것은 일본 에도 시대의 가부키 극장에서 사용하던 서체라고 합니다. 손님들이 빽빽하게 많이 들도록 기원하는 의미에서 획들을 빽빽하게 만들었다고 하더군요. 요즘도 스모 대회 선수 명단 등에서 볼 수 있습니다.





업데이트:
한자(한문) 예서체 폰트(글꼴) 소개




▶▶ 좋은/특이한 한글 폰트(글꼴)들 소개

▶▶ [QnA] 행서체 (行書) / 궁서체 / 붓글씨 한자 폰트는?




[HTML/CSS] 포스트 제목 툴팁(tooltip)의 쌍따옴표/홑따옴표 문제 해결

포스트 하단의, '날짜와 LINK' 부분에 마우스 커서를 가져가면, 툴팁(말풍선)에 포스트 제목이 나오도록 했었다.

그런데 어제 자세히 살펴 보니, 이 툴팁(tooltip)에 나타난, 특정 포스트 제목이 반쯤 잘리는 것이었다. 포스트 제목에 쌍따옴표가 들어간 경우에 그랬다.


문자열을 툴팁에 나타낼 때, 문자열 일부에 따옴표를 섞어서 사용하기 위해서는, 가령 이런 문자열의 경우 zzz(따옴표)aa(따옴표)zzz:


<a href="ADDRESS" title="zzz'aa'zzz">TEXT</a>
또는
<a href="ADDRESS" title='zzz"aaa"zzz'>TEXT</a>
이어야만 한다. 쌍따옴표로 문자열의 범위가 지정되었을 때는 홑따옴표를 따옴표로서 사용하고, 그 반대의 경우는 반대로 하는 식인 것이다.


그러나 이렇게 되어 있었다:
<a href="ADDRESS" title="zzz"aa"zzz">TEXT</a>

문제가 생길 만도 했다. 이러면 어디까지가 툴팁 문자열인지 알 수가 없다. (물론 일반 문자열 표현에서는 쌍/홑따옴표를 그대로 사용해도 전혀 문제가 없다. 속성의 값으로 들어갔을 때만 생기는 문제다.)

프로그래밍에서라면 명백한 에러를 출력해 주기에 즉시 알 수 있지만, 브라우즈는 코드에 에러가 있더라도 아무런 메시지가 없어서, 뒤늦게야 심각한 버그를 겨우 알아채는 경우가 많았다.



블로거닷컴에서는 제목의 쌍따옴표(")를 &quot; 으로 바꾸어 주지도 않았다. 제목을 제목으로서만 사용할 때는 아무 문제가 없기에 이것은 어쩌면 당연한 것이다.

툴팁을 없애버린다고 해서 문제가 근본적으로 해결될 것 같지는 않았다. 쌍따옴표를 남겨두면 언젠가는 화근이 될 것 같았다.

결국 포스트 제목에서 쌍따옴표를 모두 홑따옴표로 바꾸어 주는 수밖에는 없었다.


설치형 블로그라면 FTP로 다운받아서 일괄처리할 수 있겠지만, 가입형 블로그라서 그런 것도 되지 않았다. '노가다'밖에는 없었다. 지금 생각해 보니 가입형 블로그라는 것이 참 부자유스러운 것이었다. 전문 블로거들이 왜 가입형 블로그를 쓰지 않는지 이제서야 좀 알 것 같다. 어제, 설치형 블로그를 해볼까 하고 고민했었다. 그러나 설치형 블로그도 나름대로의 어려움(호스팅 문제 등)이 있을 것이고 해서, 결국 포기할 수밖에 없었다.










참고로, 이것이 그 툴팁에 제목 나오게 하는 코드인데, 그리 유용하지는 않다:
<span style="font-family:Arial; font-size:10pt; font-weight:bold; font-style:italic;">posted by <$BlogItemAuthorNickname$> <span style="color:#FF9900;">@</span> <a href="<$BlogItemPermalinkUrl$>" title="Permanent Link: <$BlogItemTitle$>"><$BlogItemDateTime$><MainOrArchivePage>&nbsp; <span style="font-family:Arial; font-style:normal; color:#99CC00;">Link</span></MainOrArchivePage></a></span>






위의 코드에서, 핵심 부분은 이것
<a href="<$BlogItemPermalinkUrl$>" title="Permanent Link: <$BlogItemTitle$>"><$BlogItemDateTime$></a>





관련 게시물: [HTML] 자바스크립트 소스에서, 쌍따옴표 홑따옴표 표현하기 (이스케이프 Escape)

[독서] 마광수 소설 '권태' 프리뷰 (문학사상사)

마광수(馬光洙) 장편소설 『 권태 』 본문 첫페이지




변태는 즐거워라, 사랑이 오면




손톱을 길게 기른 여자를 상상하면서 신경질적으로 수음(手淫)하는 것에도 그만 지쳐버렸을 즈음에 그녀가 나타났다.

그녀를 처음 본 것은 어느 호텔 지하에 있는 나이트 클럽에서였다. 그곳은 다른 나이트 클럽과는 좀 색다른 모양으로 꾸며져 있었는데, 스탠드 바에서 술을 마실 수도 있고 정식으로 테이블을 차지하고 술을 마실 수도 있고 또 한쪽 구석에 있는 댄스홀에 가서 몸을 흔들어대며 춤을 출 수도 있는 곳이었다. 스텐드 바 옆에는 잘생긴 당구대와, 화살 비슷하게 생긴 것을 과녁을 향해 손으로 던져 맞히면서 점수를 계산해가며 놀 수 있는 게임 룸이 붙어 있었다. 클럽 한가운데 중앙부분에는 둥글게 원형으로 된 스탠드가 자리잡고 있는데 스탠드 바는 혼자 오는 손님들로 항상 만원이었다. 테이블의 좌석은 대게 네 개씩이었으므로 혼자서 한 테이블을 몽땅 차지하고 술을 마시기엔 너무 부담스럽기 마련이다.

스탠드 바는 홀몸으로 한잔 하기에 아주 좋은 곳이다. 누가 처음 아이디어를 낸 것인진 모르겠지만, 아무튼 서양 어느 놈이 고안해 낸 거겠지. 우리나라 사람들은 혼자서는 술을 잘 못 마시는 버릇을 가지고 있어서 꼭 둘이나 셋이 어울려 왁자지껄 떠들어가며 술을 마셔야만 직성이 풀리는 모양이다. 하지만 나처럼 매일 조금씩이라고 알콜 기운이 있어야 머리가 돌아갈 것 같고, 그래서 찌뿌두둥한 우울증을 잠깐이나마 사라지게 할 수 있는 처지로서는 매일같이 술 친구 장만하기도 퍽 힘든 노릇이다...




마광수 교수의 소설 "즐거운 사라"가 음란물 판정을 받아 구속됐던 사건을 다 아실 것입니다.

마광수 교수의 신작 시집인 "야하디 얄라숑"이 이번에는 간행물윤리위로부터 '청소년 유해' 판정을 받았더군요.


구글로 검색을 해보니까 제가 모르던 내용들도 있었습니다. 마광수 교수의 주장인데요:

"'즐거운 사라' 파동 때 이문열은 내 소설을 읽고 구역질이 난다고 했다."
95년엔 배꼽티를 입은 여자를 구속시켰다.

이런 일도 있었군요.

그런데 "즐거운 사라"와 달리, 이 소설 "권태"는 판금이 되지 않았습니다.




목차

1. 변태는 즐거워라, 사랑이 오면
2. 너는 귀여운 매저키스트
3. 졸립고 지루한 일장(一章)
4. 꿈속에서 나는 왕이 됐지
5. 오르가즘은 없다
6. 초추(初秋)의 양광(陽光)
7. 먹기와 싸기
8. 철썩 철썩 아아아아악

영상기획·영화 <권태>를 위한 메모
작가의 말



출간일: 1990-01-22
페이지: 424쪽
출판사: 문학사상사

값은 5000원인데, 1990년 당시에는 대부분의 소설이 5000원이었고, 상당히 분량이 많은 소설의 경우 6000원이었습니다. 근래에는 대개 9000원 정도인데, 최근에는 책값이 더욱 올라서 10000원이 넘는 경우도 흔하더군요. 이제 부유층이 아니면 소설을 접하기 힘들 것 같습니다.

Saturday, April 22, 2006

[독서] 한강(韓江) 소설 '몽고반점' (이상문학상 대상 수상작) 프리뷰 (문학사상사)

한강(韓江) 소설 『 몽고반점 』 본문 첫페이지




짙은 보라색 커튼이 무대를 덮었다. 반라의 무용수들은 자신들의 모습이 보이지 않게 될 때까지 힘차게 손을 흔들었다. 객석의 박수 소리는 컸고 간혹 '브라보!' 하는 고함 소리가 들려왔으나 커튼콜은 없었다. 환호는 순식간에 사그라들었고, 관객들은 주섬주섬 짐과 옷을 챙겨 통로를 찾았다. 그도 꼬고 있던 다리를 풀고 일어섰다. 환호의 오 분여 동안 그는 단 한 차례의 박수도 치지 않았다. 팔짱을 낀 채, 열광에 목마른 무용수들의 간절한 눈과 입술을 잠자코 올려다보았다. 그는 그들의 노고에 연민과 경의를 함께 느꼈으나, 자신의 박수가 안무가에게 보내지기를 원치 않았다.

그는 공연장 밖의 홀을 가로질러가며, 이제 쓸모없는 것이 되어버린 공연 포스터를 일별했다. 시내 서점에서 우연히 저 포스터를 발견하고 그는 몸을 떨었었다. 방금 끝난 마지막 공연을 행여 놓칠까 봐 불안해 하며 서둘러 전화 예약을 했다. 포스터에는 벌거벗은 남녀가 등을 보인 채 비스듬히 앉아 있었다...


"2005년 제29회 이상문학상 작품집"에 포함된 단편소설입니다. 그리고 "몽고반점"은 이상문학상 대상 수상작입니다. 이 책 표지에 보니까, "심사과정의 공정성과 수상작의 탁월한 작품성으로, 현대 소설의 흐름을 대변하는 소설 미학의 절정" 이라고, 이상문학상을 자평하고 있군요.

한강(韓江) 선생은 한승원 선생의 따님입니다. 부녀 소설가입니다.

"몽고반점"은 처제와 형부의 불륜을 다룬 소설입니다.




출간일: 2005-01-20
페이지: 378쪽
출판사: (문학사상사)


☞ 독서

[HTML/CSS] 메타 태그(META TAG)의 'REVISIT-AFTER' 속성은 이제 쓸모 없는 듯

몇 달 전 블로그를 처음 만들었을 때는 구글이 2주만에 한 번씩만 크롤해 갔기에 좀 속상했다. 처음 생긴 사이트는 우선 구글의 샌드박스(sandbox)에 몇 달 동안 들어가기 때문에 그런 것이라고 하는데, 이제는 그 모래상자에서 좀 빠져나왔는지 자주 인덱스되고 있다. 3~5일에 한 번 정도.

구글 크롤러가 매일 오게 할 수는 없나 하고 생각해 보니 예전에, 개인홈페이지의 황금기에, 이런 메타태그(meta Tag)가 유행했었다:

<meta name="revisit-after" content="1 days" />

검색 엔진으로 하여금 하루에 한 번씩 방문하도록 하는 태그다. 이 태그를 메인 페이지에 넣을 작정이었다. 혹시 이 태그가 지금도 유효한가 해서 구글에서 검색해 보았더니, 권유할 만하다는 의견이 있었다.


그러나 CSE HTML Validator Pro v7.01 에서 위의 태그를 검사해 보았더니 다음과 같은 메시지가 나왔다:

[110] The "revisit" and "revisit-after" meta tags are suppose to tell search engine robots how often to recrawl a page. However, these meta tags are generally regarded as useless because search engines do not follow them and there is no agreed upon syntax. Because of this, AI Internet Solutions recommends that this meta tag be removed.



요즘에는 위의 태그가 쓸모가 없다고 했으며, 지우라고 했다. 게다가 위의 메타태그는 표준으로 공인된 것도 아니었다. 그래서 블로그 템플릿에 넣지 못했다.

추억 속의 태그인 듯하다...

Friday, April 21, 2006

[독서] 한승원 소설 '흑산도 하늘 길' 프리뷰 (문이당)

한승원 소설 『흑산도 하늘 길』 본문 첫 부분




흑산도행

약전은 나주 다경포에 이르러 배를 탔다. 유배살이 할 흑산도로 건너가기 위해서였다. 배는 고물을 모래톱에 대 붙이고 있음에도 먼 바다에서 달려온 황소 떼 같은 파도들로 말미암아 뱃머리를 상하좌우로 흔들어 댔다. 배에 오르자마자 느껴진 어지럼증 때문에 이물의 덕판 옆 갑판에 주저앉아 눈을 감았다.

전라도로 열이틀 동안이나 이어 걸어온 유배 길이 너비를 해량할 수 없도록 아득한 암청색의 험한 바다 저쪽 언덕으로 건너가는 여행인 듯싶었다. 어린 시절, 아버지의 임지인 전라도 화순과 경기도 마현 사이를 왕래하면서 무수히 느끼곤 했다. 멀고 먼 여행의 끝자락에서 돌아보면, 굽이굽이 발 닿는 곳에서 만나 본 하늘이나 구름이나 산이나 들이나 강이나 마을이나 사람이나 나락밭이나 콩밭이나 무성한 풀숲들이 어지러운 꿈속에서의 일처럼 아물아물 녹아내리다가 암청색의 꺼끌꺼끌하고 울퉁불퉁한 물너울로 꿈틀거리며 살아났다.

얼마 전, 한양에서 신지도까지의 유배 길과 이번 한양에서 나주 다경포까지의 유배 길에서도 그는 마찬가지 느낌을 맛보았다.

무엇인가가 스쳐 지나가는 듯싶어 눈을 뜨니 새 한 마리가 머리 위를 선회하고 있었다. 점박이 갈매기였다. 저놈은 맵찬 바람 몰아치는 초겨울의 거친 바다 어느 구석에서 살고 있을까. 갈매기가 그를 알아보고 그러는 듯싶어 그놈과 눈길을 맞추기 위해 고개를 쳐들었다. 선회하는 그놈을 따라잡기 위해 고개를 돌리다가 다시 어지럼을 느꼈다. 먼 바다에서 달려와 뱃전을 치는 파도와 그로 말미암아 기우뚱거리는 배가 그를 더욱 어지럽게 했으므로 두 손으로 뱃전 시울을 붙잡았다...


한승원 선생은 소설가 한강(韓江) 선생의 부친이시기도 합니다. 『흑산도 하늘 길』은 정약전의 유배생활에 대한 소설입니다. 정약전은 『현산어보』의 저자이며, 다산 정약용의 둘째 형입니다. "『흑산도 하늘 길』은 제목부터가 매력적이다"라고 이해인 수녀님께서 평하시더군요.





목차

흑산도행
소흑산도
가오리 코에 닻을 놓는 사람들
틈입자
아전과 수군
하늘천(天) 자 가르치기의 두려움
주역점
거무
두 개의 얼굴
편지
...


출간일: 2005-03-30
페이지: 326쪽
출판사: 문이당

[HTML/CSS] 스크롤바(Scrollbar) 색상 변경하기 (IE 전용)

※ 이 포스트는 파이어폭스에서 볼 수 없습니다. 인터넷 익스플로러(IE)에서만 제대로 보입니다.

CSS로 웹브라우저 스크롤바(Scrollbar)의 색상을 변경할 수 있지만, 웹표준이 아니기에 파이어폭스에서는 보이지 않습니다. 파이어폭스는 이 스크롤바 속성을 그냥 무시해 버립니다. 충돌하거나 문제가 생기는 일은 없습니다.

웹브라우저(IE)에 나타나는 모든 스크롤바의 색깔을, 전체적으로 혹은 개별적으로 바꿀 수 있습니다.



브라우저 전체의 스크롤바 색깔 바꾸기



html {
  scrollbar-face-color:#66CDAA;
  scrollbar-3dlight-color:#66CDAA;
  scrollbar-highlight-color:#FFFFFF;
  scrollbar-shadow-color:#FFFFFF;
  scrollbar-darkshadow-color:#66CDAA;
  scrollbar-arrow-color:#FFFFFF;
  scrollbar-track-color:#E2F1EC; }


가령 위의 박스 안에 있는 코드를


<html>
<head>
<style type="text/css">

...여기에...

</style>
</head>


<head> 태그 안의 <style type="text/css"> 태그 안에 넣어주면, 브라우저 우측의 스크롤바가 녹색으로 변경됩니다. 실은 브라우저 안의 모든 스크롤바가 일제히 녹색으로 변경됩니다.

html { 이 아닌

body { 에 지정할 수도 있는데, 이러면 XHTML 1.0 Strict 규약과 충돌(?)하기에, 반드시 위의 코드 박스처럼 html { 로 지정해야 제대로 작동합니다.





특정 DIV 박스의 스크롤바의 색깔만 바꾸기



예를 들어, 다음과 같이 색상별로 클래스 정의가 필요합니다.

.wasabi-code-box {
  font-family:'돋움체', monospace; font-size:10pt;
  background:#E2E2FF;
  overflow:scroll; white-space:nowrap;
  width:98%; padding:10px;

  scrollbar-face-color:#FFB9B9;
  scrollbar-3dlight-color:#FFB9B9;
  scrollbar-highlight-color:#FFFFFF;
  scrollbar-shadow-color:#FFFFFF;
  scrollbar-darkshadow-color:#FFB9B9;
  scrollbar-arrow-color:#FFFFFF;
  scrollbar-track-color:#FFEEEE; }

.wasabi-scroll-box {
  font-family:'돋움체', monospace; font-size:10pt;
  overflow:scroll; white-space:nowrap;
  width:98%; height:300px; padding:10px;
  border:1px solid #C8C9FF; border-right-style:none; border-bottom-style:none;

  scrollbar-face-color:#C8C9FF;
  scrollbar-3dlight-color:#C8C9FF;
  scrollbar-highlight-color:#FFFFFF;
  scrollbar-shadow-color:#FFFFFF;
  scrollbar-darkshadow-color:#C8C9FF;
  scrollbar-arrow-color:#FFFFFF;
  scrollbar-track-color:#C8C9FF; }

.wasabi-console-box {
  font-family:'돋움체', monospace; font-size:10pt;
  background:#000000; color:#FFFFFF;
  overflow:scroll; white-space:nowrap;
  width:98%; height:25em; padding:10px;
  border:1px solid #C5C5E6; border-right-style:none; border-bottom-style:none;

  scrollbar-face-color:#C5C5E6;
  scrollbar-3dlight-color:#C5C5E6;
  scrollbar-highlight-color:#FFFFFF;
  scrollbar-shadow-color:#FFFFFF;
  scrollbar-darkshadow-color:#C5C5E6;
  scrollbar-arrow-color:#FFFFFF;
  scrollbar-track-color:#C5C5E6; }


위의 코드를 역시

<html>
<head>
<style type="text/css">

...여기에...

</style>
</head>

넣어주어야 합니다.


그런 후 페이지 본문에서 다음과 같이 사용하면 됩니다.
여기서는, 위의 클래스 내용 중에서 scrollbar... 부분만 중요한 것입니다.

※ 클래스 이름 중의 wasabi 라는 것은, 다른 분들이 만든 클래스와 충돌하지 않도록 제가 사용하는 고유ID입니다. 이것을 여러분들의 ID로 바꾸어 주면 좋습니다. 가령 .mupama-code-box 등으로...



<div class="wasabi-code-box">
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
</div>




<div class="wasabi-console-box">
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
</div>




<div class="wasabi-scroll-box">
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
이런저런 내용들...
</div>



위와 같이, 스크롤바에 각각의 색상들이 지정되었습니다.


DIV 만이 아니라, 스크롤바가 붙을 수 있는 모든 요소들, 가령 TEXTAREA 박스에도 적용이 가능합니다.




포토샵으로 CSS용 색깔 코드 선택



Adobe Photoshop Color Picker

포토샵(Adobe Photoshop)의 컬러 픽커(Color Picker): 클릭하면 확대

포토샵(Adobe Photoshop)을 실행시킨 후, 좌측의 스포이드가 가리키고 있는 부분을 클릭하면, 그림 우측처럼 "컬러 픽커(Color Picker)"가 나옵니다. 여기서 색깔을 고르고 조정한 후, 픽커 하단의, 예를 들어 #C5C5E6 라고 있는 부분을 선택한 후, Ctrl+C 키로 복사하여, 웹페이지의 CSS코드에 Ctrl+V 키로 붙여 넣어 주면 됩니다. (가령 위의 그림에서 보이는 #C5C5E6 은 연한 청회색입니다)

CSS에 RGB색상코드을 적어 줄 때에는 앞에 반드시 #(Number sign; 샤프; 일명 우물정자)를 붙여야 합니다. 다만 색상의 고유명을 직접 적을 때에는 가령 red 라고 적을 때에는 앞에 이렇게 #red 라고 적으면 안됩니다. 그냥 red 여야 합니다.

이런 식으로 색깔을 CSS코드로 바꾸어 주어야 합니다.



그런데, 이 스크롤바 색깔 선택이 생각보다 쉽지가 않습니다.

scrollbar-face-color
scrollbar-3dlight-color
scrollbar-highlight-color
scrollbar-shadow-color
scrollbar-darkshadow-color
scrollbar-arrow-color
scrollbar-track-color

이런 요소들을 각각 지정해 주어야 하는데, 아주 복잡미묘합니다.

일본 사이트에 보면 "스크롤바 색깔 유틸리티"도 있고 예제도 많습니다. 여기서 카피해서 사용하는 것이 쉽습니다. (일본어는 몰라도 상관없습니다...)

구글 재팬에서, 스크롤바 예제 검색




관련 게시물:
[HTML-CSS] div 태그에 스크롤바(Scroll Bar) 붙이기


더 읽기: HTML/CSS/JavaScript

Thursday, April 20, 2006

야후ID로 플리커:Flickr.com(무료이미지호스팅/사진공유)에 자동 가입

플리커(플릭커)에 가입을 할까 말까 했는데, 오늘 가입하려고 보니 사실상 가입되어 있었다! 왜냐하면 레몬향기혜성(필명)이 이미 yahoo.com 의 야후메일을 사용하고 있었기 때문. (플리커가 야후에 인수되었는데 지금 생각해 보니 이런 편리한 점이 있었다)

(왜 가입을 할까 말까 망설였느냐 하면 ID 관리가 힘들었기 때문이다. 암호를 기억하고 최소한 1달에 한번씩 로그인을 해주고 이런저런 귀찮은 일이 많다. 이미 가입한 인터넷 서비스가 한두 개도 아니고 수십 개가 넘기 때문에 부담스러웠다. 그런데 야후ID로 자동 가입된다면 편리했다.)


야후에는 예전부터 Yahoo! Photos 라는 서비스가 있는데 계정에 고작 30메가만 올릴 수 있는 등 좋지 않았다.



플리커(Flickr.com) 사용기



Upload your first photo 를 클릭하여 첫 사진을 올렸다.

1024x768 짜리 png 파일(52KB)인데, 잘 올라갔다. 블로거닷컴에 이 그림을 올렸다면, 200KB짜리 JPG로 변환되어 버리고 화질도 구리게 변질되었을 것이다. 그러나 플리커에서는 문제 없었다.



블로거(blogger.com) 화면에 적합한 사이즈인, 400x400 짜리 png 그림도 원본 그대로 잘 올라갔음. (다만 플리커 도움말에는 무료 사용자의 경우 원본 사진에 접근할 수 없다고 되어 있다. 그러나 방금 올린 사진을 다시 다운로드받아서 CRC32 체크를 해 보았는데 100% 원본이었다.)


블로거닷컴의 그림 업로드보다는 훨씬 나았다. 블로거닷컴에는 올린 그림을 지울 수조차도 없고, 자신이 어떤 그림을 올렸는지 리스트조차 볼 수 없다. 게다가 지금 현재는 GIF와 PNG를 올리면 자동으로 JPG로 변환되어 버린다.



플리커(Flickr.com)에는 블로그에 직접 사진을 올릴 수 있는 기능이 있었다. 블로거(blogger.com)까지도 인식했다. 블로거(blogger.com)의 아이디와 암호를 플리커에 입력하면, 플리커에서 블로거(blogger.com)로 사진과 글을 포스팅할 수 있었다. 포스팅 자체는 잘 되었지만, 그림 크기 조절하는 부분에 말썽이 있어 사실상 사용하기 불가능했다. 예를 들어, 레몬향기혜성의 블로그는 넓이가 최대 400픽셀인 그림만을 포스트 본문에 넣을 수 있다.(그 이상 크기의 그림은 클릭을 해서 원본을 보여준다) 그런데 플리커는 400픽셀이 약간 넘도록 리사이즈해서 블로그 레이아웃이 깨져 버렸다.

물론 블로그 본문 화면이 넓은 블로그에서는 위의 문제가 생기지 않을 것이다. 레몬향기혜성의 블로그는 본문 부분이 너무 좁아서 이런 문제가 자꾸 생긴다.




플리커(Flickr.com)의 제한 사항들



* 업로드 관련
사진 업로드에 약간 제한이 있었는데, 한 달에 총 20메가의 파일만 올릴 수 있었다. 그렇지만 이 정도면 사실상 무한대 용량이다. 20메가 용량이라면, 크기가 크고 고화질인 JPG 사진으로 약 80장 정도다. 크기가 작은 사진이라면 200장 정도도 충분히 올릴 수 있을 것이다.



업데이트 (2006-12-13) :
이제는 한 달에 올릴 수 있는 사진들의 총 용량이 100MB 로 늘었습니다.





무료 이미지 호스팅 서비스로서의 플리커



플리커를 이미지 호스팅 서비스로도 사용할 수 있다. (다만, 컨텐츠의 본문에만 사용할 수 있고, 홈페이지 구성 요소 즉 '버튼'이나 '장식 그림' 등으로는 사용할 수 없었다. 약관에 그렇게 나와 있었다.)


이미지를 올리면 다음과 같은 절대적인 주소 2개가 제공되었고, 이것을 자신의 블로그나 홈페이지에 쓸 수 있었다. 예를 들어 다음과 같다:
http://static.flickr.com/48/128289761_a80d6cd066_o.png

<a href="http://www.flickr.com/photos/mwultong/128289761/" title="Photo Sharing"><img src="http://static.flickr.com/48/128289761_a80d6cd066_o.png" width="400" height="400" alt="ps_mosaic_rgb" /></a>


이미지 호스팅 서비스로 사용할 경우, 트래픽에는 제한이 없었다. 약관에 그런 내용이 없었다.





문제점들



* 이미지 관련
애니메이션 GIF를 올릴 수 없는 것이 안타까웠다.

그래픽 파일의 이름이 랜덤한 이름(예: 128289761_a80d6cd066_o.png)으로 자동 변경되어 버리는 것도 실망스러운 점이다. 그리고 예를 들어, 128289761_a80d6cd066_o.png 이런 이름의 파일을 다운받아서 다시 올리면 또다른 이름으로 변경되었다.


* 3개월(90일) 동안 로그인하지 않으면 사진이 모두 삭제됨
이것이 가장 문제였다. 사람이 살다보면 몇달 동안 인터넷을 못할 때도 있다. 그런다고 그동안 올린 사진들이 모두 지워져 버린다니 얼마나 끔찍한가.

블로거(blogger.com)에는 로그인을 오랫동안 안하더라도, 무엇을 삭제한다든지 하는 약관 혹은 정책은 보이지 않았다. 지메일의 경우에는 9개월 동안 로그인 하지 않으면 계정이 삭제된다는 제한이 있긴 했다. 그렇지만 플리커의 3개월은 너무 짧다.


레몬향기혜성은 플리커를 사진앨범으로 사용하려는 것이 아니라 무료 이미지 호스팅 서비스로 사용하려 했는데 그럴 경우, 몇 달 인터넷을 하지 못하면 블로그의 그림들이 모두 사라져 버릴 위험이 있었다. 파일명도 유동적이어서, 그림을 다시 업로드한다 하더라도 링크들이 모두 깨져 버릴 것이다.

결국 이미지 호스팅으로 사용하기에는 좀 무리가 있었다.



기타 사용법



사진을 올리면 기본값이 Public 으로 되어 있어 타인들이 즉 전세계인들이 다 볼 수 있게 되어 있다. 가족사진 등은 되도록 Private 으로 설정해서 프라이버시를 보호하는 것이 좋다. (다만 만약 Private 으로 설정하면 이미지 호스팅이 안 될 것 같다)



개인화된 주소 공간(Flickr web page)



플리커에 가입하면 이런 주소들이 또한 생긴다:

이것은 자신의 앨범에 해당하는 주소
http://www.flickr.com/photos/mwultong/

이것은 프로필(자기 소개) 주소
http://www.flickr.com/people/mwultong/



자기 소개용 아이콘 만들기



프로필 화면에는 아이콘이 필요했다. 기본 아이콘은 로보트처럼 생겼는데 너무 딱딱했다.

48 X 48 픽셀의 아이콘이 있어야 한다는데, 아무 사진으로나 자동으로 만들 수 있었다.


프로필 편집 화면에서
        Edit your profile (Looking for your buddy icon or screen name...

위의 문자열에서 buddy icon 을 클릭하면
http://www.flickr.com/iconbuilder/
라는 곳으로 가는데 (로그인 상태여야 함)
여기서 아이콘을 간단히 만들 수 있다.

아래와 같은 3가지 방법으로

In my Flickr photos <- 자기 플리커 앨범에서 고르기
On my computer <- 자기 PC에서 고르기
On the web <- 웹 상에서 고르기

사진이나 그림을 골라서 지정해 주면, 아이콘 편집기가 나타난다. (매크로미디어 플래시가 켜져 있어야 함)

일반 사이즈의 큰 사진에 범위를 지정해 주고
MAKE THE ICON 버튼을 눌러주면 아이콘이 완성된다. 쉽고 재미있었다.





결론



플리커 자체는 아주 좋은 서비스였다. 미션 크리티컬한 용도가 아닌, 가벼운 기분으로 사진이나 그림을 보관/공유/호스팅하고 싶은 분에게는 추천할 만한 곳이었다. 사이트 디자인도 깔끔하고 편리했다. 야후ID를 사용하기에, 야후의 다른 서비스들도 별도의 절차 없이 사용할 수 있다는 장점도 있다.




Flickr 사이트로 가기

[HTML/CSS] 긴 URL 의 행갈이(Wrap)를 위한 TEXTAREA 태그(tag)

이번달 10일에,
자동으로 현재 페이지의 링크 코드 생성하여, 페이지에 붙이기
라는 포스트를 작성했는데, 페이지의 주소가 즉 URL이 아주 길 때에 문제가 생겼다. URL이 행갈이(Word Wrap)가 되지 않고, 한 줄로 길게 이어져 출력되었고, 그 결과 웹페이지 레이아웃이 심각하게 깨져 버렸다.

URL을 가령
"http://mwultong.blogspot.com/2006/04/qna_114543117199903060.html"
이렇게 긴 주소를 DIV 태그로 감싼 것이 문제였다. DIV 태그에서는 공백이 없는 문자열을 행갈이하지 못했다. 처음에는 파이어폭스에서만 나타나는 문제인 줄 알았더니, IE6에서도 마찬가지였다.

그래서 결국 주소창을 TEXTAREA 태그 안에 집어 넣어야 했다. TEXTAREA 태그에서는 긴 주소도 행갈이가 되었다. 그렇지만 TEXTAREA 태그는 여러가지 제한이 많고 융통성이 없어서 쓰기 꺼려해 왔었다. 무엇보다 모양이 투박했다. CSS를 이용하여 TEXTAREA 태그를 좀 다듬어 주었다. 결국 DIV태그와 비슷하게 보였다.

TEXTAREA 태그에는 항상 스크롤바가 붙어 있는데, 이것을 제거할 방법은 없었다. 그리고 파이어폭스에서는, TEXTAREA 태그에 padding 을 줄 경우 스크롤바의 위치가 부자연스럽게 되어 버리는 버그(?)가 있었다. 스크롤바에도 padding 이 주어져 버리는 것이다. padding 은 태그 안의 내용물에만 주어지는 것인데 스크롤바에도 padding이 주어진다니 당혹스러웠다.


다만 TEXTAREA 태그의 장점이 있다면 DHTML을 사용한 "자동 선택"이 가능하다는 것이다.

자동 선택 코드:
<textarea onclick="this.select()" onfocus="this.select()">클릭하거나, 탭 키로 포커스를 주면 자동 선택이 됩니다.</textarea>


결과:




아무튼 IE6에서는 그럭저럭 좋은 결과가 나왔는데, 파이어폭스에서는 스크롤바의 위치 문제 때문에 결과가 부자연스러워졌다. 그렇지만 어쩔 수가 없었다.





템플릿을 이렇게 고쳐 주었다. 이것은 클래스 정의:
<html>
<head>
<style type="text/css">
...중략...

.wasabi-link-code {
  width:98%;
  background-color:white;

  border-top-color:#768BBC;
  border-bottom-color:#EFF1F8;
  border-left-color:#768BBC;
  border-right-color:#EFF1F8;
  border-style:solid;
  border-width:1px;

  scrollbar-face-color:#ECE9FF;
  scrollbar-3dlight-color:#ECE9FF;
  scrollbar-highlight-color:#FFFFFF;
  scrollbar-shadow-color:#FFFFFF;
  scrollbar-darkshadow-color:#ECE9FF;
  scrollbar-arrow-color:#FFFFFF;
  scrollbar-track-color:#ECE9FF; }

...중략...
</style>
...이하 생략...




이것은 템플릿 본문:
<ItemPage>
  <div style="font:bold 10pt 'Tahoma'; text-align:right; color:#66CC66; margin-top:60px; margin-bottom:4px;">Link Code</div>
  <textarea id="link_code" readonly="readonly" rows="4" class="wasabi-link-code" style="font:10pt '돋움'; padding:6px 1px 6px 6px;" onclick="this.select()" onfocus="this.select()">&lt;a href="<$BlogItemPermalinkUrl$>" title="<$BlogTitle$>"&gt;<$BlogItemTitle$>&lt;/a&gt;</textarea>
</ItemPage>


<MainPage>
  <hr style="margin-top:70px;" />
  <div style="font:bold 10pt 'Tahoma'; text-align:right; color:#C5C5E6; margin-top:40px; margin-bottom:4px;">Link Code</div>
  <textarea id="link_code" readonly="readonly" rows="3" class="wasabi-link-code" style="font:12pt 'Comic Sans MS'; padding:10px 1px 10px 6px; margin-bottom:40px;" onclick="this.select()" onfocus="this.select()">&lt;a href="<$BlogURL$>"&gt;<$BlogTitle$>&lt;/a&gt;</textarea>
  <hr style="margin-top:20px;" />
</MainPage>







지금까지 말한 내용은,
자동으로 현재 페이지의 링크 코드 생성하여, 페이지에 붙이기
이 포스트의 업데이트 사항입니다.

Wednesday, April 19, 2006

[QnA] 비디오카드/하드디스크는 어디서 다운로드받나요?

비디오카드/하드디스크/키보드/마우스/모니터/사운드카드/메인보드/CPU/메모리 등은, 하드웨어이기 때문에 절대로 다운로드받을 수 없습니다. 하드웨어(Hardware)는 TV나 라디오와 같은 '물건'이기 때문에, 인터넷 회선을 타고 흘러올 수 없습니다. 가게에 가서 돈을 주고 직접 구입하셔야 합니다.

다운로드받을 수 있는 것은 '파일'로 된 것, 즉 프로그램(게임 등의 소프트웨어)이나 글이나 그림/사진이나 음악뿐입니다.




추가 사항:

비디오카드/사운드카드 등을 위한 "드라이버 프로그램"은 제조사에서 다운로드 가능합니다.



컴퓨터에 예를 들어, 새로 구입한 비디오카드를 장착하면, 윈도에서 잘 인식하지 못합니다. 이때 설치해 주는 소프트웨어를 "비디오카드 드라이버"라고 합니다. 구입한 하드웨어의 종이 상자 안에, CD나 플로피 디스크가 들어 있고, 그 안에 드라이버가 있습니다. 또한 그 하드웨어(가령 비디오카드)를 만든 회사의 홈페이지에서 무료로 다운로드(내려받기) 받을 수도 있습니다.


참고: ▶▶ 하드웨어란? 소프트웨어란? 운영체제란? : Hardware / Software / OS

[독서] 이문열 소설 '금시조' 프리뷰 (현대문학)

이문열 소설 『 금시조 』 본문 첫페이지



무엇인가 빠르고 강한 빗줄기 같은 것이 스쳐간 느낌에 고죽(古竹)은 눈을 떴다. 얼마 전에 가까운 교회당의 새벽 종소리를 들은 것 같은데 어느새 아침이었다. 동쪽으로 난 장지 가득 햇살이 비쳐 드러난 문살이 그날 따라 유난히 새카맸다. 고개를 돌려 주위를 살피려는데 그 작은 움직임이 방안의 공기를 휘저은 탓일까, 엷은 묵향(墨香)이 콧속으로 스며들었다. 고매원(古梅園)인가, 아니, 용상봉무(龍翔鳳舞)일 것이다. 연전(年前)에 몇 번 서실을 드나든 인연을 소중히 여겨 스스로 문외제자(門外弟子)를 자처하는 박교수가 지난봄 동남아를 들러 오는 길에 사왔다는 대만산(臺灣産)의 먹이다. 그때도 이미 운필(運筆)은커녕 자리보전을 하고 누웠을 때라 고죽은 웬지 그 선물이 고맙기보다는 서글펐었다. 그래서 고지식한 박교수가,

"머리맡에 갈아 두고 흠향(歆香)이라도 하시라고……"

하며 속마음 그대로 털어놓는 것을, 예끼, 이사람, 내가 귀신인가, 흠향을 하게…… 하고 핀잔까지 주었지만, 실은 그대로 되고 말았다. 문안 오는 동호인(同好人)들이나 문하생들을 핑계로, 육십 년 가까운 세월을 함께 지내 온 분위기를 바꾸지 않으려고 매일 아침 머리맡에서 먹을 가는 추수(秋水)의 갸륵한 마음씨에 못지 않게 그 묵향 또한 좋았던 것이다.

묵향으로 보아 추수가 다녀간 것임에 틀림없었다. 조금 전에 그의 잠을 깨운 강한 빗줄기는 어쩌면 그 아이가 나가면서 연 장지문 사이로 새어든 햇살이었을 게다. 고죽은 그렇게 생각하며 살며시 몸을 일으켜 보았다. 마비되다시피한 반신 때문에 쉽지가 않다. 사람을 부를까 하다가 다시 마음을 돌리고 누웠다. 아침의 고요함과 평안과, 그리고 이제는 고통도 아무것도 아닌 쓸쓸함을 의례적인 문안과 군더더기 같은 보살핌으로 깨뜨리고 싶지 않았다.



이문열 선생의 중편소설 "금시조"는 1982년 제15회 동인문학상을 수상한 소설이며, '예술가 소설'이기도 합니다.

(그 박교수라는 인물이, 흠향(歆饗)을 흠향(歆香)으로 착각한 모양입니다.)


발표 : 현대문학 1981년 12월호





1982년에 동인문학상을 수상하신 이문열 선생께서 현재는 동인문학상 심사위원으로 활동하고 계시더군요. 작년(2005년) 동인문학상은 "꽃게 무덤"이 차지했지요...




관련 포스트:
[독서] 이문열 신작소설 '호모 엑세쿠탄스' 프리뷰 + 여담


더 읽기: 독서

[독서] 김탁환 소설 '부여현감 귀신체포기' 프리뷰 (이가서)

김탁환 소설 『부여현감 귀신체포기』 본문 첫페이지 소개



1



세인들 중에는, 지금부터 우리가 살펴볼 우객이 괴팍하며 욕심 많고 자기 잘난 맛에 사는 위인이라고 혹평하는 이도 더러 있다. 단언컨대 그들은 전우치의 날개에 맺힌 검은 눈물방울을 보지 못했다.


2



내 이름은 아신.

물론 어릴 때 잠시 불렸던 이름이다. 족보에 오른 정식 이름을 밝히면, 어사 박문수만큼은 아니지만, 고개를 끄덕일 사람도 많다. 그러나 나는 그냥 아신이고 싶다. 그 이름이 내게 어울린다고 처음 말해 준 이가 바로 전우치였다.

"다시 태어나더라도 그 이름을 지켜. 네가 아신이 아니라면 도대체 누구겠어?"

1968년, 전우치의 예언처럼 나는 다시 태어났지만 아신이란 이름을 지키지 못했다. 내가 태어나자마자, 아버지가 곧장 작명소로 가서 단돈 이천 원에 '탁환'이란 이상한 두 글자를 얻어 왔던 것이다. 그 후로 내가 할 수 있는 일이라곤 겨우 첫 소설 『열두 마리 고래의 사랑 이야기』 주인공 이름인 맥아더의 '아'와 이순신의 '신'을 합쳐 '아신'으로 붙이는 것 정도였다...


김탁환 선생의 소설 "부여현감 귀신체포기"는 그래픽적 요소들을 과감하게 도입한 소설입니다.



출간일: 2005-01-03
페이지: 222쪽
출판사: 이가서

[QnA] 울트라에디트에서 행번호를 붙여서 출력/인쇄할 수 있나요?

UltraEdit 화면에 출력



, 메뉴의 "View/Display Line Numbers"로 행번호를 보이게 할 수 있습니다.



행번호를 종이에 인쇄할 수 있나요?



, 현재 울트라에디트(UltraEdit) 11.x 버전의 경우, 행번호를 붙여 인쇄하는 방법은 다음과 같습니다:

울트라 에디터 메뉴의
File > "Print Setup/Configuration" > Page Setup

에서 "Print Line Numbers" 에 체크하시면 행번호까지 인쇄됩니다. (기본적으로는 꺼져 있음)


결과는 종이에 인쇄하지 않아도
File > Print Preview
에서 미리 보실 수 있습니다.





각 행번호를 파일에 직접 추가할 수 있나요?



, 우선 울트라에디터 화면에서, Alt+C 키를 눌러 "칼럼 편집 모드"로 전환한 후,

메뉴 > Column > Insert Number

라는 명령을 실행시키면, 각 행의 왼쪽에 행번호가 붙습니다. 그런 후 다시 Alt+C 키를 눌러 일반 모드로 돌아와야 합니다. 그런데 그리 자연스럽게 번호가 붙지 않더군요. 좀 불편한 점이 있습니다.

그러나 간단한 프로그래밍으로 그런 기능을 직접 구현하실 수 있습니다. 아래의 관련 포스트를 참고하시면 될 것입니다.


관련 포스트: [Perl/펄] 텍스트 파일에 행번호 붙여, 화면에 출력 또는 파일로 저장

Tuesday, April 18, 2006

[QnA] 최고 압축률을 가진 압축프로그램은?

WinRAR 입니다.

제가 예전에 WinZip의 "Maximum (PPMd)" 압축률이 WinRAR보다 높다는 포스트를 올렸는데, 그것은 잘못된 것이었습니다.ㅠㅠ (그 포스트는 지우고, 댓글만 여기로 옮겨 왔습니다) 제가 테스트했던 특정 종류의 파일에서만 압축률이 높았던 것 같습니다. 계속 여러 종류의 파일들을 테스트하자 WinRAR이 PPMd 보다 높게 나오더군요.


Microsoft Office 2003이 설치된 폴더를 통째로 압축했을 경우


원본 파일: 총 191개, 73.7MB

1등        34.8MB <- WinRAR: Best + Create Solid Archive
2등        35.9MB <- WinRAR: Best
3등        37.1MB <- WinZip: Maximum (PPMd)
4등        40.1MB <- WinZip: Maximum (Portable)



Adobe Acrobat 7.0 Professional.iso 를 압축


원본 파일: 507MB (532,465,664 바이트)

479MB <- WinRAR: Best
488MB <- WinZip: Maximum (PPMd)



WinRAR 이 역시 최고였습니다...


"Maximum (PPMd)" 압축은 WinZip v10.x 이상에만 있는 것입니다.
"Maximum (Portable)" 압축은, 모든 버전의 WinZip은 물론, 모든 Zip 유틸리티에서 사용할 수 있습니다. 호환성이 대단히 높은 것입니다.


같은 종류의 작은 파일들이 아주 많을 경우에, WinRAR 중에서도 "Create solid archive" 옵션을 주었을 때 가장 압축률이 높습니다. Solid Archive 라는 것은, 같은 종류의 파일을 하나로 합쳐서 압축하기에 아주 효율적으로 압축할 수 있습니다. 물론 풀 때는 각각의 파일로 자동 분리됩니다. 그렇지만 Solid Archive 에는 큰 단점이 있는데, 압축된 RAR 파일 중에서, 파일 1~2개만 풀려고 할 때에도, (WinRAR 내부적으로) 거의 모든 파일을 다 풀어야 하기에 시간이 많이 걸립니다.


WinRAR 다운로드

Monday, April 17, 2006

[007 잡담 면허] EmEditor + EmFTP + '이치타로(일태랑) 워드프로세서'에 대해

EmEditor 에는 특이하게도 온정(?) 모드가 있었다



EmEditor 평가판을 설치한 지, 30일이 지났기에, 더 이상 쓸 수 없다는 메시지가 나왔다. 그래서 그 메시지를 끄려고 Close 버튼을 누르자, 다음과 같은 창이 뜨는 것이었다:


---------------------------
EmEditor
---------------------------
You have used this product for a long time without purchasing it. Are you going to purchase a license soon?
---------------------------
예(Y) 아니오(N) 취소
---------------------------

(※ 위의 메시지 박스의 영문 텍스트는 Ctrl+C 로 카피한 것)

"당신은 돈을 내지 않고 이 제품(EmEditor)을 오래 사용했습니다. 앞으로 곧 구입할 것인가요?"
에서 "예" 를 눌러 주었더니, EmEditor 가 다시 뜨는 것이었다. 편집과 저장도 잘 되었다.

(위의 EmEditor의 버전은 4.13인데, 현재는 5.0이 나와 있다)

반면 울트라에디트의 경우에는 45일이 지나면 전혀 쓸 수 없었다. 도스가 아닌, 윈도 기반의 쉐어웨어가 대부분 그렇다.


EmEditor 를 만드는 Emurasoft 에서 만든 FTP 클라이언트인, EmFTP 가 무료였다가 유료로 전환되면서 Emurasoft 에 대해 좀 섭섭했는데, 이번 일로 호감이 생기게 되었다고나 할까 그런 기분이다. (EmFTP에는 동기화 업로드(Synchronize upload) 기능이 있는데, FileZilla 에는 그런 기능이 없는 듯했다. FileZilla로 동기화를 시켜보려고 했는데 원활히 작동하지 않았던 기억이 있다.)




이치타로(일태랑/一太郎/一太郞) 워드프로세서와 EmEditor



한국의 "아래아 한글"처럼, 일본을 대표하는 워드프로세서가 바로 이치타로인데(일태랑이라고 부르는 것은 一太郎 를 한국식으로 발음한 것이다. 이 '랑'자가, 한국식 한자와 모양은 같지만 코드가 맞지 않기에, 한국식 한자로 바꾸어주면 "一太郞" 이 된다)

이치타로 워드프로세서는 일본어 윈도우에서만 설치가 가능했다. 유감스럽게도 한글 윈도나 영문 윈도에서는 안되었다. 이것은 아래아한글도 마찬가지인 것으로 알고 있다. 아래아한글은 한글 윈도에서만 설치가 된다.

이것 참... 윈도가 무슨 대단한 리소스(한글이나 일본어에 대한)를 제공해 주는 것도 아닌데, 특정 국가의 윈도 버전에서만 되다니... 자기 스스로 시장을 좁히고 있는 것 아닌가. VMware에 일본어 윈도를 깔고 설치하면 되겠지만 그렇게까지 해야 하는지 의문이다.


컴퓨터 초창기부터, 한글 윈도우에서 작동하는 쓸만한 일본어 편집기가 없었다. 이치타로도 설치가 곤란하고 그래서 결국 EmEditor 를 사용하는 수밖에는 없었다.




▶▶ [중국어] 간체 <――> 번체 자동 변환법

맥스(3dsmax 8)의 불필요한 서비스를 제거하여 시스템 메모리 확보

맥스(3dsmax 8)를 설치하고 나니 작업관리자(윈도 시작 버튼 부근의 적당한 빈곳을, 마우스 오른쪽 클릭하면 나옴) 에 맥스의 서비스들이 떠 있었다. 이것이 총 3~4메가 정도의 메모리를 항상 차지하고 있는 듯했다. 가뜩이나 메모리가 부족한데, 쓰지도 않는 서비스들이 항상 실행되고 있으면 곤란하다. 다음과 같은 방법으로 없애주었다.


(1) 내 컴퓨터 아이콘을 마우스 오른쪽 버튼으로 클릭하면, 메뉴에서 관리라는 항목이 나온다.

(2) 관리라는 항목을 클릭하면 컴퓨터 관리 라는 창이 뜬다.

(3) 컴퓨터 관리 에서, 서비스 및 응용 프로그램/서비스 를 펼치면, 현재 윈도에서 실행되고 있는 모든 서비스들의 목록이 나온다.

(4) 다음의 서비스 2개를 마우스로 더블클릭하여, 수동으로 바꾸어 준다. (현재는 자동으로 되어 있을 것이다.)

       Autodesk Licensing Service
       RaySat_3dsmax8 Server



제거한 후의 결과



맥스를 실행하면 Autodesk Licensing Service 도 시작되고, 맥스를 끝내면 이제 몇초 후에 메모리에서 없어진다. 예전에는 윈도를 시작할 때마다 항상 실행되었다. 이 Autodesk Licensing Service 서비스는 메모리에 항상 있을 필요가 없는 것이 분명하다. 이것을 수동으로 바꾸어 주어도 어떤 문제도 발생하지 않았다.

RaySat_3dsmax8 Server 는, 멘탈레이(mental ray)의 네트워크 렌더링에 사용되는 것 같은데, 맥스를 실행하고 멘탈레이로 렌더링을 해도, 더 이상 메모리에 올라오지 않았다.




지금까지 말한 것은, 맥스뿐만 아니라 다른 응용프로그램에서도 적용되는 것이다. 시스템에 불필요한 서비스가 실행되고 있으면 메모리가 부족해질 수 있다.

다만 아무 서비스나 함부로 끄면, 윈도가 부팅이 되지 않는 등의 심각한 문제가 생길 수 있으니 주의해야 한다.



작업 관리자에서, 현재 어떤 서비스들이 실행되고 있는지 확인할 수 있다. 서비스뿐 아니라 현재 실행 중인 모든 프로그램들의 이름이 나타난다. 만약 컴퓨터바이러스에 감염되었다면 바이러스도 이 목록에 나타난다. 따라서 작업 관리자를 자주 살펴 보는 것이 좋다.

다음과 같이 tlist 명령으로 이것을 콘솔 화면에 출력할 수도 있다. 출력 결과를 파일로 저장할 때에는
tlist > test.txt
로 하면 된다.


이것은 위에서 말한 것처럼 맥스의 불필요한 서비스를 제거해 준 후
맥스를 실행시켰을 때의 상태:

D:\Z>tlist -s
  0 System Process
  8 System
152 SMSS.EXE
180 CSRSS.EXE       Title:
200 WINLOGON.EXE    Title: NetDDE Agent
228 SERVICES.EXE    Svcs:  Dhcp,dmserver,Dnscache,Eventlog,lanmanserver,lanmanworkstation,LmHosts,PlugPlay,ProtectedStorage,seclogon,Wmi
240 LSASS.EXE       Svcs:  PolicyAgent,SamSs
412 svchost.exe     Svcs:  RpcSs
436 spoolsv.exe     Svcs:  Spooler
472 svchost.exe     Svcs:  EventSystem,Netman,NtmsSvc,RasMan,SENS,TapiSrv
504 mgabg.exe       Svcs:  MGABGEXE
556 vmware-authd.ex Svcs:  VMAuthdService
636 vmount2.exe     Svcs:  vmount2
680 vmnat.exe       Svcs:  VMware NAT Service
692 vsmon.exe       Svcs:  vsmon
748 explorer.exe    Title: Program Manager
776 WinMgmt.exe     Svcs:  WinMgmt
808 svchost.exe     Svcs:  wuauserv
824 vmnetdhcp.exe   Svcs:  VMnetDHCP
876 zlclient.exe    Title: ZoneAlarm
908 point32.exe     Title:
920 internat.exe    Title:
900 conime.exe      Title:
752 TASKMGR.EXE     Title: Windows 작업 관리자
1112 3dsmax.exe      Title: Untitled - Autodesk 3ds Max 8 SP2  - Stand-alone License
1088 AdskCleanup.000 Title: CleanUp Application
1100 AdskScSrv.exe   Svcs:  Autodesk Licensing Service
1300 CMD.EXE         Title: Command Processor - tlist -s
1124 AdskCleanup.000 Title: CleanUp Application
496 tlist.exe

D:\Z>


참고로, tlist.exe 는 2000/xp 설치시디의 support 폴더의 support.cab 파일 안에 들어 있다. 기본적으로는 설치되어 있지 않다. (expand 명령으로, 풀거나 WinRAR로 풀어서 쓰면 된다)






관련 포스트:
3dsmax 8 / 맥스8 설치 후 조정해 주어야 할 사항(Preferences)들

3ds맥스8(3dsmax 8) DVD 를 CD 1장짜리로 만드는 법

Saturday, April 15, 2006

[독서] '페터 회' 추리소설 '스밀라의 눈에 대한 감각' (마음산책)

'페터 회' 소설 『스밀라의 눈에 대한 감각』 본문 첫페이지




얼어붙을 듯 춥다. 여느 때와 다르게 영하 18도다. 그리고 눈이 내리고 있다. 더이상 내 모국어라 할 수 없는 언어로 말하자면, 이 눈은 카니크다. 커다랗고, 거의 무게가 없는 덩어리가 되어 내리는 결정체가 흰 서리로 부서져 땅을 한 켜 뒤덮고 있다.

12월의 어둠이 무덤에서부터 올라와 우리 머리 위의 하늘처럼 무한하게 펼쳐진다. 이 어둠 속에서 우리의 얼굴은 그저 창백히 빛나는 구처럼 보일 뿐이겠지만, 그럼에도 목사와 교회지기가 내 검은 망사 스타킹과 흐느끼는 율리아네를 못마땅하게 바라보는 것을 느낄 수 있다. 율리아네는 오늘 아침 디설피람(알코올 중독 치료 약물―옮긴이)을 복용한 후 이제서야 약에서 깨어 슬픔에 직면하게 된 터라 더 심하게 흐느끼고 있다. 목사와 교회지기는 그녀와 내가 날씨나 비극적인 상황, 둘 중의 어느 쪽도 존중하지 않는다고 생각한다. 그렇지만 실상 스타킹이나 약, 둘 다 나름대로 추위와 이사야에게 바치는 애정의 표시다.

목사와 교회지기, 그리고 율리아네를 둘러싼 여자들은 모두 그린란드인이다. 우리가 <구티가 일리미>, 즉 <당신은 나의 주님>을 부를...




덴마크 작가인, 페터 회(Peter Høeg/Peter Hoeg)의 추리소설 "스밀라의 눈에 대한 감각(Smilla's Sense of Snow / Miss Smillia's Feeling for Snow)"은 추리소설이라기보다는 훌륭한 문학 작품으로 읽히는 소설입니다. 특히

       문장력: ★★★★☆
       사고의 깊이: ★★★★

로 아주 좋았습니다.

그렇지만

추리소설로서의 재미는 분명하지 않더군요.



번역서 출간일: 2005-08-10
원저 출간: 1992년
페이지: 627쪽 <― 부담스러운 분량
번역: 박현주
출판사: 마음산책

[Perl/펄] 텍스트 파일에 행번호 붙여, 화면에 출력 또는 파일로 저장

텍스트 파일(text file)에 행번호(line numbers) 붙이기



프로그래밍 강좌를 할 때, 소스에 행번호를 붙여 설명한다든지 할 때 유용.



#!/usr/bin/perl
use strict; use warnings;


my $line = 1;

while (<>) {
 printf("%4d: %s", $line, $_);
 $line++;
}

이렇게 짧은 코드로 행번호 붙이기를 훌륭하게 해낼 수 있다. C나 자바 같은 다른 언어들이 산문이라면, 펄은 흔히 시(詩)에 비유되는데, 펄이 얼마나 함축적이고 강력한 언어인지 실감할 수 있는 예제이다. (참고로, printf 함수는 C에도 있고 펄에도 있음)

만약 C언어로 행번호 붙이기 프로그램을 만들었다면 2~3페이지 분량은 족히 되었을 것이다. include 를 하고, 옵션을 분석하고 파일을 열고 닫고 하느라 무척 귀찮았을 것이다.

<> 이것이 바로 펄의 전매특허인 "다이아몬드 연산자 (diamond operator)"이다. 이것으로 파일(명령행에서 옵션으로 지정해 준 파일)을 자동으로 열고 닫고 할 수 있으며, 또한 STDIN 입력도 받을 수 있다(그래서 이 프로그램에 대상 파일을 지정해 주지 않고 실행시키면 입력 대기 상태가 되어 화면에 아무것도 나오지 않는다. 이때는 Ctrl+Z를 눌러 빠져 나와야 한다. 유닉스/리눅스에서는 Ctrl-D). <> 이렇게 단 2글자로 말이다.

$_ 역시 펄의 전매특허인 "디폴트 변수(default variable)"다. 뻔한 변수는 굳이 선언하고 이름을 정해줄 필요 없이 간단히 이것을 쓰면 된다. 위의 소스에서, $_ 에는 <>로 연 텍스트 파일의, 각 행이 현재 들어가 있다.


다만 "다이아몬드 연산자"로 이진 파일은 처리할 수 없고(해본 적이 있는데 되지 않았음), 몇 가지 제한이 있다. (한 프로그램에 2개의 다이아몬드 연산자를 쓸 수 없는 등의 제한) 텍스트 파일만을 간단히 처리할 때 사용하는 연산자이다. 그래서 복잡한 작업을 할 때는 C언어처럼 open 으로 파일을 열어야 한다.



본론으로 들어가서, 행번호 등의 문자열 조작은, 펄로 간단히 만들어서 쓰는 것이 융통성이 있다. 다음과 같이 각자의 입맛에 맞게 마음대로 포맷을 변경할 수 있기 때문이다.

행 번호를 16진수로 출력:
#!/usr/bin/perl
use strict; use warnings;


my $line = 1;

while (<>) {
 printf("%04X: %s", $line, $_);
 $line++;
}





행번호 붙여 인쇄



인쇄를 하기 위해서는 위의 펄 프로그램의 화면 출력 결과를 텍스트 파일로 만든 후, 그것을 울트라에디트(UltraEdit)나 메모장(Notepad) 등의 텍스트 에디터에서 불러서 인쇄하면 된다.

명령 프롬프트에서, 화면 출력을 파일로 만들 때에는 다음과 같이 > 기호를 사용해 '재지향'하면 된다. 예를 들어, 위의 소스를 foo.pl 이라는 이름으로 저장하고, 행번호를 붙일 텍스트를 in.txt 라고 이름 붙였을 경우:

foo.pl in.txt > out.txt




기타



유니코드(UTF-8)의 경우:

이 펄 스크립트는 유니코드(UTF-8) 텍스트 파일도 입출력되지만, 화면으로 바로 출력하면, 명령 프롬프트 창에서 한글 글자들이 깨져 보인다. 재지향을 사용해 결과를 파일로 바로 저장하는 것이 좋다.






위의 펄 소스를 0.pl 이라는 이름으로 저장하고, 행번호를 붙일 파일을 0.txt 라는 이름으로 저장한 후, 명령 프롬프트에서 실행시켰을 경우, 다음과 같이 각 줄에 번호가 붙은 채 출력(파일 이름은 상관 없음):


D:\Z>0.pl 0.txt
  1:
  2:           청포도
  3:
  4:
  5:                           이육사
  6:
  7:
  8: 내 고장 칠월은
  9: 청포도가 익어 가는 시절
 10:
 11: 이 마을 전설이 주저리주저리 열리고
 12: 먼 데 하늘이 꿈꾸며 알알이 들여와 박혀
 13:
 14: 하늘 밑 푸른 바다가 가슴을 열고
 15: 흰 돛단배가 곱게 밀려서 오면,
 16:
 17: 내가 바라는 손님은 고달픈 몸으로
 18: 靑袍를 입고 찾아온다고 했으니
 19:
 20: 내 그를 맞아, 이 포도를 따먹으면
 21: 두 손은 함뿍 적셔도 좋으련
 22:
 23: 아이야, 우리 식탁엔 은쟁반에
 24: 하이얀 모시 수건을 마련해 두렴
 25:

D:\Z>









이것은 행번호를 16진수로 출력했을 경우:
D:\Z>0.pl 0.txt
0001:
0002:           청포도
0003:
0004:
0005:                           이육사
0006:
0007:
0008: 내 고장 칠월은
0009: 청포도가 익어 가는 시절
000A:
000B: 이 마을 전설이 주저리주저리 열리고
000C: 먼 데 하늘이 꿈꾸며 알알이 들여와 박혀
000D:
000E: 하늘 밑 푸른 바다가 가슴을 열고
000F: 흰 돛단배가 곱게 밀려서 오면,
0010:
0011: 내가 바라는 손님은 고달픈 몸으로
0012: 靑袍를 입고 찾아온다고 했으니
0013:
0014: 내 그를 맞아, 이 포도를 따먹으면
0015: 두 손은 함뿍 적셔도 좋으련
0016:
0017: 아이야, 우리 식탁엔 은쟁반에
0018: 하이얀 모시 수건을 마련해 두렴
0019:

D:\Z>







관련 포스트:

[Perl/펄] 윈도우용 펄(ActivePerl) 설치법

[QnA] 울트라에디트에서 행번호를 붙여서 출력/인쇄할 수 있나요?

Friday, April 14, 2006

테스트/비밀 블로그 만들기 + 검색엔진에서 제외하기

블로그 템플릿을 고치기 위해서는, 현재 사용하는 "메인 블로그"가 아닌 "테스트 전용 블로그"에서 우선 템플릿을 테스트해 보는 것이 좋다. 실험용으로 사용하는 블로그인 것이다.

새 아이디를 하나 더 만들면, 로그인 로그아웃 해야 하는 불편이 있기 때문에, blogger.com 의 경우, 대시보드에 있는 "블로그 만들기" 버튼으로 새 블로그를 하나 더 만드는 것이 편리하다.

http://[ 새 주소 입력 ].blogspot.com

이러면 하나의 아이디로, 블로그가 2개 생긴다.



검색엔진에서 제외시키기



테스트용 블로그나 비밀 블로그는 검색엔진에 나오면 안된다. 다음과 같이 하면, 검색엔진에 나오는 것을 방지할 수 있다.


(1) 블로거 대시보드에서, 방금 만든 블로그 이름을 클릭

(2) 설정/기본 사항/목록에 귀하의 블로그를 추가하시겠습니까? 에서, "예"로 되어 있는 것을 "아니오"로 바꿈. "설정 저장"을 누름.

(3) 설정/게시/Weblogs.com 에 알림 을 "아니오"로. 기본값이 이미 "아니오"이기에 바꿀 필요는 없을 것이다. 만약 바꾸었다면 "설정 저장"을 눌러야 함.

(4) 설정/서식/시간대 를 현재 자신이 거주하는 곳의 시간대로 맞춤. 한국에 산다면 "[UTC +09:00] Asia/Seoul"로 해주어야 함. 테스트나 비밀 블로그가 아니더라도 모든 블로그에 꼭 해주어야 할 설정임. "설정 저장"을 눌러야 함.

(5) 설정/사이트 피드/사이트 피드 게시 를 "아니오"로. ("예"로 하면, 자신의 테스트용 혹은 비밀 블로그를 타인이 읽을 수 있게 된다.) "설정 저장"을 눌러야 함.


(6) 위의 설정들을 다 해주었으면,
게재/상태/전체 블로그 재게시 버튼을 눌러서, 블로그 전체를 갱신해 주어야 한다. ("색인만 재게시" 버튼은, 블로그의 첫페이지 즉 index/Home 페이지만 리빌드 한다.)

(7) 블로그를 재게시한 후, 다시 위의 설정 메뉴들로 돌아가서, 설정들이 제대로 저장되어 있는지 하나씩 살펴본다.





만약 위의 설정들을 해 주지 않으면, 자신의 블로그 주소를 남에게 가르쳐 주지 않았는데도 검색엔진에 자동으로 등록이 되어 버린다. 특히 구글 블로그 검색 에 순식간에 등록되어 버리고 영원히 지워지지 않는다. (필자가 맨 처음에 포스팅했던 "아직 준비 중입니다"라는 제목의 포스트가, 지금은 그 포스트를 지웠는데도, 아직 구글 블로그 검색에는 남아 있다.)

그리고 "Weblogs.com 에 알림" 이것이 "예"로 되어 있다면, 자신의 블로그 주소가 전세계에 다 알려진다.

남에게 알릴 필요가 없거나 알리고 싶지 않은 블로그를 만들 때에는 위와 같은 설정들이 꼭 필요하다.




참고 포스트: 블로거(blogger.com)의 인코딩 버그 완벽 해결법

[공개 일기] 공기건조 잠 설침/황사현상/파이어폭스/블로거 먹통

공기건조 잠 설침



간밤에 나도 모르게 잠을 깼는데 기침이 나오려고 해서 그랬을 것이다. 그런데 왜 기침이 나는지, 목이 따가운지 알 수가 없었다. 공기가 그리 건조하지도 않았다. 3월달의 건조 현상은 분명히 체감할 수 있는 정도였는데 그렇지 않았다. 밤하늘을 황사가 뒤덮고 있는지도 모르겠다. 그렇지만 황사의 매캐한 냄새는 나지 않았다.

다림질용 분무기로 이불에 물을 뿌렸더니 목이 좀 나아졌다. 그럭저럭 잠을 잘 수가 있었다. 그렇지만 잠을 설쳤는지 지금 오후(2006-04-14 2:51오후)가 되어서도 비몽사몽간이다. (관련 포스트: [건강] 가습기 없이, 실내 습도 유지하는 방법 / 감기 예방)



황사 현상



그런데 아침에 일어나서 창 밖을 보니, 먼 산이 그럭저럭 보였다. 황사 때문에 목이 따가웠던 건 아닌지도 몰랐다. 그렇지만 얼마전의 지독한 황사 때문에 대미지를 좀 입은 것이 사실이다.


모질라 파이어폭스(Firefox) 업데이트



파이어폭스를 실행시켜 놓고 다른 작업을 하고 있는데, 무슨 창이 나와서 보니까 자동 업데이트가 저절로 실행되어 있었다. 일반적으로 소프트웨어의 "자동 업데이트"라는 것은 개인 정보 유출의 위험도 크고 해서 잘 쓰지 않았지만, 파이어폭스야 뭐 "선한 프로그램(Good Samaritan ?!)"이라서 그냥 켜두었다.

구글에서, 파이어폭스 광고를 대신 해주고 있었다. 방문객이 파이어폭스를 다운받아서 설치하면 그 사이트 운영자에게 돈을 주는 모양이다. 그런데 파이어폭스에게 필요한 것은 광고가 아니라 기술 지원일 것이다. 지금도 기술 지원을 해주고 있는 것 같지만 그리 표가 나지 않는 것이 문제다. 지금의 파이어폭스가 아주 초창기 파이어폭스와 다를 바가 없고, 심지어 예전의 모질라(Mozilla) 브라우저보다 못한 점도 있다. (모질라 브라우저에는 모든 새창을 새탭으로 여는 옵션이 있었지만 파이어폭스에서는 온데간데 없이 사라져 버렸다.)


블로거 먹통



완전한 먹통은 아니지만(완전한 먹통이라면 이 일기를 올릴 수도 없겠고), 새 포스트를 작성하려고 하면, 편집창을 여는 데만 5분 이상이 걸리고 있다. 가장 절망적인 것은 블로거(blogger.com)의 경쟁사가 없다는 것이다. 그래서 블로거 직원들은 블로거를 취미 생활처럼 경영하고 있었다. 사용자의 불편 따위는 안중에 없었다. (관련 포스트: 블로거(blogger.com)에 GIF/PNG 업로드 불가)

[독서] 박완서 소설 '그 남자네 집' 프리뷰 (현대문학)

박완서 소설 『그 남자네 집』 본문 첫페이지




아파트에 살던 후배가 땅 집으로 이사간다고 하길래 덮어놓고 잘했다고 말해주긴 했지만 정작 어디다 집을 샀는지 동네 이름은 별로 귀담아듣지 않았다. 무심한 것도 일종의 버릇인가 보다. 내 노쇠 현상의 특징이 이름이나 숫자에 대한 현저한 기억력 감퇴라는 걸 알게 되면서부터 그런 것들은 아예 건성으로 듣게 된 게 버릇이 된 듯싶다. 그 대신 어떻게 생긴 집이며 마당은 있는지, 방은 몇 개고 전망은 어떤지에 대해서는 꽤 꼬치꼬치 알고 싶어했다. 사실 말하고 싶은 건 그게 아니었는데.

나도 수년 전 오랜 아파트 생활을 청산하고 단독으로 이사를 했다. 포장이사라 힘들 일이 없었는데도 내 생애의 마지막 이사라고 스스로에게 되풀이 다짐을 했다...


박완서 선생은 출판사 편집장들이 "가장 출판하고 싶은 작가"로 꼽히기도 했습니다.


출간일: 2004-10-23
페이지: 310쪽
출판사: 현대문학


더 읽기: 독서

Visual C++ 2003 의 무료 버전 공개, 무료 비주얼 C언어 컴파일러

(사실 이것은 오래된 뉴스지만, 지금에야 언급하게 되었음)

마이크로소프트의 무료 C언어 컴파일러 소개




연주가가 좋은 악기를 갖고 싶어 하듯, 프로그래머는 좋은 컴파일러를 가지고 싶어 한다. 컴파일러가 시원찮으면 프로그래머의 기량이 아무리 뛰어나도 훌륭한 프로그램을 만들기 어렵다. Microsoft의 운영체제에서는 Visual C++ 가 최고의 C/C++ 컴파일러라는 사실을 부정할 수 없다.

볼랜드 C++는 이미 존재감이 희미해져 버렸고, GCC는 아직 Win32 환경에 취약하다. 오픈소스 진영에서도 소스를 Win32용으로 컴파일할 때는 Visual C++를 사용하지 GCC를 사용하는 경우는 드물었다. GCC가 아직 x86 + Win32 환경에 최적화되어 있지 않아서일 것이다.

그러나 Visual C++ 가 상당히 비싼 데다가 근래에는 별도로 팔지도 않아서 방대한 "비주얼 스튜디오"를 통째로 구입해야만 한다. 게다가 최소한 Pro 버전 이상의 비주얼 스튜디어에서만 Optimizing Compiler 가 포함되어 있는 것으로 안다. SDK 등에 들어 있는 C컴파일러는 최적화(Optimizing)가 되지 않는 허술한 컴파일러일 것이다.


그런데 MS에서 Microsoft C/C++ Optimizing Compiler 를 몇 년 전(2004년쯤에)에 무료로 공개했다. 볼랜드(Borland)가 컴파일러(C++Builder Compiler) 일부를 공개하고 있는 것에 자극받아서인지도 모르겠다. 볼랜드의 것이든 MS의 것이든, 통합환경(IDE)은 없고 코맨드 라인 버전뿐이다. 볼랜드의 C컴파일러가 초보자에게는 조금 더 친절하지만, 이것으로 전문적인 프로그램이나 상용 프로그램을 개발하는 것은 좀 무리가 있었다.



Microsoft C/C++ Optimizing Compiler는, 정품 "Visual Studio .NET 2003 Professional"에 있는 코맨드 라인 컴파일러와 똑같은 것이다. 이것으로 상용 프로그램을 개발해도 된다("... even commercial applications."). 물론 "Visual Studio .NET 2003" DVD를 이미 가지고 있는 사람이라면, 이 Toolkit 을 다운로드받을 필요가 없다.


Microsoft Visual C++ Toolkit 2003 여기서 무료로 다운로드받을 수 있다. 용량은 31.4 MB다. 설치 파일 이름은 VCToolkitSetup.exe 다.






컴파일러 설치법



파일을 실행하면 자동으로 설치되고 어려운 점은 없다.


cl.exe 라는 파일이, 컴파일러의 본체다.

명령 프롬프트에서 cl 이라면 치면 된다.

컴파일러 셋업 파일이 설치 때, cl.exe 를 위한 명령 프롬프트를 하나 만들어 준다. 시작메뉴에 보면 등록되어 있다. 초보자는 이 "전용 명령 프롬프트"에서 실행시키는 것이 무난하다.




도움말 옵션인 /? 를 붙여 실행하면 다음과 같은 화면이 나온다:

D:\Z>cl.exe /?
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

                         C/C++ COMPILER OPTIONS

                             -OPTIMIZATION-

/O1 minimize space                       /Op[-] improve floating-pt consistency
/O2 maximize speed                       /Os favor code space
/Oa assume no aliasing                   /Ot favor code speed
/Ob<n> inline expansion (default n=0)    /Ow assume cross-function aliasing
/Od disable optimizations (default)      /Ox maximum opts. (/Ogityb2 /Gs)
/Og enable global optimization           /Oy[-] enable frame pointer omission
/Oi enable intrinsic functions

                            -CODE GENERATION-

/G3 optimize for 80386                   /Gh enable _penter function call
/G4 optimize for 80486                   /GH enable _pexit function call
/G5 optimize for Pentium                 /GR[-] enable C++ RTTI
/G6 optimize for PPro, P-II, P-III       /GX[-] enable C++ EH (same as /EHsc)
/G7 optimize for Pentium 4 or Athlon     /EHs enable C++ EH (no SEH exceptions)
/GB optimize for blended model (default) /EHa enable C++ EH (w/ SEH exceptions)
/Gd __cdecl calling convention           /EHc extern "C" defaults to nothrow
/Gr __fastcall calling convention        /GT generate fiber-safe TLS accesses
/Gz __stdcall calling convention         /Gm[-] enable minimal rebuild
/GA optimize for Windows Application     /GL[-] enable link-time code generation

/Gf enable string pooling                /QIfdiv[-] enable Pentium FDIV fix
/GF enable read-only string pooling      /QI0f[-] enable Pentium 0x0f fix
/Gy separate functions for linker        /QIfist[-] use FIST instead of ftol()
/GZ Enable stack checks (/RTCs)          /RTC1 Enable fast checks (/RTCsu)
/Ge force stack checking for all funcs   /RTCc Convert to smaller type checks
/Gs[num] control stack checking calls    /RTCs Stack Frame runtime checking
/GS enable security checks               /RTCu Uninitialized local usage checks
/clr[:noAssembly] compile for the common language runtime
   noAssembly - do not produce an assembly
/arch:<SSE|SSE2> minimum CPU architecture requirements, one of:
   SSE - enable use of instructions available with SSE enabled CPUs
   SSE2 - enable use of instructions available with SSE2 enabled CPUs

                             -OUTPUT FILES-

/Fa[file] name assembly listing file     /Fo<file> name object file
/FA[sc] configure assembly listing       /Fp<file> name precompiled header file
/Fd[file] name .PDB file                 /Fr[file] name source browser file
/Fe<file> name executable file           /FR[file] name extended .SBR file
/Fm[file] name map file

(press <return> to continue)
                             -PREPROCESSOR-

/AI<dir> add to assembly search path     /Fx merge injected code to file
/FU<file> forced using assembly/module   /FI<file> name forced include file
/C don't strip comments                  /U<name> remove predefined macro
/D<name>{=|#}<text> define macro         /u remove all predefined macros
/E preprocess to stdout                  /I<dir> add to include search path
/EP preprocess to stdout, no #line       /X ignore "standard places"
/P preprocess to file

                               -LANGUAGE-

/Zi enable debugging information         /Ze enable extensions (default)
/ZI enable Edit and Continue debug info  /Zl omit default library name in .OBJ
/Z7 enable old-style debug info          /Zg generate function prototypes
/Zd line number debugging info only      /Zs syntax check only
/Zp[n] pack structs on n-byte boundary   /vd{0|1} disable/enable vtordisp
/Za disable extensions (implies /Op)     /vm<x> type of pointers to members
/Zc:arg1[,arg2] C++ language conformance, where arguments can be:
   forScope - enforce Standard C++ for scoping rules
   wchar_t - wchar_t is the native type, not a typedef

                             -MISCELLANEOUS-

@<file> options response file            /wo<n> issue warning n once
/?, /help print this help message        /w<l><n> set warning level 1-4 for n
/c compile only, no link                 /W<n> set warning level (default n=1)
/H<num> max external name length         /Wall enable all warnings
/J default char type is unsigned         /Wp64 enable 64 bit porting warnings
/nologo suppress copyright message       /WX treat warnings as errors
/showIncludes show include file names    /WL enable one line diagnostics
/Tc<source file> compile file as .c      /Yc[file] create .PCH file
/Tp<source file> compile file as .cpp    /Yd put debug info in every .OBJ
/TC compile all files as .c              /Yl[sym] inject .PCH ref for debug lib
/TP compile all files as .cpp            /Yu[file] use .PCH file
/V<string> set version string            /YX[file] automatic .PCH
/w disable all warnings                  /Y- disable all PCH options
/wd<n> disable warning n                 /Zm<n> max memory alloc (% of default)
/we<n> treat warning n as an error

                                -LINKING-

/MD link with MSVCRT.LIB                 /MDd link with MSVCRTD.LIB debug lib
/ML link with LIBC.LIB                   /MLd link with LIBCD.LIB debug lib
/MT link with LIBCMT.LIB                 /MTd link with LIBCMTD.LIB debug lib
(press <return> to continue)
/LD Create .DLL                          /F<num> set stack size
/LDd Create .DLL debug library           /link [linker options and libraries]

D:\Z>


물론 이 많은 옵션들을 모두 이해하지 않아도 기본적인 사용은 가능하다. 그러나 C/C++이라는 것은 상당히 난해한 언어이고, 펄(Perl)과는 달리, 많은 공부가 필요한 '심각한 언어'이다. 전문 프로그래머가 되기 위해서는 이 옵션들을 이해해야 한다.

자세한 도움말은 MSDN 에 있다. 비주얼 스튜디오 DVD안에 MSDN 이 있고 설치하면 되는데, 이 글을 읽고 있는 분들은 비주얼 스튜디오가 없을 것이다. 그렇다면 Visual C++ Developer Center : Product Documentation 여기서 온라인으로 읽으면 된다.





컴파일러를 설치했으면, 잘 설치되었는지 테스트하기 위해 간단한 프로그램을 만들어 컴파일해 본다. 이것을 흔히 Hello World! 프로그램이라고 한다. 여기서는 이것을 약간 한국화(?)시켰다.

#include <stdio.h>

int main(void) {

 printf("안녕하세요? ㅎㅎ");

 return 0;
}


위의 코드를 0.c 등의 적당한 이름으로 하드에 저장하자. (test.c 라는 이름으로 테스트 파일을 만드는 것은 좋지 않다. 유닉스/리눅스에는 test라는 명령어가 이미 있기 때문이다. 요즘에는 Win32에도 유닉스 툴을 설치하는 경우가 많기 때문에 충돌할 수 있다. 그래서 여기서는 숫자 제로를 사용해서 0.c 라는 이름으로 파일을 만들었다.)



명령 프롬프트에서 다음과 같이 실행시키면:

D:\Z>cl 0.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

0.c
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:0.exe
0.obj

D:\Z>0
안녕하세요? ㅎㅎ
D:\Z>


0.exe 라는 간단한 실행파일이 만들어지며, 0 를 쳐서 0.exe를 실행시키면 "안녕하세요? ㅎㅎ"라는 결과가 정확히 나온다.


좀더 복잡한 프로그램을 컴파일하면 에러가 날 수 있다. 이때는 /EHsc 옵션을 붙여서 실행해 본다.
헤더 파일과 라이브러리 파일의 위치도 환경 변수에 지정되어 있어야 한다. "전용 명령 프롬프트"를 사용한다면 이미 지정되어 있을 것이다.


이것은 필자가 사용하고 있는, C컴파일러 관련 환경변수 3개를 set 명령으로 출력한 것이다.
D:\Z>set
...중략...
CL=/O2 /G6 /EHsc /W4 /Wp64
Include=D:\Program Files\Microsoft Visual C++ Toolkit\include;D:\Program Files\Microsoft Platform SDK\Include;D:\WINDOWS_\Path\Project
Lib=D:\Program Files\Microsoft Visual C++ Toolkit\lib;D:\Program Files\Microsoft Platform SDK\Lib
...중략...
D:\Z>





Platform SDK 설치



지금까지 말한 툴킷(Microsoft Visual C++ Toolkit 2003)으로는, 다양한 프로그램들을 만들 수가 없다. 툴킷에는 Windows.h 조차도 들어 있지 않기 때문이다. 그러나 Platform SDK 를 무료로 다운로드받아서 추가해 주면 필요한 파일들의 상당수를 얻을 수 있다.

현재 Windows® Server 2003 SP1 Platform SDK 여기에서 Platform SDK를 받으면 될 것이다. Platform SDK 는 400메가에 가까운 용량이지만, 이 중에서 극히 일부의 파일만 필요하다. Platform SDK의 Include 와 Lib 폴더에 있는 파일만 가져오면 된다. (물론 Platform SDK 에는 여러가지 유용한 유틸리티(WinDiff.Exe 나 nmake.exe 등등)들이 많이 섞여 있으므로, 이삭줍기 하듯 골라서 가지면 쓸모가 많다.)

※ Platform SDK 를 설치하면 혹시 시스템이 지저분해질까 싶어서, 필자의 경우 Platform SDK를 VMware 속에다 설치한 후, 필요한 파일만 가져왔다.

아무튼 Platform SDK 를 설치하면 (D드라이브에 설치했을 경우) 다음과 같은 폴더가 만들어 지는데
       D:\Program Files\Microsoft Platform SDK\Include
       D:\Program Files\Microsoft Platform SDK\Lib
이것 역시 환경 변수에 추가해 주어야 한다. 그렇지 않으면 컴파일러(cl.exe)가 Platform SDK의 Include 와 Lib 폴더들을 찾지 못한다.

물론 이렇게 해도 MFC 프로그램은 개발이 안되는 것으로 알고 있다.






필자는 주로 펄을 쓰지만, 펄의 모듈들 중에서도, 속도가 필요한 경우에는, C로 모듈을 만들어야 한다. CPAN에 있는 많은 펄 모듈들 중, 적지 않은 모듈들이 C로 만들어져 있어 컴파일해 주어야 하는데, 따라서 펄 사용자라도 지금 말한 툴킷을 받을 필요가 있다. (C로 된 펄 모듈들은 .xs라는 확장자를 가지고 있다. .xs 파일을 Win32 환경에서 컴파일하는 것은, 컴파일러만 있다고 되는 것은 아니고 전문 지식이 필요한 좀 난해한 작업이다. 펄 모듈들의 상당수가 유닉스용으로 만들어져 있기 때문이다.)

다시 말하자면, 펄 사용자라도 C컴파일러 하나쯤은 있어야 한다는 이야기다. 영어가 세계 공용어라면, 프로그래밍의 세계에서의 공용어는 "C언어" 혹은 C++다. 반면 펄은 민족 언어에 해당할 것이다. 소수민족어는 아니고, 중국어처럼 사용자가 대단히 많은 민족어다.



펄(Perl)은, 텍스트('abcd' '가나다라' 등)를 다룰 때에는 C와 같은 빠른 속도를 보이지만 (왜냐하면 펄의 텍스트 조작 모듈이 C로 되어 있기에), 이진 파일을 다룰 때에는 견디기 힘들 정도로 느리다.

순수한 펄 코드만으로, 1GB 크기의 파일을 만들고 그 파일의 내용을 랜덤한 바이트들로 채우는 프로그램을 전에 만든 적이 있는데, 실행 완료에 무려 40분이나 걸렸다.

그런데 이 프로그램을, 위에서 말한 비주얼C로 다시 만들었더니 불과 40초 정도밖에 걸리지 않았다. 아니, 40초가 아니라 4초였는지도 모르겠다. 아무튼 믿기지 않을 정도로 빨랐다. 펄(스크립트 언어)이 아닌 C언어(컴파일러 언어)여서 빠르기도 했겠지만, 비주얼C가 Win32 환경에 최적화되어 있기 때문이기도 할 것이다.


※ 펄은, 순수한 스크립트 언어는 아니고 내부적으로는 컴파일을 한다. 그래서 스크립트 언어치고는 상당히 빠르다. ([Perl/펄] 윈도용 ActivePerl 설치법 참조)






업데이트:

여기서 설명한 "Microsoft Visual C++ Toolkit 2003"보다 좋은 것이 나왔습니다. "[희소식] 비주얼 스튜디오 무료화 / Visual C++ 2005 Express 등등"



관련 게시물:
[C언어] 비주얼C/C++ 컴파일러(cl.exe)용, 환경 변수(Environment Variables) 설정


더 읽기: C/C++


<< Home

Categories
Some Recent Posts
Monthly Archives
Top