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

 
Monthly Archive
Friday, March 31, 2006

[QnA] Perl(펄)의 모든 모듈 한꺼번에 확인하기

윈도 탐색기에 나온 Perl 디렉토리에서 마우스 오른쪽 클릭/검색을 선택하신 후, *.pm 로 검색하시면 모든 펄 모듈의 목록이 나옵니다.

펄 모듈의 확장자는 .pm 입니다.

현재 펄 v5.8.7의 경우, 총 709개의 모듈이 기본적으로 깔려 있는 것으로 나옵니다.



다음과 같이, 윈도 시작 버튼/프로그램/보조 프로그램/명령 프롬프트에서 dir 명령으로 보실 수도 있습니다.

D:\Perl>dir *.pm /S
D 드라이브의 볼륨: Foo
볼륨 일련 번호: 4853-C342

D:\Perl\lib 디렉터리

2002-06-01  10:03a               2,687 AnyDBM_File.pm
2003-09-24  08:17a              13,214 attributes.pm
2002-06-01  10:03a               1,493 attrs.pm
2003-07-09  11:11p              11,436 AutoLoader.pm
2003-08-13  11:44p              16,158 AutoSplit.pm
2004-07-04  02:32p               4,352 autouse.pm
2005-05-05  09:16a              23,813 B.pm
2005-05-27  04:46a               5,714 base.pm
2004-12-01  12:07p              28,596 Benchmark.pm
2005-04-22  06:19a              11,076 bigint.pm
2005-04-22  06:19a              14,624 bignum.pm
2005-04-22  06:19a               9,788 bigrat.pm
2002-06-01  10:03a               1,760 blib.pm
2003-08-01  07:00a                 727 ByteLoader.pm
2005-05-27  04:46a               2,472 bytes.pm
2005-05-16  09:03a               9,114 Carp.pm
2005-05-16  01:56a             246,359 CGI.pm
2004-07-04  02:32p              16,110 charnames.pm
2005-06-13  12:23p               2,443 Config.pm
2004-12-01  11:37a              11,619 constant.pm
2003-09-21  10:56p             230,967 CPAN.pm
2005-04-03  08:48a              18,506 Cwd.pm
2002-06-01  10:03a              20,034 DB.pm
2004-01-17  09:45a              15,020 DBM_Filter.pm
2004-11-01  07:03a              17,939 diagnostics.pm
2005-02-05  09:26a               9,025 Digest.pm
2002-06-01  10:03a               1,846 DirHandle.pm
2002-06-01  10:03a              17,540 Dumpvalue.pm
2005-06-06  01:37p              28,960 DynaLoader.pm
2005-05-17  09:44a              26,079 Encode.pm
2004-10-28  03:40a              19,279 encoding.pm
2003-08-13  11:44p               4,734 English.pm
2002-06-01  10:03a               5,405 Env.pm
2005-06-06  01:40p               6,091 Errno.pm
2004-01-26  02:27p              14,859 Exporter.pm
2002-06-01  10:03a               5,155 Fatal.pm
2003-08-19  11:17a               5,582 Fcntl.pm
2003-09-15  10:53p               9,126 fields.pm
2005-05-05  09:16a               5,584 FileCache.pm
2002-06-01  10:03a               7,033 FileHandle.pm
2003-08-13  11:44p               2,227 filetest.pm
2003-12-27  08:57a               5,346 FindBin.pm
2005-04-11  05:40p                 918 if.pm
(이하 생략...)


위의 화면 출력 결과를 텍스트 파일로 저장하고 싶을 때에는
dir *.pm /S > foo.txt
로 하시면 됩니다. (foo.txt 는 임의의 파일 이름입니다.)


ActivePerl을 설치하면 같이 설치되는 "ActivePerl User Guide (\Perl\html\index.html)"에 보시면, Modules라는 항목이 있습니다. 여기 모든 모듈의 설명과 사용법이 있습니다. ("[Perl/펄] 윈도용 ActivePerl 설치법" 참조)

여기에 없는 모듈은, CPAN에서 다운로드받아서 설치하셔야 합니다. 다만, C로 만들어진 펄모듈(확장자는 .xs)은 직접 컴파일을 해야 하는데, 윈도 유저들은 ASPN : ActivePerl : PPM에서, 이미 컴파일된 모듈을 다운로드받을 수 있습니다만, C로 만들어진 펄모듈들을 초보자가 설치하기는 상당히 어렵습니다.

순수한 펄로만 되어 있는 모듈은, 압축 파일 속에 있는 .pm 파일만 꺼내서 라이브러리 디렉토리에 넣어주면 대부분 잘 작동합니다.


관련 포스트: [Perl] 특정 펄 모듈이 이미 설치되어 있는지 확인하는 배치 파일

Thursday, March 30, 2006

Archives를 드롭다운리스트에 넣고, 해당 월(月)이 나오게

일러두기: 이것이 드롭다운리스트




시작:

2006.03
2006.02
2006.01
2005.12


많은 분들이 Archive 목록을 드롭다운리스트(Drop-down List)에 넣는데, 이것에 약간 불편한 점이 있었다. 가령, 현재 1월달 Archive를 보고 있는데도, 목록에 기본값으로 나타나 있는 Archive는 항상 최신 Archive이거나, 그냥 ARCHIVES 라는 문자열이었다.

필자가 며칠 전에 어떤 외국인의 블로그에서 Archive 목록을 훑어보았는데, 다음달 Archive를 읽기 위해 이동할 때마다, 이 드롭다운리스트가 최신 Archive로 리셋되어 버려서, 다음에 읽어야 할 Archive가 몇월 달의 것인지 잘 알 수 없었다.


2006.03
2006.02
2006.01 <- 만약 현재 이것을 읽고 있다면
2005.12

드롭다운리스트에 2006.01 이라고 표시되어야만, 다음에 읽어야할 Archive인 2005.12 의 것을 쉽게 선택할 수 있다. 그런데 항상 2006.03을 가리키고 있었다.


쉽게 말해서
이렇게
바꾸고 싶었다.


드롭다운목록은 <select> 와 <option> 태그로 만드는데, <option> 에 selected 라는 것을 넣어주면, 특정 항목을 기본값으로 만들 수 있다. 이번 달의 연월(예: 2006.02)을 기본값으로 지정해 주면 되는 것이다. 이것은 자바스크립트를 필요로 한다. (블로거(blogger.com)는 오래된 Archive 를 가장 위에 배치하기에, 자바스크립트로 순서도 뒤집어 주었다.)



템플릿에 넣어야 할 코드:

코드는 두 부분은 나누었다.

<head>

...중략...

<script type="text/javascript">
<ArchivePage>
 function GetArchiveDate() {
   var ArchiveTitle = new String("<$BlogPageTitle$>");
   var DelStr = "<$BlogTitle$>" + ": ";
   var ArchiveDate = ArchiveTitle.replace(DelStr, "");
   return ArchiveDate;
 }
</ArchivePage>
</script>

...중략...

</head>


위와 같은 코드를 <head> 안의 적당한 곳에 넣어 둔다. 가장 아래가 적당할 것이다. GetArchiveDate() 라는 함수는, 현재 읽고 있는 Archive페이지의 월(月)을 리턴한다.

2006-04-08 업데이트: <ArchivePage></ArchivePage> 로 자바스크립트 함수를 감싸주었음. 다른 종류의 페이지에서 이 함수가 로딩되면, 브라우저 하단의 상태 바에 노란 삼각형 아이콘이 생기며 자바스크립트 경고가 나왔기 때문. 가령 아이템 페이지에서 로딩되면, 아이템 페이지의 포스트 제목이 이 함수 안에 들어가며, 이때 포스트 제목에 따옴표나 괄호가 있으면 자바스크립트와 충돌했음.






<div style="text-align:right; margin-bottom:30px;">
<script type="text/javascript">
 var archives = new Array();
 <BloggerArchives>archives[archives.length] = new Array('<$BlogArchiveURL$>', '<$BlogArchiveName$>');</BloggerArchives>
 document.write('<select name=\"ArchiveMenu\" onchange=\"location.href=this.options[this.selectedIndex].value;\" style=\"background-color:#FFFFFF; color:#000000;\">');
 for (var i = archives.length - 1; i >= 0; i--) {
   document.write('<option value=\"' + archives[i][0] + '\"');
   if (GetArchiveDate() == archives[i][1]) document.write(' selected=\"selected\"');
   document.write('>' + archives[i][1] + ' 월호' + '</option>');
 }
 document.write('</select>');
</script>
</div>


<ArchivePage></ArchivePage> 태그를 만들어, 위의 코드를 안에 넣어주면 된다. (단, ' 월호' 라는 문자열은 붙여주지 않아도 된다.)

2006-04-03 업데이트: 코드를 약간 최적화. 그 외에는 달라진 것 없음. 버전 1.05




참고 사항:
위의 드롭다운메뉴는 자바스크립트로 만들어져 있기에, 구글 같은 검색엔진이 읽을 수 없을 가능성이 높다. 따라서, 원래 Archive목록을 지우고, 이 드롭다운메뉴만을 사용하면, 검색엔진의 검색결과에 블로그가 나오지 않을 위험이 있다. 원래 Archive목록은 놔두고, 위의 드롭다운메뉴을 화면에 추가하는 방식을 택하는 것이 무난하다. ("블로그가 구글에 잘 인덱스 안되던 이유를 좀 알게 됨" 참조)





현재, 필자의 Archive 페이지 상단의 코드를 모두 공개하자면 다음과 같다.

<ArchivePage>
<div style="font-family:'Arial Black'; font-weight:normal; font-size:24pt; text-align:center; color:#A9E2C5; margin-top:15px;" title="월별 게시물 목록">Monthly Archive</div>

<script type="text/javascript">
 document.write('<div style=\"text-align:center; margin-top:10px; margin-bottom:60px;\"><a href=\"javascript:window.location.reload(true);\" class=\"wasabi-no-uline\"><span style=\"font:italic bold 32pt \'Georgia\'; color:#C5C5E6;\">' + GetArchiveDate() + '</span></a></div>');
</script>
<noscript><div style="color:red; text-align:center; margin-top:20px; margin-bottom:60px;">JavaScript Disabled</div></noscript>

<div style="text-align:right; margin-bottom:30px;">
<script type="text/javascript">
 var archives = new Array();
 <BloggerArchives>archives[archives.length] = new Array('<$BlogArchiveURL$>', '<$BlogArchiveName$>');</BloggerArchives>
 document.write('<select name=\"ArchiveMenu\" onchange=\"location.href=this.options[this.selectedIndex].value;\" style=\"background-color:#FFFFFF; color:#000000;\">');
 for (var i = archives.length - 1; i >= 0; i--) {
   document.write('<option value=\"' + archives[i][0] + '\"');
   if (GetArchiveDate() == archives[i][1]) document.write(' selected=\"selected\"');
   document.write('>' + archives[i][1] + ' 월호' + '</option>');
 }
 document.write('</select>');
</script>
</div>

<Blogger>
<BlogItemTitle>
<div style="font-family:'Arial'; font-size:10pt; font-weight:bold;" class="wasabi-fc-gray-cool"><BlogDateHeader><$BlogDateHeaderDate$></BlogDateHeader></div>
<div style="margin-bottom:3px;"><a href="<$BlogItemPermalinkURL$>"><$BlogItemTitle$></a></div>
</BlogItemTitle>
</Blogger>
<p style="margin-bottom:50px;"></p>
</ArchivePage>


2006-04-03 업데이트: 위의 핵심 코드 버전 1.05을 반영했음

2006-04-03 4:49오후 업데이트: Back 버튼을 눌러 아카이브 페이지들을 살펴보는 경우, 드롭다운 리스트가 갱신되지 않고, 직전에 보던 달의 아카이브를 가리키고 있는 버그가 있었다. 그러나 도저히 고칠 수가 없었다. 코드의 문제가 아니라 브라우저 차원의 문제인 듯했다. 심지어 F5키를 눌러도 갱신되지 않았다. Ctrl+F5를 누르면 겨우 갱신되었다. 날짜 문자열에 (예: 2003.01) Ctrl+F5키에 해당되는 링크(javascript:window.location.reload(true);)를 넣어주는 방법밖에는 없었다. 그래서 바로 위의 코드박스가 약간 갱신되었다. 하루종일 이 문제로 고민하다가 시간을 다 보냈다.



노파심: 블로그 기본 페이지(Home)의 아카이브 목록은 이렇게 특정 월(月)을 표시해줄 필요도 없고, 해줄 수도 없다. 이것은 어디까지나 아카이브 페이지 안에서의 아카이브 목록의 경우다.





2006-04-03 6:46오후의 여담: 지금 생각해 보니 버그가 아니라 <select><option>... 태그에서는, 그런 것이 정상인 듯하다. 즉, "뒤로 가기 버튼" 등으로 네비게이션을 할 때는 원래, SELECTED 속성으로 지정해 준 항목으로 리셋되지 않는 것 같다. 괜히 버그로 착각하고 하루종일 고생했다.

Archives를 이용한, 가입형 블로그 백업 방법

(※ 지난주에 쓴 글임)

오늘 "블로그 도움말 그룹"에 보니, 블로그 백업에 대한 문의가 있었다. 요즘 블로거(blogger.com)가 불안정해져서 블로그가 당장이라도 날아가버릴 것 같다는 불안감도 호소하고 있었다. 자기가 몇 년 간 공들여 쓴 글들이 하루 아침에 다 날아가버린다니, 이건 납량특집이 따로 없는 것 아닌가.

블로거(blogger.com)는 물론이고, 블로그를 통째로 자신의 하드에 백업하는 기능을 지원하는, 가입형 블로그 서비스는 없는 듯했다. Archives 페이지를 백업용으로 이용하는 방법밖에는 없었다. 국내 블로그의 경우, Archives 페이지는 "지난 글 모음"이라는 이름으로 번역되어 있다.

블로그의 Archives 를 "매월"로 지정한 후 (대부분의 경우 이미 매월(Monthly)로 지정되어 있을 것이다.), 파이어폭스로 Archives 페이지를 통째로 저장하는 것이다. Ctrl+S 키를 이용. (인터넷 익스플로러는 페이지 저장 기능에 버그 있어 잘 되지 않음)


다음은 하드에 저장된 결과:
2006-03-13  05:09p      <DIR>          2005_12_01_archive_files
2006-03-13  05:10p      <DIR>          2006_01_01_archive_files
2006-03-13  05:10p      <DIR>          2006_02_01_archive_files
2006-03-17  02:32p      <DIR>          2006_03_01_archive_files
2006-03-20  04:26p              40,861 2005_12_01_archive.html
2006-03-20  04:26p             192,880 2006_01_01_archive.html
2006-03-20  04:31p             216,581 2006_02_01_archive.html
2006-03-20  04:27p             166,698 2006_03_01_archive.html


.html 파일이 백업된 블로그이고, ..._files라는 디렉토리는 그림들이 저장되는 곳.

단, 그림 저장에 조금 문제가 있다. Archives 페이지에서 보이는 그림은 문제가 없지만, 그 그림을 클릭해서 나오는 원본 그림은 저장되지 않는다. 원본 그림은 수동으로 직접 저장하는 수밖에 없었다. 아니면 WebZip 같은 Offline Browser로 블로그를 통째로 백업하면 되는데, 오프라인 브라우저라는 게 사용법도 복잡하고, 생각대로 잘 작동하지 않아서, 여기서는 사용하지 않았다.


물론 단순히 html 파일들을 저장하는 것으로는 블로그를 완전히 백업했다고 말할 수 없다. 비상용으로 쓸 수 있을 뿐이다.


※ 네이버 블로그 등, 국내 포털의 블로그 서비스에는 한 장으로 연결된 Archives 페이지가 대체로 없는 듯했다. 그렇다면 이 방법으로는 백업을 할 수 없을 것이다.

월별Archive에 연월(2006.03) 붙이기, 블로거(blogger.com)의 경우

원래 블로거(blogger.com)의 월별 저장 페이지 즉 "지난 글 모음"에는, 해당 연도와 달이 표시되어 있지 않다. 그래서 현재 읽고 있는 Archive 페이지가 몇월 달의 것인지 쉽게 알 수 없어, 브라우저의 타이틀바에 있는 작은 글씨를 읽어야만 했다.

"Archive 페이지가 작성된 연월(年月)"만을 표시해 주는 태그는 아무리 찾아봐도 없었다. 그렇지만 이 기능이 매우 절실했다. 내 자신이 보아도, 언제 쓴 글들인지 잘 모를 지경인데 방문객들은 오죽하겠는가.

다음과 같이 표현될 방법을 궁리해 보았다.

Monthly Archive


2006.03



아무리 생각해도, 자바스크립트(JavaScript)를 사용하는 방법밖에는 없었다. mwultong Blog ― 소설 / IT: 2006.03 월호 이런 제목줄에서 연월(年月)만을 추출하는 식이다. (뒤에 있는 " 월호"는 필자가 제목줄에 덧붙여 준 것에 지나지 않음)



작년에 자바스크립트를 잠깐 사용한 후 너무 오랜만이어서 문법도 잘 생각나지 않았다. 펄(Perl)도 그렇지만, 다른 언어들도 Cookbook이 유용했다. Cookbook이 없을 때는 레퍼런스만을 보고 프로그래밍을 하느라 아주 힘들었었다.

JavaScript & DHTML Cookbook


By Danny Goodman

Publisher : O'Reilly
Pub Date : April 2003
Pages : 540

쿡북을 들추자마자, 1.7 Searching and Replacing Substrings 에서 곧 해결법이 얻어졌다.

String 오브젝트의 replace( ) method 로써, 에디터나 워드프로세서의 "바꾸기" 명령을 사용하듯 간편하게 문자열을 조작할 수 있었다.

다음과 같은 코드가 완성되었다:

<script type="text/javascript">
 var ArchiveTitle = new String("<$BlogPageTitle$>");
 var DelStr = "<$BlogTitle$>" + ": ";
 var ArchiveDate = ArchiveTitle.replace(DelStr, "");
 document.write("<div style=\"font:italic bold 32pt 'Georgia'; text-align:center; color:#C5C5E6; margin-top:10px; margin-bottom:80px;\">" + ArchiveDate + "</div>");
</script>
<noscript><div style="color:red; text-align:center; margin-top:20px; margin-bottom:60px;">JavaScript Disabled</div></noscript>



필자의 블로그의 경우, <$BlogPageTitle$> 에는 "mwultong Blog ― 소설 / IT: 2006.03" 이런 문자열이 들어 있다. <$BlogTitle$> 에는 "mwultong Blog ― 소설 / IT" 이런 문자열.

따라서 <$BlogPageTitle$>에서, <$BlogTitle$>과 ": " 이것을 빼주면 연월만 남는 것이다.



자바스크립트와 블로거 전용 태그들이 뒤섞여 있어, 잘 될지 우려했지만 의외로 아주 잘 작동했다.

적용된 결과는 여기




업데이트:

"Archives를 드롭다운리스트에 넣고, 해당 월(月)이 나오게" 포스트를 보시면, 여기에 소개된 코드를, GetArchiveDate() 라는 함수로 만들어서 쓰는 방법이 있습니다. 함수로 만드는 쪽을 추천합니다.

Wednesday, March 29, 2006

블로거(Blogger.com) 전용 '올블로그'인 '한글 Blogger 업데이트 정보' 출범

한글 Blogger 업데이트 정보는 올블로그와 거의 같은 기능을 가지고 있다. 물론 올블로그 회사와는 아무 상관이 없다. Ralrara님께서 개인적으로 만든 것이다.

구글에서 제공하는 블로그 서비스인 Blogger.com + blogspot.com 에 만들어진 블로그만을 대상으로 한다. (Blogger.com 유저라도, blogspot.com 에서가 아닌, 자신이 직접 호스팅하는 경우에는 목록에 나타나지 않는 듯하다)

현재 모든 Blogger.com + blogspot.com 유저들의 블로그 갱신 정보가 나오지는 않고 있다. 아마 등록 신청을 해야 할 것 같다.

2006-03-30 수정 사항:
랄라라님께서 직접 말씀해 주셨습니다. 구글 블로그 서치에 등록되어 있고 blogspot.com 에서 호스팅되는 모든 블로그는 자동으로 등록이 됩니다.





업데이트

구글 공식 블로그에도 "한글 Blogger 업데이트 정보" 사이트가 등록되어 있습니다.


블로그 이름을 포스트 제목 뒤로 이동하여, 검색에 유리하게 ㅎㅎ

구글어스에 대한 포스트가 있었는데, 그 포스트를 구글에서 검색해 보니, 제목이 다음과 같이 많이 잘려 있었다.

mwultong Blog ― 소설 / IT: 구글 어스(Google Earth)에서 자금성 ...


원래 제목은 구글 어스(Google Earth)에서 자금성(자장면집 아님), 피라미드 발견 이었다.

블로그 제목 즉 블로그 이름이 "mwultong Blog ― 소설 / IT" 이렇게 길었기 때문에, 진짜 중요한 포스트 제목이 잘려 버린 것이다.

이 문제를 해결하기 위해서 많은 시도를 했다. 우선, 블로그 제목 자체를 없애거나 최대한 짧게 줄이는 방법을 생각해 볼 수 있는데, 이러면 아톰 같은 사이트 피드(예: http://mwultong.blogspot.com/atom.xml)의 제목도 엉망이 되어 버리는 문제가 있었다.

그런데 오늘 이 문제를 완벽히 해결했다. 다음과 같이 템플릿을 고치고 블로그를 모두 재게시하면 된다.


블로거닷컴(blogger.com)의 기본 템플릿에 있는 이 부분을
<head>
 <title><$BlogPageTitle$></title>

 <$BlogMetaData$>



다음과 같이 고치는 것이다:
<head>
<$BlogMetaData$>

<MainPage>
 <title><$BlogPageTitle$></title>
</MainPage>

<ArchivePage>
 <title><$BlogPageTitle$> 월호</title>
</ArchivePage>

<ItemPage>
 <title><Blogger><$BlogItemTitle$></Blogger> : <$BlogTitle$></title>
</ItemPage>


(<ArchivePage>의 " 월호"라는 문자열은, 필자가 Archive 페이지를 월간지 형식으로 만들기 위해 붙인 것이다. 필수적인 것은 아니다.)


이렇게 하면, 블로그 제목(필자의 경우 "mwultong Blog ― 소설 / IT")이, 포스트 제목 뒤로 말끔하게 이동한다.

브라우저의 최상단 타이틀바에,
구글 어스(Google Earth)에서 자금성(자장면집 아님), 피라미드 발견 : mwultong Blog ― 소설 / IT
이렇게 나타난다. 이러면 검색엔진의 검색결과에서도 마찬가지로 나타난다.


특히 파이어폭스나 IE 7 같은 탭브라우저에서는, 페이지 제목 앞에 사이트 제목이 있으면, 탭에 나타난 글들의 제목이 무엇인지 알 수가 없게 된다. 탭의 길이가 길지 않기 때문이다. 따라서 이렇게 사이트 제목(여기서는 블로그 제목)을 뒤로 이동시키면 접근성이 높아진다. 그리고 앞서 말한 바와 같이, 검색엔진의 검색 결과에서도 제목의 대부분이 명확하게 나오는 장점이 있다.


원래 <$BlogPageTitle$>은 블로그 제목을 앞에 강제로 붙이는데, 이것을
<$BlogItemTitle$> 과 <$BlogTitle$> 로 분리한 것이 이 글의 요점이다.

단, <$BlogItemTitle$>은 <Blogger><$BlogItemTitle$></Blogger> 이렇게 <Blogger>로 감싸주어야만 내용을 출력한다.


아무튼 이렇게 브라우저 제목줄을 변경하면 검색에 유리해질 것이다. 검색엔진에 유리하지는 않겠지만, 검색엔진 사용자들이 제목 전부를 볼 수 있기 때문에 방문객이 약간 많아질 것이다. 물론 이론적으로 그렇다는 이야기다.



참고 사항:
전에, "블로거(blogger.com)의 인코딩 버그 완벽 해결법" 포스트에서 설명한 바 있지만, <$BlogMetaData$>는 <title> 태그보다 위에 있어야 한다.


참고 사항:
블로거닷컴(blogger.com)에서 "포스트의 낱장"들은 게재 페이지 혹은 아이템 페이지로 불린다. 어떤 포스트에 링크를 걸기 위해서는, 이 페이지의 주소를 사용함.


참고 사항:
이 태그들은 HTML 태그가 아니라, 블로거닷컴(blogger.com)의 템플릿에서 사용되는 조건부 태그들이다.

<MainPage></MainPage>
태그 안에 있는 내용은 블로그 첫 화면에만 적용. 다른 곳에서는 무시됨.

<ArchivePage></ArchivePage>
이 안에 있는 내용은 Archive 페이지에 대한 적용. 다른 곳에서는 무시됨.

<MainOrArchivePage></MainOrArchivePage>
첫화면과 Archive 페이지에 둘다 적용. 아이템 페이지에서는 무시.

<ItemPage></ItemPage>
이 안에 있는 내용은, 낱장 페이지 즉 아이템 페이지에만 적용. 다른 곳에서는 무시됨.


Tuesday, March 28, 2006

신문연재 일본어회화/인코딩/후리가나(Furigana)루비 태그

신문에 연재되는 일본어 회화의 난이도를 높여야 한다. 언제 봐도, "안녕하세요, 다꾸앙 좀 드시겠습니까" 정도의 회화밖에는 나오지 않는다. 그래서 아무리 오래 구독해도 일본어 실력이 제자리 걸음일 뿐 하나도 늘지가 않는다. 물론 연재가 진행될수록 난이도가 조금씩 늘어나긴 하지만 1년에 한번씩 이 난이도가 리셋되어 버려, 다시 "하나, 둘, 셋, 안녕하세요, 다꾸앙 좀 드시겠습니까"로 돌아가 버린다. 이 문제는 1회분 안에 저난이도와 고난이도의 회화를 적절히 섞어 넣으면 자연스레 해결될 일이다. (※ 이것은 몇 년 전에 쓴 글인데, 요즘의 일본어 회화들은 난이도가 약간 높아졌다...)

그리고 일본어 관용구들을 좀 수집하려고 했더니, 연재 기사가 텍스트가 아닌 "그림 파일"로 올려져 있어서 그나마 글자들을 복사할 수가 없었다. 그림 파일로 올린 이유는, 한국어 페이지에서 일본식 문자들을 잘 표현할 수 없기 때문일 것이다. 그리고 후리가나의 문제도 있을 것이다.

인터넷 초창기에는 euc-kr 인코딩을 사용했기에, 한글과 일본어를 한 페이지에 동시에 나타내기 힘들었다. 물론 euc-kr 인코딩으로도 일본어를 나타낼 수는 있지만, 일본식 한자들(예: 写真)과 장음기호(), 반복기호() 등은 표현할 수 없었다. 또한 euc-kr의 일본어는 진짜 일본 글자가 아니라 ▒■□◆●○☎♨♧♥♬ 이런 그림 기호들 중의 하나에 지나지 않는다. 즉 일본어처럼 보일 뿐이지 실은 한글의 일부인 것이다.

그러나 유니코드(UTF-8)가 보편화된 요즘에는, 유니코드(UTF-8)로 인코딩하면 한 페이지에 한글과 일본어는 물론 중국어 간체나 유럽어, 아랍어 등 모든 문자를 정확히 표현할 수 있다. 모든 페이지를 UTF-8로 인코딩할 필요는 없고, 일본어/중국어 회화 페이지에만 적용하면 되는 것이다. (단, 블로그, 특히 가입형 블로그의 경우, 특정 페이지에만 특정 인코딩을 적용하기는 사실상 불가능하다.)


※ 유니코드는 여러 종류가 있는데, 윈도2000/XP이상에서 내부적으로 사용하는 Unicode (UTF-16LE)로 된 웹 문서(.html 등등)는 인터넷에 올릴 수 없다. 인터넷의 유니코드는 UTF-8이 원칙이다.



추가 사항: UTF-8로 일본어를 인코딩하더라도, 한글 OS/브라우저의 경우, 한일 공통의 한자는, 한글 폰트에 있는 한자가 웹페이지에 우선적으로 나오게 된다. 이러면 글자 모양에 일관성이 없으므로, 일본어 문장 전체에 일본어 폰트를 지정해 주어야 한다.

그리고 이건 좀더 미묘한 문제인데,
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
이런 웹페이지 언어 지정이 en (영문) 이 아닌 ko (한국어)로 되어 있다면, lang="ja" 속성을 사용해, 일본어라는 것을 웹브라우저에게 명백히 알려주어야 한다. 그래야만 한일 공통 한자에도 일본어 폰트가 적용되었었다. (이건 인코딩과는 별개의 문제다)

예를 들어, 帰国後に現像した写真を見てびっくりしました。 라는 문장이 있다면 이것에 다음과 같은 태그를 붙여 주면 된다.

<span lang="ja" style="font-family:'MS Mincho', serif">帰国後に現像した写真を見てびっくりしました。</span>




후리가나(Furigana) 표현


또한 일본어 표현에서 후리가나의 존재도 골치 아픈 문제인데, 다행히 웹 표준에서는 이렇게 후리가나도 지원한다:


現像げんぞうした写真しゃしん




現像げんぞうした写真しゃしん




다음의 태그를 사용하면 된다.
<ruby><rb>現像</rb><rt>げんぞう</rt></ruby>した<ruby><rb>写真</rb><rt>しゃしん</rt></ruby>


다음과 같이, 한국어 한자어의 독음을 표시할 때도 쓸 수 있다.



建築건축



단, 현재 파이어폭스 1.x에서는 루비 태그를 지원하지 않는다.


▶▶ 일본어 후리가나 자동 변환 사이트, 한자어 읽기 발음 히라가나 붙이기; Furigana, Ruby Add

Monday, March 27, 2006

주황색과 잘 어울리는 색, 오렌지색이랑 조화를 이루는 색상, 배색 문제; QnA

배색표를 뒤져보면 주황색이랑 가장 어울리는 색은 다음과 같은 황색 계열입니다. 그리고 노란색 중에서도 아래처럼 "코닥 옐로우" 같은 진한 노랑색이 주황색이랑 잘 어울립니다.

#FF8868 
#FFDE66 


그리고 흰색과도 어울립니다. 흰색은 모든 색과 잘 어울리지요.


아래는 제 블로그에서 메뉴 항목으로 사용하고 있는 배색인데, 색의 면적에 따라서도 느낌이 상당히 달라진다는 것을 알 수 있습니다. 색의 "면적"도 배색에서 아주 중요한 요소입니다.
About Me


#FFC079 
#C5C5E6 





Recent 10 Posts


#FF8868 
#848CB5 
#FFCC33 



주황에 어울리는 색, vol.2 보기 : (새로 추가한 색상표입니다) ▶▶ 주황색과 어울리는 색, 오렌지색이랑 조화를 이루는 색상 Orange Color vol.2

주황에 어울리는 색, vol.3 보기 : (새로 추가한 색상표입니다)
▶▶ 오렌지와 어울리는 색, 오렌지 컬러와 어울리는 색상; Orange Color Swatches vol.3

▶▶ 노란색에 잘 어울리는 색, 황색 노랑색이랑 조화를 이루는 색깔들; Yellow Color

▶▶ 베이지색과 어울리는 색, 베이지랑 조화를 이루는 색상들; Beige Color Table

▶▶ 보라색에 잘 어울리는 색, 보라색이랑 조화를 이루는 색깔; Violet Color

▶▶ 갈색이랑 잘 어울리는 색, 고동색이랑 조화를 이루는 색상; Brown Color

더 많은 색상표 보기:

Saturday, March 25, 2006

구글어스 다운로드하는 곳? 구글 어스는 무료입니까? [QnA]

Q: 구글어스는 어디서 다운로드(내려받기)합니까?

A: 구글어스 한글판이 나왔습니다.
http://earth.google.com/intl/ko/download-earth.html
여기로 가신 후,
이렇게 생긴 버튼을 누르시면 구글어스가 다운로드(내려받기)됩니다. 단, 윈도 2000과 윈도XP 이상, 그리고 Mac OS X에서만 실행되고 윈도98에서는 실행되지 않습니다.

※ 2006-11-28: 현재 버전4가 나왔는데, 버전3보다 위성사진이 더 선명하고 좋았습니다. (▶▶ [구글어스4] 부산 해운대 백사장 나옴 / 구글어스 베타4 설치법 - Google Earth 4 참고)



Q: 구글어스는 무료입니까?

A: 예, 구글 어스(Google Earth)는 무료 프로그램입니다. 유료 버전도 있지만 GPS 등의 전문적인 기능만 있을 뿐이어서, 일반인에게는 무료 버전으로도 충분합니다.



Q: 구글어스에 한글판(한국어판)이 있습니까?

A: 2007년 5월에 한글판 구글어스가 나왔습니다. 아니오, 현재 구글 어스는 영문판만 있습니다. 그렇지만 한글 윈도에서 사용하는 데 전혀 지장이 없습니다. (구글 어스를 사용하시다가 모르는 단어가 있으면 인터넷 영어사전에서 간편히 찾아보시면 됩니다.)

※ 현재 www.google-earth.co.kr 라는, 구글어스에 관련된 한글 사이트가 있지만, 주민등록번호를 요구하는 것으로 보아, 구글 어스의 공식 한글 사이트는 아닙니다.




Q: 구글어스의 유료 버전은 화면이 더 선명합니까?

A: 무료 버전과 같은 것으로 알고 있습니다. "구글 어스 무료 버전" 화면의 메뉴에 있는, "Tools/Options/View/Detail Area"에서 "Large (1024x1024)"를 선택해 주시면 더 고해상도로 위성사진이 나올 것입니다.









구글어스 설치법 (한글로 번역하여 쉽게 설명)


이제 구글어스 한글판이 나왔기에 이 부분은 읽으실 필요가 없을 것입니다.

(1)
위에서 설명한 곳에서

이런 버튼을 누르시면, 다음과 같은 글이 영어로 나옵니다:

Thanks. The Google Earth download should start automatically.
If it doesn't, please click here to start it.
(감사합니다. 구글어스 내려받기가 자동적으로 시작되었습니다. 만약 잘 되지 않으면, click here to start it. 이라는 곳을 눌러보세요.)




(2)
이제 여러분의 컴퓨터에 GoogleEarth 또는 GoogleEarth.exe 라는 파일이 생겼을 것입니다. 그것을 마우스로 클릭하시면 설치가 시작됩니다. (만약 이 파일이 잘 찾아지지 않으면 바탕 화면 등에서 한 번 찾아보세요.)


(3)
처음에 창이 하나 나타납니다. "Next" 버튼, 즉 "다음" 버튼을 마우스로 클릭하세요.

(4)
I accept the terms of the license agreement (약관에 동의합니다) 를 클릭하여 선택하신 후, 다시 "Next" 버튼을 눌러 다음으로 넘어갑니다.

(5)
Complete (모두 설치)Custom (선택 설치) 을 고르는 창이 나타나는데, Custom (선택 설치)을 고르세요. 다시 "Next" 버튼을 눌러 다음으로 넘어갑니다.

(6) 구글어스가 여러분의 하드디스크의 어디에 설치될지 정하는 곳이 나옵니다. 기본적으로, C드라이브에 설치되는데 Change (바꾸기) 버튼을 누르시면 위치를 D드라이브 등으로 바꿀 수 있습니다. 바꾸지 않아도 됩니다. 그런 후 다시 "Next" 버튼을 눌러 다음으로 넘어갑니다.

(7)
'구글어스 캐쉬 파일'의 위치를 정하는 화면이 나옵니다. 구글어스는 인터넷에서 위성지도를 실시간으로 다운로드받아옵니다. 그 받아온 지도를 여러분의 하드디스크에 임시로 저장해 둡니다. 그래야 더 빠르게 지도를 살펴볼 수 있기 때문입니다. 이것을 '구글어스 캐쉬 파일'이라고 부르는데, 이 파일은 상당히 크기가 큽니다. 수백 메가가 넘습니다. 이 파일을 여러분의 하드디스크 어디에 저장할지 선택하는 곳입니다. Browse (찾아보기) 버튼을 누르시면 위치를 바꿀 수 있습니다. 바꾸지 않아도 괜찮습니다. 다시 "Next" 버튼을 눌러 다음으로 넘어갑니다.

(8)
이제 화면에 그래프가 나오면서, 구글어스 설치가 시작됩니다.

(9) 설치가 끝나면, "익명의 정보를 구글로 보내시겠습니까?" 라는 의미의 영문(영어)이 나옵니다. I will allow this information to be sent (정보를 보내는 것을 허용합니다) 에 체크 표시가 되어 있습니다. 그리 중요한 것은 아닙니다. 다시 "Next" 버튼을 눌러 다음으로 넘어갑니다.



(10) 이제 다음과 같은 글이 나옵니다:
Install Google Toolbar to launch Google Earth Searches from your web browse
웹브라우저에서, 구글어스로 특정 지명을 찾기 위해, 구글 툴바를 여러분의 컴퓨터에 설치합니다.

Set Google as my default search engine in Internet Explore
구글을 여러분 브라우저의 기본 검색엔진으로 사용합니다.

Yes, I want to launch Google Earth now
예, 지금 구글어스를 실행시키겠습니다.

위의 세 가지 옵션에, 이미 체크 표시가 되어 있습니다. 마음에 안 드는 옵션이 있으면 체크 표시를 없애면 됩니다.

(11)
Finish (끝내기) 버튼을 누르시면, 구글어스 설치가 완료됩니다.


(12)
구글어스가 실행되면, 즉시 실행되지 않고, 몇 가지 창이 나올 수 있습니다.

예를 들어,

...
Would you like to switch to 'DirectX' mode?
'다이렉스X' 모드로 전환하시겠습니까?

라는 창이 나오면 Yes (예) 버튼을 누르시면 됩니다. 그러면 "Please start Google Earth again for DirectX mode. (다이렉트X 모드로 구글어스를 다시 시작하십시오.)" 라는 창이 나옵니다. 이 창을 없애고, 구글어스를 다시 실행시키세요.

(13)
바탕 화면에 "Google Earth" 라는 바로가기 아이콘이 하나 만들어져 있을 것입니다. 아이콘에 작은 화살표가 붙어 있기에 쉽게 알 수 있습니다. 그 아이콘을 눌러서 구글어스를 다시 실행시키세요.


(14)
만약 "1024x768 ..." 이라는 숫자가 섞인 창이 나온다면, 여러분의 컴퓨터 모니터 화면의 해상도를 1024x768 모드 또는 그 이상의 고해상도로 바꾸어 주어야 합니다.

또는
"True Color (32 bit) ..." 라는 문장이 있는 창이 나온다면, 여러분의 컴퓨터를 "트루컬러 32비트 모드"로 바꾸어 주어야 합니다.

바탕화면에서 마우스 오른쪽 버튼을 누르면 등록정보 라는 것이 나옵니다. 그것을 선택하시면 디스플레이 등록 정보 라는 창이 나옵니다. 이때 설정 이라는 탭을 클릭하신 후,
트루칼러 32비트로 변경하고, 해상도1024x768 또는 그 이상으로 선택하세요.
그런 후 확인 버튼을 누르시고
다시 구글어스 아이콘을 눌러 구글어스를 실행시켜 보세요.





참고로, 구글어스는 오래된 컴퓨터에서는 잘 실행되지 않습니다.

여러분의 컴퓨터 운영체제가 "윈도98"이면 실행되지 않습니다. 윈도2000(Windows 2000)이나 윈도XP(Windows XP) 이상이 되어야 합니다.

'3D 가속 기능'이 지원되는 그래픽 카드가 반드시 있어야 합니다.

여러분의 컴퓨터에서 "3차원 게임"이 잘 실행되지 않는다면, 구글어스도 잘 실행되지 않습니다.



그리고 휠 마우스가 있어야 편리합니다. 마우스의 휠을 돌리면, 구글어스의 지구본이 쉽게 확대/축소가 됩니다.





▶▶ 구글 어스(Google Earth)에서 자금성(자장면집 아님), 피라미드 발견

▶▶ 구글 어스 위성사진에서, 백두산 천지 스냅샷. 동해 일본해 병기

▶▶ 구글스페이스, 구글어스로 우주 [천문, 별자리 사진] 보기 방법; Google Earth 4.2 Sky

[독서] 이문열 소설 '호모 엑세쿠탄스' 프리뷰 / 여담

이문열 선생의 이노블타운 연재소설 『호모 엑세쿠탄스』의 첫페이지




갑자기 옆구리가 허전하고 사방이 조용해진 느낌에 그는 퍼뜩 눈을 떴다. 잠들기 전 곁에 누워있던 노랑머리가 보이지 않았다. 깜빡 짧고 달콤한 졸음에 떨어진 것쯤으로 여겼으나, 실은 함께 정사(情事)를 나누고 한 침대에 누웠던 사람이 옷을 챙겨 입고 방을 나가도 모를 만큼 깊고 긴 잠을 잔 듯했다.

처음 만났을 때의 인상과는 달리 노랑머리는 제법 꼼꼼하게 제 흔적을 지우고 떠났다. 일어나느라 침대시트를 젖힐 때, 땀 냄새인지 정액 냄새인지 모를 냄새가 희미하지만 역하게 그의 코를 찌른 것 외에 여자가 함께 있다가 간 흔적은 방안에 거의 남아있지 않았다. 그 깔끔한 마무리가 갑자기 그를 불안하게 만들었다.

그는 벌거벗은 채 옷장으로 가 양복 윗도리에서 지갑부터 꺼내 보았다. 많지 않은 현금은 모텔 숙박료를 물고 남은 그대로였고 카드와 신분증도 손댄 흔적은 없었다.


노랑머리가 너무 쉽게 안겨와 언뜻 걱정했던 것처럼 꽃뱀을 만난 것도, 질 나쁜 원조교제에 걸려든 것도 아니었다. 마음이 놓이자 노랑머리가 그렇게 떠나버린 게 슬그머니 아쉬워졌다. 그는 마리인가 뭔가 하는, 듣는 순간 단번에 그때그때 지어내 쓰고 있는 이름임을 알 것 같은 이름 외에 그녀에 대해 별로 물어두지 않은 걸 문득 후회했다. 부킹을 주선한 웨이터에게 그녀의 연락처가 있을까.

냉장고에서 생수 한 병을 꺼내 마시고 그는 다시 침대에 누워 불을 껐다. 내쳐 자고 다음날 바로 회사에 나갈 생각이었으나 마신 술이 생각보다는 많지 않았던지 쉽게 잠이 오지 않았다. 머리맡 전기시설 컨트롤 박스에 함께 들어있는 점멸(點滅)시계를 보니 이제 막 새벽 두 시를 넘기고 있었다.





위의 소설이 게재되어 있던 유료소설 사이트인 이노블타운(enoveltown.com)이 없어졌다. 아마 2005년도쯤에 없어졌지만 '아무도 그 사실을 알지 못했다'.

이노블타운은 온미래주식회사(서울 강남구 논현동 15-12 유레카빌딩 4층)에서 만든 사이트다. 그러나 온미래주식회사의 사이트(onmire.com)도 연결되지 않는다.

핑(Ping)을 보내봐도 찾지를 못한다:
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

D:\Z>ping www.enoveltown.com
Unknown host www.enoveltown.com.

D:\Z>ping www.onmire.com
Unknown host www.onmire.com.

D:\Z>ping www.yahoo.com

Pinging www.yahoo.akadns.net [66.94.230.47] with 32 bytes of data:

Reply from 66.94.230.47: bytes=32 time=161ms TTL=55
Reply from 66.94.230.47: bytes=32 time=160ms TTL=55
Reply from 66.94.230.47: bytes=32 time=164ms TTL=55
Reply from 66.94.230.47: bytes=32 time=163ms TTL=55

Ping statistics for 66.94.230.47:
   Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
   Minimum = 160ms, Maximum =  164ms, Average =  162ms

D:\Z>



구효서
김성종 - 후쿠오카 살인
문순태
박상우 - 서머타임 블루스
이문열 - 호모 엑세쿠탄스
이인화 - 여자 비행사 ('청연(靑燕)'이라는 영화로 만들어졌음; 장진영, 김주혁, 후에키 유우코(유민)* 출연)
정을병
하재봉
...

이상과 같은 유명 소설가를 포함하여 100여명 정도의 작가들이 활동하던 소설 전문 사이트였다.

이노블타운의 유료회원은 40%. 즉 회원의 60%는 무료회원이었다는 이야기다. 물론 무료회원 제도가 있었던 것은 아니고 임의로 무료회원 자격을 주었던 듯하다. 정액제로는 1개월 8000원, 3개월 1만6000원이었고, 연재소설의 1회분(200자 원고지 100장 분량)만 다운로드 받으면 700원이었다.

2000년 스티븐 킹(Stephen King)이 인터넷에 소설을 연재하여 잠깐 성공 비슷한 것을 거둔 적이 있었다. 물론 실패로 끝났다. 비록 40만 명 이상이 스티븐 킹의 소설을 다운로드받아갔었지만 대부분 무료 독자들이었다. 한국 문학계에서는 스티븐 킹을 소설가로 인정하지도 않으나, 스티븐 킹의 '성공'에는 모두들 폭발적으로 반응했었다. 그 폭발의 결과로서 이노블타운 등의 eBook(전자책/이북) 소설 사이트들이 생겨났었다.

MP3 같은 인기 컨텐츠도 유료로 전환하면, 서비스를 지속하기 힘들 정도로 사용자가 급감해 버린다. 전자책 사이트의 실패는 이미 예견된 것이었다. 물론 철저한 사전 준비가 있었다면 또 모르겠지만 그렇지도 않았었다.


관련 포스트: [전자책/eBook] 마이크로소프트 리더 / Microsoft Reader





* Fueki Yuko / Yuko Fueki
笛木優子 (ふえきゆうこ)

埼玉県出身
1979年6月21日生まれ
韓国においての芸名はユミン(Yumin)

Friday, March 24, 2006

'구글 애드센스 공식 블로그'와 '애드센스 도움말 그룹' 출범

2007-04-03 업데이트:
한글 공식 애드센스 블로그와 포럼 주소
지금까지는 "Inside AdSense 블로그"가 영문판만 있었는데 이제 한글판이 생겼습니다. 주소는 다음과 같습니다:
< AdSense 공식 한국 블로그 >

그리고 구글 그룹스에도 이제 한국 사용자를 위한 포럼이 생겼습니다:
< AdSense 도움말 포럼 >




이하는 영문판 애드센스 블로그에 대한 소개입니다.


애드센스 공식 블로그: Inside AdSense
피드는: http://adsense.blogspot.com/atom.xml



위의 공식 블로그는 전문 용어 사용이 많아서 읽기가 힘들었다. 아래의 그룹에서 오가는 이야기들은 쉬운 편이었지만, 개설한 지 얼마 되지 않아 아직 내용이 부족했다.

구글 애드센스 도움말 그룹: Google Groups : AdSense Help

이름과 달리 구글 직원이 운영하는 곳은 아니고, 뉴스그룹처럼 사용자들이 서로 정보를 나누는 곳이다.

그룹은 다음 6개 항목으로 나누어져 있다.
AdSense Basics
AdSense Guidelines
Earnings & Payments
Features & Products
Troubleshooting
Miscellaneous

또한 각 항목 별로 다음과 같은 피드가 있다.
Atom 1.0
15 New messages
50 New messages
15 New topics
50 New topics
RSS 2.0
15 New messages
50 New messages
15 New topics
50 New topics

피드가 이렇게 여러 종류로 제공되는데, Atom 1.0 / 50 New topics 가 가장 무난할 듯하다.



▶▶ 구글 애드센스에 대한 자세한 한글 정보: "Google AdSense 지원" 사이트

Thursday, March 23, 2006

[QnA] 혹시 '네이버 블로그'가 구글에서 검색됩니까?

검색되지 않습니다. 기술적으로 불가능한 것은 아니고, 네이버가 구글의 검색 로봇을 막아놓은 탓입니다.

브라우저 주소창에 이렇게 쳐보시면
http://blog.naver.com/robots.txt

다음과 같은 내용이 나옵니다:
User-agent: *
Disallow: /


여기서 "Disallow: /" 라는 것은 검색 엔진의 접근을 불허한다는 뜻입니다. 구글이 그 robots.txt의 "Disallow: /"라는 문자열을 읽고, 네이버 블로그의 검색을 단념하고 돌아가는 것입니다.




자신의 블로그나 사이트가 구글에서 검색되는지 알기 위해서는, 이렇게 자신의 블로그 주소를 직접 확인하거나

Google






또는, 자신이 블로그에 올린 글 중에서, 되도록 1~2개월 이상 지난 글 중에서, 아무 구절이나 골라 쌍따옴표를 붙여서 구글 검색창에 넣어보는 방법이 있습니다:


Google




구글 등의 검색 엔진에서 자신의 블로그가 검색되게 하기 위해서는, "네이버 블로그"가 아닌 서비스를 고르시면 됩니다.






추가 사항:
"다음 블로그(blog.daum.net)"가 예전에는 검색이 되지 않았던 것 같은데 요즘에는 구글에 약간 나오고 있습니다. 그렇지만 검색이 잘 되지는 않고 있습니다. robots.txt로 막아놓지는 않았지만 기술적인 문제로 검색이 되지 않는 듯합니다.


Google


구글에서 site:blog.naver.com 로 검색해보면 현재 약 457,000개의 결과가 나오지만, 각 네이버 블로그의 첫페이지 주소만 나올 뿐, 안의 글자들은 1개도 검색되지 않습니다. 즉 네이버 블로그에 아무리 열심히 글을 올려도 구글에서는 전혀 검색되지 않는 것입니다.






2006-06-22 업데이트
이제 네이버가 사이트를 조금씩 공개하는 것 같습니다. 다행이군요.
이삼구글님 포스트 참조




더 읽기: Web

Wednesday, March 22, 2006

구글 페이지(Google Page)의 짧은 사용 소감

페이지를 만들면 몇 시간 이내에 구글에 인덱스된다(The pages you create can be crawled by Google within a few hours of publication.)고 하는데, 그렇게 빨리 되는지 의문이다. 새로 만든 사이트의 페이지는 아무리 빨라도 1주일 정도는 걸려야 인덱스가 되는 것이 보통이다. 구글이 자기 소유의 서비스라고 해서 특혜를 주는 것일까? 그러면 구글이 악을 행하고 있다는 이야기가 되어 버린다.

물론, 구글 검색 결과에서 특별 대우를 해 주지 않는다고 명시(Web pages created using Google Page Creator will never receive any preferential treatment of any kind in Google search results.)되어 있기는 하다. 그리고 이 페이지를 만든지 이미 몇 시간이 흘렀지만 구글에는 인덱스되고 있지 않다.

도움말을 더 읽어보니 의문이 조금 풀렸다. 내부적으로 구글 사이트맵(Google Sitemaps)을 사용하여 구글에 알리는 모양이다. 이러면 이론적으로 인덱스가 더 빨리 될 것이다.

FTP를 나중에는 지원할 것인가 보다. (Can I use FTP to publish? : No, we don't offer FTP at this time.)


Google Page Creator에 관한 구글그룹의 피드도 있었다.
http://groups.google.com/group/Google-Page-Creator/feed/atom_v1_0_topics.xml?num=50





2006-04-01 업데이트: 2~3일 전부터 필자의 페이지가 인덱스되기 시작했다. 빠르지도 늦지도 않았다. 1주일 정도가 걸린 것 같다.



2006-04-17 업데이트: 위의 피드 주소가 변경되었고, 다음과 같이 여러 개로 나누어졌음:

How to for Beginners
http://groups.google.com/group/GPC-How-to/feed/atom_v1_0_topics.xml?num=50

How to for Advanced Users
http://groups.google.com/group/GPC-How-to-Advanced/feed/atom_v1_0_topics.xml?num=50

Something is Broken
http://groups.google.com/group/GPC-Bugs/feed/atom_v1_0_topics.xml?num=50

Suggestions and Ideas
http://groups.google.com/group/GPC-Suggestions/feed/atom_v1_0_topics.xml?num=50

메인페이지 포스트들을 다시 1주일 분량으로 줄임

구글에서
site:http://mwultong.blogspot.com/
으로 검색해 보니

메인 페이지인
http://mwultong.blogspot.com/
이 검색되지 않고 있어 곤혹스러웠다. 인덱스에서 완전히 사라져 버렸다. 다만 다른 포스트들은 아주 정상이다.


왜 그런가 고민을 하다 보니 이런 생각이 났다:

블로거닷컴에서, 메인페이지에는 기본으로 7일간의 포스트들만 나타난다. (7일이 지난 포스트들은, 기본 페이지에서 지워지고 Archive 페이지에서만 나타난다.) 그런데 내가 몇주 전에 이것을 14일로 늘였었다. 왜냐하면 7일간이 조금 부족하다고 느꼈고 또, 블로그의 구조에 대해 잘 모르는 방문객은, 7일간의 포스트가 블로그에 올려진 글의 전부라고 오인할 수 있기 때문이었다.

아마 이것 때문에, 메인 페이지가 구글에 인덱스되지 않았을지도 모르겠다. 왜냐하면 구글은 중복된 페이지를 싫어하기 때문이다. 완전히 중복된 글이 있을 경우 한쪽은 버리고 한쪽만을 인덱스한다고 알고 있다.

메인 페이지를 14일간 즉 1/2개월 분량으로 만들면, 이번달 Archive 페이지와 상당 부분 중복이 되어 버리고, 그래서 구글이 중복된 페이지를 버리려고 하다가 그만 메인 페이지(http://mwultong.blogspot.com/)를 버리게 된 것이 아닌가 하고 추측된다.

그래서 메인 페이지의 분량을 전과 같이 다시 7일간으로 돌려 놓았다. 이것으로 해결이 되었으면 하는데 잘 될지 모르겠다.


다만, MSN 검색에서는
site:http://mwultong.blogspot.com/
으로 검색해 보아도 이런 문제가 없었다.



2006-04-01 업데이트: 지금으로선 제 추측이 맞은 것 같습니다. 메인 페이지가 잘 인덱스되기 시작했습니다.

구글의 100MB 웹 계정 초대장 받음

오늘 Google Page Creator -- Sign up!이라는 메일이 와서 보니, 한달 전쯤인가 http://pages.google.com/ 여기서 신청한 웹 계정이 오늘 생겼다. 하도 기다려도 오지 않기에 혹시 내가 신청을 하긴 했나 하고 자꾸 돌이켜보곤 했었다.

지메일 패스워드를 넣어주니 웹 계정에 로그인되었다. 약관에 동의하고 페이지 만들기에 들어갔다. 지메일과 비슷한 인터페이스다. 그리고 아직 한글화는 전혀 되어 있지 않았다. 물론 한글로 된 웹 페이지를 만드는 데는 지장이 없었다.

http://mwultong.googlepages.com/
이라는 주소가 자동으로 만들어졌다.

역시 FTP 가 없었다. 그래서 전문적인 홈페이지를 만들기는 곤란해 보였다. 제공하는 스킨들을 보니 블로거닷컴의 그것과 거의 비슷하고 전체적으로 블로그 같은 느낌이 들었다. 그러나 나는 내 나름대로의 디자인을 사용해 보고 싶다.

워드프로세서를 사용하는 기분으로 페이지를 만들 수 있었다. 초보자에게는 편하지만, 텍스트 에디터로 직접 페이지를 만드는 데 익숙한 사람은 좀 쓰기 당혹스러울 듯하다. 아직 서비스가 초창기라서 기능이 별로 없다. 성숙되려면 적어도 1년은 걸려야 할 것이다.


구글에서 site:googlepages.com 로 검색하면 현재 19700개의 페이지가 나온다. "한국어 웹" 옵션으로 검색하니, 며칠 전에는 한글 페이지가 2개밖에 없었는데 오늘은 3개로 늘어나 있었다. 아크몬드님의 페이지(archmond.googlepages.com)였다. 구글 캐시의 날짜가 "2006년 3월 12일"인 것으로 보아 아크몬드님은 꽤 오래 전에 초대장을 신청하신 듯하다.

Tuesday, March 21, 2006

[울트라에디트/울트라에디터] UltraEdit-32 v12.00 가 나왔음

울트라에디트(울트라에디터)는 한국에서 가장 많이 사용하는 텍스트 편집기다. 그래서 일본어판은 아직 없지만 한국어판이 1~2년전에 선보였다. 오늘 보니 중국어 간체 버전도 있었다. 물론 메뉴만 번역되었다뿐이지 한국적인 기능이 있다거나 하는 것은 아니다. 그래서 가급적 영문판을 사용하는 쪽이 무난하다.

윈도 3.1 시절부터 유명한 에디터였지만 한글 편집에 상당한 문제가 있었다. 요즘 최신 버전도 마찬가지다. 내부적으로 유니코드를 사용하는 EmEditor와 달리, 울트라에디트는 아시아 문자를 잘 다루지 못한다. 그리고 울트라에디트 제작사인 IDM Computer Solutions 에는 아시아 쪽 인력이 없는 듯했다.

그러나 편리함과 기능의 다양함에서 울트라에디트는 최고다. Ctrl+H 를 누르면 헥사(hex) 코드까지 편집할 수가 있어 프로그래머/해커들에게는 특히 매력적이다. 인터페이스도 스마트하다.




버전 12의 주요 내용:



Perl Compatible Regular Expressions

Regular Expressions 즉 "정규식"이라는 것은 복잡한 문자열을 찾기/바꾸기 할 때 사용하는 일종의 공식이다. 그런데 이 정규식은 여러가지 종류가 있고 서로 호환이 잘 되지 않아서 불편하다. 울트라에디트 버전12에서는 펄의 정규식을 지원하고 있다. 펄의 정규식이 가장 강력하며 대중적으로도 인기가 높다. 물론 펄이 설치되어 있지 않아도 된다. (참고로 EmEditor도 펄의 정규식을 사용한다.)


Find/Replace Supports Unicode

울트라에디트는 원래 유니코드 지원이 빈약하고 버그도 많다. 심지어 찾기/바꾸기에서도 유니코드 문자열을 잘 입력받지 못했다. 11.10버전에서는 유니코드를 복사해서 찾기 창에 붙여넣으면 아예 붙여넣어지지가 않는다. 그러나 이제는 지원이 조금 강화되는 모양이다. (그러나 유니코드 편집의 최고봉은 역시 EmEditor다. 일본어 중국어 텍스트 편집에는 EmEditor를 사용하는 것이 가장 이상적이다)


Multiple Backup Files/Versions on Save

대부분의 프로그램의 경우, 백업 파일은 단 하나뿐이다. "다중 백업"을 지원하면 버전별로 백업 파일들을 관리할 수 있다. 이것은 설명하기는 조금 복잡한데, 백업 파일이 어떤 역할을 하는지 아는 분은 "다중 백업"의 편리함과 안전함도 알 수 있을 것이다.


그 외

UltraCompare (파일 비교 유틸리티)에 관련된 기능이 향상되었다고 하는데 UltraCompare 는 별도로 판매되는 제품이고 울트라에디트에 내장된 것은 일종의 데모 버전이라서 별 소용이 없을 것이다.

UltraCompare Professional 버전을 사용해 본 적이 있기는 한데 실망스러웠다. 아주 느렸고 거대한 파일은 제대로 부르지도 못했다.


Microsoft에서 무료로 배포하는 "Platform SDK"에 있는 WinDiff.Exe 라는 파일비교 유틸리티가 훨씬 더 편리하고 강력했다.

Platform SDK 를 다운받아서 설치한 후 다음 3개의 파일만 골라내어 아무 디렉토리에나 넣고 사용하면 된다.
GUtils.Dll
WinDiff.Exe
WinDiff.Hlp


※ Platform SDK를 깔면 하드가 지저분해질 것 같아서, 필자의 경우 Vmware 속에다 Platform SDK를 깔았음.




참고
울트라에디트는 베타 테스트가 없고 그냥 대충 출시한 후 버그 보고를 받으면 고치는 식으로 운영된다. 따라서 버전 12.0 에는 많은 버그가 있을 것이므로 버전이 약간 올라간 후에, 가령 버전 12.10쯤 되었을 때 다운로드받아야만 한다.

울트라에디트는 45일간만 무료로 사용할 수 있다. 그 기간이 지나면 전혀 실행이 되지 않는다.


<울트라에디트 다운로드>





2006-06-13 업데이트:
울트라에디트: UltraEdit-32 v12.10a 설치기/사용소감

울트라에디트 UltraEdit-32 v12.00 가 예전에 나왔지만, 그것은 사실상 베타 버전이나 다름없기에 오늘에야 다운을 받았습니다. 12.10a 로 업그레이드되어 있더군요.

울트라에디터를 설치한다는 일이 '약간의 모험'이기도 합니다. 버그 때문에 언인스톨하고 예전 버전을 다시 설치해야 한다든지 하는 일이 많아서 그렇습니다.

이 글을 쓰고 있는 현재, 최신 버전인 v12.10a 를 설치해 보니까. v11.x 과는 여러 곳이 달라졌더군요. 윈도우XP에 최적화되어서 그런지 윈도우2000에서는 Open 대화상자가 좀 부자연스럽게 나왔습니다.

환경 설정을 하기 위해 Advanced/Configuration 을 열었더니, 버전 v11.x에서는 설정창이 어수선하고 불편했는데 이제는 일목요연하게 되었습니다.



더 읽기: 텍스트 에디터

Monday, March 20, 2006

[MIDI] 바흐 '평균율 클라비어 곡집'의 좋은 미디 파일 발견

새벽에 잠을 자고 있는데, "평균율 클라비어 곡집"이 꿈에 나타났다. 바로크 음악 특히 바흐의 음악은 중독성이 있어서 일종의 금단 현상을 보였던 것 같다.

이런저런 이유로 평균율 클라비어 곡집 Das Wohltemperierte Klavier 의 음반도 사지 못했다.

키스 자렛 (Keith Jarrett)이 하프시코드로 연주한 골트베르크 변주곡(The Goldberg Variations/Die Goldberg-Variationen, BWV 988)은 200% 마음에 들었다. 키스 자렛의 연주가 마음에 들었던 것은 키스 자렛의 연주에서 키스 자렛이 느껴지지 않고 재즈도 느껴지지 않고, 순전한 Bach만이 느껴졌기 때문인지도 모르겠다. 물론 이것은 필자가 듣기로 그렇다는 말이고 키스 자렛의 팬들에게는 키스 자렛이 느껴졌을지도 모를 일이다.

그런데 키스 자렛이 평균율도 연주를 했는데 아마존에서 샘플을 들어보니 하프시코드가 아닌 피아노로 되어 있어 실망했다. 취향에 달린 문제이겠지만 바흐의 작품을 피아노로 연주하는 것은 별로 듣기 좋지 않고 따분했다.


미디(MIDI)로 들을 수밖에는 없었다.

CLASSICAL MUSIC ARCHIVES(www.classicalarchives.com)에 오랜만에 가보니 몇년 사이에 유료화되어 있었다. 무료로 이용하기 위해서는 이메일 주소를 등록하고, 하루에 5개만을 다운로드받을 수 있었다.

6번째 파일을 다운받으려니 다음의 메시지:

ACCESS LIMIT
The free daily limit of 5 files/day has been reached.


예전에도 그렇게 느꼈지만 CLASSICAL MUSIC ARCHIVES의 미디가 대체로 마음에 들지 않았다. 질 위주가 아닌 양 위주로 미디 파일들을 올려 놓았다.
단,
Concerto for Two Harpsichords in C- BWV1060, (M.Copia)
Goldberg Variations BWV988 (D.Grossman)
등 좋은 것도 있긴 했다.

아무튼 평균율은 CLASSICAL MUSIC ARCHIVES에서 받지 못했다.





그런데, 도미타 교수의 사이트가 있었다. 이거다 싶었다.
富田庸(Yo Tomita)
Tomita(富田)가 성.

http://www.music.qub.ac.uk/~tomita/midi.html


도미타 교수가 직접 섬세하게 교정하고 보완한 미디 파일을 다운로드받을 수 있었다.
여러가지 파일이 있는데, 페이지 아래쪽의 wtc2midi.zip 을 받으면 될 것이다.


바흐(J. S. Bach): 평균율 클라비어 곡집 2권 BWV 870-893 이 전곡 올려져 있었다.
The Well-Tempered Clavier, Book II
Das Wohltemperierte Klavier, Buch II

다만 1권 미디는 없었다.

악기는 이미 하프시코드로 맞추어져 있고, 커다란 사운트폰트를 메모리에 띄우지 않아도 들을만한 음질이었다. CLASSICAL MUSIC ARCHIVES에서 받은 평균율 미디는 음악성이 없었지만, 도미타 교수가 손본 파일들은 그렇지 않았다. 명연주였다.

지난번에 하드를 날린 후 아직 사운드폰트를 설치하지 못했는데, 하프시코드(Harpsichord)보다, "Music Box", "Vibraphone" 같은 여러가지 재미있는 악기(instrument)로 바꾸어 들어보는 것도 좋을 것이다. ("Music Box"는 오르골이고, "Vibraphone"은 작은 종소리들이 긴 여운을 만들며 "비브라토"로 울려퍼지는 악기)





골드베르크 변주곡 미디 다운받는 방법입니다: ▶▶ 골드베르크 변주곡(골트베르크) MIDI(미디)다운로드; Goldberg Variations, Bach 바흐 BWV 988

블로거(blogger.com)에 GIF/PNG 업로드 불가

2007-11-13 업데이트: 현재 PNG 파일은 잘 업로드가 되고 있습니다. JPG도 원본 화질 그대로 올라갑니다. 다만 애니메이션GIF는 안되는군요.



지난주는 투명GIF가 전혀 올라가지 않고 JPG로 변환되어 버리더니, 이제는 어떤 GIF도 올라가지 않고 있다. PNG도 물론이다. 최대한 최적화된 PNG도 그렇다.

자동으로 JPG로 변환되어 버리는데 아마 파일 용량을 줄여서 트래픽을 감소시키려는 목적인 것 같다. 그런데 아주 작은 PNG도 커다랗고 화질이 나쁜 JPG로 변환시켜 버리는 것이 문제다. 10KB 짜리 PNG를 업로드하면 80KB짜리 JPG로 변해 버린다. 오히려 blogger.com 서버의 부하만 증가되어 버리는 것이다.


조그만 16색 GIF인 test.gif 를 올려보았더니, 다음과 같이 JPG로 올라가 버림. 몇 주전까지만 해도 GIF,PNG가 문제 없이 올라갔었다.


<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2661/3496/1600/test.jpg">
<img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/2661/3496/320/test.jpg" border="0" alt="" /></a>



원래 블로그는 사진을 올리는 곳이라서, GIF와 PNG로 된 스냅샷을 올리기에 적당하지 않은 곳일 수도 있다.

그러나 블로거(blogger.com)의 기술과 인력의 질이, 구글보다 훨씬 떨어지는 것이 사실이다. (※ blogger.com은 구글에 인수되었을 뿐 원래 구글이 만든 것은 아니다.)


구글에서 주는 100메가 용량의 홈페이지 서비스에다가 블로그의 일부를 옮겨볼까 하는 생각까지 하고 있다. 현재 site:googlepages.com 로 검색해 보면 14,800개의 페이지가 나온다. (하루 사이에 페이지가 400개쯤 늘어났다) 그러나 아직 초대장이 오지 않아서 만들 수도 없고...


앞으로는 되도록 스냅샷을 올리지 않고 글만 쓰는 방식으로 블로깅을 해야 할 수도 있다.


이것은 blogger.com 의 상당수 유저들이 겪고 있는 문제였다.

Google Groups : Blogger Help Group에서 gif 로 검색해 보았더니 그런 경우로 어려움을 겪는 경우가 많았고 별다른 해결책도 없었다. 외부 서버에 그림을 올리는 방법밖에는 없었다. ("[사용기/감상기] 무료 이미지 호스팅 tinypic.com / flickr.com" 참조)

랄라라님께서 말씀해 주신 www.bloggerforum.com 에서도 gif 로 검색해 보았더니 "Blogger turning gif into jpg"라는 포스트가 올라와 있었고 역시 해결책은 없었다.


Saturday, March 18, 2006

[사용기/감상기] 무료 이미지 호스팅 tinypic.com / flickr.com

별도의 외부 서버에 무료로 그림을 올릴 때는 tinypic.comflickr.com 이 추천되고 있었다.


tinypic.com 타이니픽



tinypic.com 은 아무런 가입 절차 없이 누구나 무조건 그림을 올린 후, 그것을 자기 블로그나 사이트에서 마음껏 리모트 로딩하여 쓸 수 있었다. 실제로 GIF 하나를 tinypic.com에 업로드하여 사용해 보았는데 아주 잘 작동했다. 그러나 황당할 정도로 너무 간단하고 편리한 서비스여서 오히려 신뢰감이 가지 않았다. 수익 구조라고는 tinypic.com 첫 화면의 애드센스가 전부인 듯했다.

또한 파일 이름이 랜덤한 이름 (예: r2wgt2fqw1.gif) 으로 변환되어 버리는 것이 조금 아쉬웠다. 그리고 잘못 올린 그림도 지울 방법이 없었다.

이 타이니픽은 아주 멋진 서비스였지만 계속 운영될 수 있을지 미지수였다. 사실 이미지 호스팅 서비스들의 수명은 상당히 짧다. 무상함을 느낄 지경이다. 운영 비용은 많이 들지만 수익은 별로 나지 않기 때문이다.

호스팅은 아니고 단순한 사진첩 서비스이긴 했지만 몇 년 전에 www.photopoint.com 이라는 곳이 있었다. 사업을 그만둔다는 메일이 한 장 온 후 몇 달 뒤에 사라져 버렸다.



flickr.com 플리커/플릭커



flickr.com 은 사용해 본 적이 없어서, 사용기가 아닌 감상기라고 해야 할 듯하다. 그림들을 자기 블로그나 홈페이지로 리모트 로딩은 가능했다. 그러나 플리커의 약관에 의하면 그림들을 사이트의 디자인 구성 요소로서 사용할 수 없었다. (다만 타이니픽에는 그런 말이 없었다.)

즉 그림들을 블로그를 꾸미는 데는 사용할 수 없고, 포스트 본문에만 사용할 수 있었다. 포스트 본문에 사용되는 그림 역시, 플리커 홈페이지에 링크되어 있어야 하는 듯했다.

그리고 최근 플리커가 야후에 인수되었다. 다른 기업들의 소기업 인수도 그렇긴 하지만, 야후에 인수된 회사치고 잘 된 경우를 본 적이 없었다. 서비스가 차츰 흐지부지되다가 결국 간신히 명맥만 유지하는 경우가 많았다. 지오시티도 그렇다.





설치형 블로그는 그렇지 않겠지만 가입형 블로그는 깨진 링크들을 한꺼번에 고치는 방법이 없다. 적어도 블로거닷컴에는 없다. 따라서 위의 서비스들을, 블로거닷컴을 위한 이미지 호스팅으로 사용하기에는 애로가 있었다. 만약 위의 서비스 업체들이 망한다면, 자신의 블로그에 있는 수많은 그림들의 주소를 일일이 고쳐야 하기 때문이다.

Friday, March 17, 2006

[기념 포스트] 포스트 100개 올림

작년말 블로깅을 시작한 후 오늘까지 올린 포스트가 (이것 포함해서) 100개가 되었다.

원래는 블로그를 개인적인 낙서판으로 쓰려고 가볍게 시작했지만 의외로 열심히 올리게 되었다.

그렇지만 기분이 우울하다. 블로거(blogger.com)의 숱한 에러들 때문이다.

포스트 200개 기념 포스트에서는 좀 기쁜 마음으로 글을 올릴 수 있게 되었으면 좋겠다.


※ 이 글도 잘 올라갈지 모르겠다.




2006-05-11 1:54오후

드디어 게시물이 200개가 되었습니다. 예전에는 게시물이 100개만 넘어도 많은 줄로 알았는데 지금 보니까 그렇지도 않더군요. 1000개도 별로 많은 것이 아니었습니다. 블로깅을 오래 하신 분들은 만 개가 넘는 경우도 많더군요...

다만 요즘에는 블로그닷컴이 안정적이더군요.


※ 위에서 블로것닷컴이 안정적이라는 말을 했더니, 이 글이 올라가지 않는군요.. 이상한 에러가 발생하고 있습니다..

'블로거(blogger.com) 도움말' 그룹(포럼) 발견!

블로거(blogger.com)의 도움말에 최신 정보들이 없어서 고민하던 끝에 상당히 좋은 곳을 발견했다. 물론 블로거(blogger.com + blogspot.com) 유저가 아닌 분들에게는 도움이 되지 않는 정보다.

help.blogger.com 의 언어를 한글에서 영어로 바꾸었더니, Blogger Help Group이라는 곳이 나와 있었다.

"구글 그룹"이라는 서비스 안에 포럼이 만들어져 있었다. 구글 그룹 중에서도 상당한 큰 편이었다. 다음과 같은 항목들로 나누어져 있었다:


Customizing Templates (템플릿 수정 관련)
Publishing Trouble (포스트 게재시의 문제들)
How Do I? (방법론)
Something Is Broken (각종 트러블에 대한 하소연들)
Share Your Blog (자신의 블로그를 알리는 곳)


좋은 정보들이 많이 있었다.

지금 보니 구글 그룹에도 사이트 피드가 있었다.

Blogger Help Group 은 각 항목별로 피드가 있었고, 전체적인 피드는 없었다. 그래서 다음의 피드들을 한RSS(hanrss.com) 같은 리더에 일일이 추가해야 했다.

http://groups.google.com/group/blogger-help-customizing/feed/atom_v1_0_topics.xml?num=50
http://groups.google.com/group/blogger-help-howdoi/feed/atom_v1_0_topics.xml?num=50
http://groups.google.com/group/blogger-help-publishing/feed/atom_v1_0_topics.xml?num=50
http://groups.google.com/group/blogger-help-troubleshoot/feed/atom_v1_0_topics.xml?num=50



블로거(blogger.com)에 문제가 생기면 상당히 골치가 아팠다. 구글에서 검색을 해보아도, 블로거(blogger.com) 관련 문제에 대한 페이지가 생각보다 그리 많지 않았다. 그러나 앞으로는 여기서 알아보면 될 것 같다.


Atom 1.0

15 New messages
50 New messages
15 New topics
50 New topics

RSS 2.0

15 New messages
50 New messages
15 New topics
50 New topics

구글 그룹에서는 피드가 위와 같이 여러가지 포맷으로 제공되는데, messages는 덧글까지 모두 포함한 것이라 너무 분량이 많아서, topics 쪽이 읽기에 적당했다. (구글 그룹이라는 것은 일종의 뉴스그룹인데 뉴스그룹의 특성상, 원문보다 덧글의 분량이 몇 배 더 많다.)




그리고
"Google 한국 그룹"
http://groups.google.co.kr/group/Google-Korea-Group/feed/rss_v2_0_msgs.xml

Blogger Buzz (blogger.com 직원들의 블로그인 듯)
http://feeds.feedburner.com/BloggerBuzz

Blogger Status (blogger.com의 시스템 정비에 대한 공지)
http://status.blogger.com/atom.xml

의 피드도 추가했다.



추가 사항:
방금 템플릿을 수정하고 재게시하려 했는데 다음과 같은 에러가 나고 있음. 한두 번도 아니고...


오류가 발생했습니다. (세부 사항 숨기기 ...)
001 java.io.IOException: EOF while reading from control connection



위에서 말한 구글 그룹의 "블로거(blogger.com) 포럼"에 보니, 이 자바 에러에 대한 문제 제기가 지금 많이 올라오고 있다.



2006-03-17 2:34오후 추가 사항:

이 포스트를 올리려고 하니 다음과 같은 에러가 나서 못 올림.



오류가 발생했습니다. (세부 사항 숨기기 ...)
550 Could not open: No such file or directory
blog/0/31/2/mwultong/archives/
2006_03_01_archive.html



archive 파일을 찾을 수 없다니, 다 날아가 버린 건 아닌가 싶어, 블로그를 살펴 보니 블로그만은 정상.

Thursday, March 16, 2006

구글 뉴스에서, 특정 검색어의 기사만을 RSS/Atom 피드로 뽑아내자

구글 뉴스(Google News)의 사이트 피드를 살피다가 보니, 순서대로 나오는 뉴스 목록만이 아니라, 검색 결과까지도 피드로 추출할 수가 있었다.

예를 들어, 기사들 중에서 소설 등의 특정 분야에만 관심이 있는 경우, 그 뉴스만을 RSS/Atom리더로 따로 구독할 수 있었다.

(소설/문학에 관련된 기사만을 읽기 위해 문화면 기사를 모두 구독하는 것은 힘들다. 게다가 구글 뉴스의 문화 섹션은 생활면과 같이 붙어 있어서, "대덕구 효자지구 주거환경개선 사업" 같은, 문화와는 전혀 상관이 없는 기사까지 함께 나온다)


구글 뉴스(news.google.co.kr)의 첫 화면에 있는 검색창에서, 필요한 검색어를 치고 특정 뉴스를 우선 검색한 후에, 화면 좌측 사이드바의 "RSS | Atom" 링크에 보면, 방금 검색한 결과가 피드로 만들어져 있다.

가령, "소설" (따옴표 제외) 로 검색한 후에는
http://news.google.co.kr/news?hl=ko&ned=kr&ie=UTF-8&q=%EC%86%8C%EC%84%A4&output=rss
http://news.google.co.kr/news?hl=ko&ned=kr&ie=UTF-8&q=%EC%86%8C%EC%84%A4&output=atom

이렇게 소설에 관련된 뉴스만으로 된 피드가 생겨 났다.

또한 이 피드는 다른 피드와 마찬가지로 실시간으로 갱신이 된다. 그래서 이 피드를 리더에 넣고 구독하면 소설에 대한 대한 최신 기사를 편리하게 받아볼 수 있다.


"소설 OR 문학" (따옴표 제외) 으로 검색하면, 소설이나 문학에 관련된 최신 뉴스들을 한꺼번에 모을 수 있었다.

다만, "날짜별 순위"로 검색하면 검색 결과가 오히려 부자연스러웠다. 기본값인 "관련별 순위"로 놓아둘 때가 가장 만족스러웠다.





업데이트:
소설 OR 문학으로 검색하면, 인천의 문학야구장까지도 나오기에

소설 OR 문학 -문학구장 -문학야구장
이렇게 마이너스 기호로 제외시켜 주고 검색해야 정확한 결과가 나왔음

Wednesday, March 15, 2006

[MS오피스/MS워드/VBA] 200자 원고지 매수(분량) 계산 매크로

전자문서의 원고지 매수 계산에는 아래아한글(HWP)이 사용된다. MS워드에는 원고지 분량 보기 메뉴가 없다. 무슨 CD 안에 MS워드용 원고지 계산 플러그인(?)이 들어 있다는데 찾지 못했다. 그래서 직접 VBA(Visual Basic for Applications)로 만들어 보았다.

물론 이 매크로에는 오차가 있다. 그러나 아래아한글에서도 버전에 따라 원고지 매수 계산에 상당한 차이가 난다. '한글97' 버전의 계산 결과가 현재 업계의 표준인 듯하다. 그리고 같은 버전의 아래아한글 내부에서도 어떤 방식으로 계산하느냐에 따라 결과에 오차가 있었다. "문서 등록 정보에서 확인하는 원고지 매수"와, "실제 200자 원고지 양식에 글을 채워넣는 방법"으로 계산하는 경우, 조금 또는 상당한 차이가 났다.

즉, 아래아한글2005의 경우
"파일/문서 정보/문서 통계"
"도구/원고지 쓰기/'현재 문서에서 내용을 가져다 채움'에 체크/열기"
의 원고지 매수가 달랐다.


200자 원고지 1장에는 한국어 단어로 약48 단어가 들어 간다. 그래서 단어 개수를 세어 48로 나누어 주면 원고지 매수가 나온다. (소설의 경우이긴 하지만) 상당히 정확하고 아래아한글의 계산 결과와도 거의 차이가 없다. 물론 이것은 필자의 소설로 테스트해 본 결과이고, 편집 스타일, 표와 그림의 유무, 문체, 보조용언을 붙여쓰느냐 띄어쓰느냐 등의 요인에 따라 미묘한 차이가 날 수도 있다. 이때는 나누어주는 숫자를 45~51 정도로 적절히 조절해 가며, 아래아한글의 계산 결과와 대조해 보아야 한다. (정수가 아닌 실수도 가능) 그러나 소설 원고의 경우는 48~47정도면 대체로 적당할 것이다.

필자의 소설의 경우, 각 문단 사이에 한 줄의 빈줄을 넣고 있는데 이때는 48로 나누어 주면 정확했다. 문단을 붙여쓰는 전통적인 편집에서는 47로 나누는 것이 적당한 듯했다.



MS워드에서 원고지 매수 계산을 위한 매크로 만들기


※ 워드2003을 기준으로 설명


(1) MS워드 실행한 후, Alt+F11 키를 누르면 VBA에디터가 나온다. 좌측 상단에 Normal이라는 문자열이 있다. 이 Normal을 클릭하여 선택한 후, 다시 마우스 오른쪽 클릭하여, "삽입/모듈"로 모듈을 하나 만든다. "Module1"이라는 식의 이름으로 만들어진다. "Module1"이라는 문자열을 더블클릭하여 편집창을 연다.

(2)
다음의 코드를 마우스로 모두 선택한 후 Ctrl+C 키로 복사하여, 그 "Module1" 편집창에 Ctrl+V 키로 붙여 넣는다.

Sub ManuscriptPaperCounter()

  Set temp = Dialogs(wdDialogToolsWordCount)
  temp.Execute
  numWords = temp.Words

  MsgBox "단어수: " & numWords & " 개" & vbCrLf & vbCrLf _
     & "원고지: " & Round(numWords / 48, 1) & " 장" & vbCrLf & vbCrLf & vbCrLf _
     & "※ 선택 영역 있을 때는 선택한 부분만 계산함" & vbCrLf & vbCrLf _
     & "※ 워드2003의 경우:" & vbCrLf _
     & "    단어 개수를 확인하면 문서를 고친 것으로 간주되는데" & vbCrLf _
     & "    이때는 문서 전체를 <모두 선택> 한 후에 실행하면 됨" & vbCrLf & vbCrLf _
     & "※ Ctrl+C: 클립보드로 내용 복사", , "원고지 매수 계산"

End Sub


(3) 좌측 하단의 "사전순/항목별..." 이라는 탭이 있는 곳에서 "Module1"이라는 이름을 ManuscriptPaperCounter 등의 이름으로 바꾸어 주는 것이 알기보기 쉽다. (메뉴의 "파일/파일 내보내기"로 위의 코드를 "ManuscriptPaperCounter.bas" 등의 별도 파일로 저장해 놓을 수도 있다.)

(4) Ctrl+S 를 눌러, "기본 서식 파일"인 Normal.dot 에, 방금 만든 이 매크로를 저장한다. (버전과 OS에 따라 다르겠지만, Normal.dot 은 "C:\Documents and Settings\<로그인 ID>\Application Data\Microsoft\Templates"에 위치. Normal.dot도 백업해 두는 것이 좋다.)

(5) VBA편집기를 닫고, 문서 편집창에서 Alt+F8를 누르면 다음과 같은 화면이 나온다.


원고지 매수(분량) 계산 매크로 실행

실행 버튼을 누르거나 엔터키를 치면 매크로가 실행된다.



원고지 매수(분량) 계산

(6) 원고지 매수가 나왔다. (Ctrl+C를 누르면 창의 내용이 복사가 된다고 씌어 있는데 비단 이 창만이 아니라 다른 대부분의 메시지 박스에서도 Ctrl+C 키를 누르면 메시지의 내용이 클립보드로 즉 컴퓨터의 메모리로 복사된다. 이것을 메모장 등에서 Ctrl+V로 붙이면 된다.)


필자가 알기로, 원고지라는 것은 일본어를 쓰기 위해 일본인들이 만든 것이다. 띄어쓰기를 하는 한국어에서는 원고지가 그리 적합하지 않다는 생각이다. 서구의 경우처럼 원고 분량을 단어의 개수로 표현했으면 한다.





▶▶ 200자 원고지 서식, 양식; 아래아 한글 HWP 에서 사용하기

▶▶ 지금까지의 게시물을 원고지 분량으로 환산하면 약 1400매

단어 수, 200자 원고지 장수, 줄 수 계산기: ▶▶ 단어수 세기, 200자 원고지 매수 계산, 줄수 행 개수; Word Counter

Tuesday, March 14, 2006

[컴퓨터 초보자를 위한 강좌] 패스(Path)란 무엇인가

마우스로 아이콘을 클릭하는, 그래픽 유저 인터페이스 (Graphical User Interface; GUI) 환경에서는 패스 개념이 희박하지만, 명령줄 실행 환경(Command Line Interface; CLI)에서는 패스가 필요하다.

가령 명령 프롬프트에서, Foo.exe라는 파일을 실행시키기 위해 foo 라는 명령을 주어도, Foo.exe 가 현재 디렉토리(폴더)에 없고 다른 폴더에 있다면, 컴퓨터는 Foo.exe를 실행시킬 수 없다. 만약 컴퓨터가 모든 폴더들을 다 뒤져본다면 되겠지만 수천 개나 되는 폴더를 다 뒤져 보려면 시간이 오래 걸리기 때문에 아예 찾기를 포기하는 것이다. (또한, 같은 이름을 가진 다른 파일이 잘못 실행되는 위험을 방지하기 위한 목적도 있기는 하다)

그러면 중요한 특정 디렉토리 몇 개만 간단히 뒤져보라고 지정해 주면 될 것 아닌가. 그렇다. 그렇게 지정해 주는 것이 바로 패스다. 패스는 파일이 아닌, '환경 변수 (environment variable)'라는 메모리에 저장된다.

윈도를 설치하면 이미 패스 몇 개가 지정되어 있다. 주로 윈도 시스템 폴더들이다. 여기에 사용자가 직접 자신이 필요한 폴더를 추가해 주어야 한다.

만약 배치 파일이나 펄 스크립트를 하나 만들었다면 그것을, 패스가 걸린 폴더에 넣어 두어야 한다. 그렇지 않으면 그 파일을 다른 폴더에서 실행시키기 힘들다. 그 파일의 모든 경로를 일일히 타이핑해 주지 않으면 아예 실행되지 않는다. (물론 그 파일의 '바로 가기 아이콘'을 만들어 데스크탑에 놓아두면 되겠지만, 이러면 실행할 때 옵션을 바꾸기 힘들다.)



Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

D:\Z>dir
D 드라이브의 볼륨: Foo
볼륨 일련 번호: 3451-A472

D:\Z 디렉터리

2006-03-11  03:09p      <DIR>          .
2006-03-11  03:09p      <DIR>          ..
2006-03-11  03:08p              11,528 새 텍스트 문서.txt
2006-03-11  02:17p              27,136 참고 사이트.doc
              2개 파일          38,664 바이트
              2 디렉터리  43,660,181,504 바이트 남음

D:\Z>

"윈도 시작 버튼/프로그램/보조 프로그램/명령 프롬프트"에서 dir 등의 시스템 내장 명령을 사용하면 위와 같은 화면이 나온다.





D:\Z>foo
'foo'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

D:\Z>

컴퓨터에 foo.exe 나 foo.bat 이 있다고 가정할 때, foo 라고 치면 그것이 실행된다. (foo.exe에 우선권이 있다) 그러나 foo.exe 나 foo.bat이 현재 디렉토리(폴더)가 아닌 다른 디렉토리에 있다면, 실행되지 않고 위의 화면처럼 에러 메시지가 나온다.

다른 폴더에 있는 파일을 현재 폴더에서 실행시키기 위해서는 그 파일의 전체 경로를 적어 주거나(예: D:\Bar\Foo.exe), 그 파일이 있는 폴더를 패스(Path)에 추가해야 한다.


명령 프롬프트에서 set 명령을 실행시키면 현재 Path 로 지정되어 있는 폴더들의 목록이 나온다.


D:\Z>set
...<중략>...
Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;D:\WINDOWS_\Path;D:\Perl\bin
...<중략>...


set 명령을 치면 굉장히 많은 문자열들이 쏟아져 나오는데, 다른 것은 볼 필요 없고 "Path=..." 부분만 보면 된다.

Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;D:\WINDOWS_\Path;D:\Perl\bin

이것은 다음의 디렉토리(폴더)들이 패스로 현재 지정되어 있다는 의미이다. 즉 실행 파일을 현재 디렉토리에서 찾다가 없으면 아래의 디렉토리들도 뒤져서 찾아본다는 이야기다.

C:\WINNT\system32
C:\WINNT
C:\WINNT\System32\Wbem
D:\WINDOWS_\Path
D:\Perl\bin


위의 목록에 사용자가 자신의 디렉토리를 추가하기 위해서는 다음의 절차를 따르면 된다:


패스 환경 변수 변경
패스 환경 변수를 바꾸기 위한 절차. 클릭하면 확대

"내 컴퓨터 아이콘/(마우스 오른쪽 클릭) 등록 정보/고급/환경 변수"의 단계로 이 창을 열 수 있다.

좌측 하단의 빨간 화살표가 가리키고 있는 곳에 Path 항목이 있다. 이 Path 항목을 마우스로 클릭하여 선택한 후 (현재 그림에서는 Path가 아닌 PROCESSOR_ARCHITECTURE라는 곳이 선택되어 있다) "편집" 버튼을 누르면 된다. "변수 값"이라는 곳에 디렉토리(경로)들이 나타나는데 이것을 편집해 준다.

가령 패스에 "D:\Bar"라는 폴더를 추가하려면, 좌측 화살표키를 한 번 눌러 선택을 해제한 후, 기존의 패스 끝에, 세미콜론(;)을 하나 찍고 D:\Bar 라고 적어 주면 된다. (기존의 패스를 지우거나, 이렇게 Path=D:\Bar 라고 D:\Bar만을 적으면 절대 안된다.)

예를 들어 윈도2000의 경우 다음과 같다:


추가 전: Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem

추가 후: Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;D:\Bar


세미콜론(;)이다. 그냥 콜론(:)이 아니라는 것에 주의. (아주 초보자를 위해 더 자세히 설명하자면, Shift키를 누른 채, 콜론(:)키를 누르면, 세미콜론(;)이 찍힌다) 좀 확대하자면 이것이다.
;

이것으로 디렉토리들을 연결해 준다.


이런 메뉴로 편집하지 않고 명령 프롬프트에서 set 명령을 이용해 패스를 편집할 수도 있는데, 그러면 편집 결과가 시스템에 저장이 되지 않으므로 주의.



패스의 효과적인 사용

명령줄에서 실행할 파일이 있는 모든 폴더를 이런 식으로 적어주면 패스가 너무 길어져서 곤란하다. 실행할 파일들을 되도록 "한 폴더에 몰아넣고" 그 폴더 하나만 패스에 넣어주는 것이 좋다.

패스의 예에 있는 "D:\WINDOWS_\Path"라는 폴더에 주목해 보자. 이것은 윈도에 기본으로 있는 것이 아니라 필자가 만든 것이다. 배치 파일(.bat)이나, 파일 하나로 실행되는 간단한 실행파일(.exe), 펄 스크립트(.pl) 들을 모두 이 폴더에 넣어놓고 패스를 지정해 주었다.

가령
Rar.exe 같은, 콘솔용 압축 유틸리티나
tee.exe 같은, 유닉스 툴의 Win32 버전 등이 이 폴더에 들어 있다. (물론 윈도에 기본으로 들어 있는 파일은 아니다.)

패스에 넣을 폴더의 이름에, 공백이나 한글이나 특수 문자가 들어가면 문제가 생길 수 있다. 되도록 영문과 숫자 8자 이내로 이름을 정하자.



그러나 하나의 파일로 실행되지 않는 exe파일이나, 폴더를 마음대로 옮길 수 없는 프로그램은, 하나의 폴더에 이렇게 몰아넣을 수 없다.

가량 윈집(WinZip)의 코맨드 라인 버전인 WZUNZIP.EXE는 혼자서 실행되지 않기에 다른 폴더로 옮기기 곤란하다. 그러나 WZUNZIP.EXE를 다른 폴더에서 실행시키기 위해, 윈집 폴더(D:\Program Files\WinZip) 자체를 패스에 추가하는 것은 낭비다. 이때는 WZUNZIP.EXE를 가리키는 배치 파일을 만들어서 그 배치 파일을 "D:\WINDOWS_\Path" 등의 폴더에 넣어 두면 된다. 아래는 그 예이다.

WzUNZIP.bat 의 내용:
@echo off
"D:\Program Files\WinZip\WZUNZIP.EXE" %*


이제 아무 폴더에서나 wzunzip 이라고 치면, 비록 WZUNZIP.EXE 가 아닌 WzUNZIP.bat 이 먼저 실행되긴 하지만, 결과는 동일하다.






여담

명령줄 환경이라는 것은 일명 "도스창"으로 불리는데, 진짜 도스는 아니고 32비트 환경이다. 컴퓨터를 깊이 다루기를 위해서는 이 명령줄 환경에 익숙해질 필요가 있다. 고급 유틸리티들은 그래픽 환경이 아닌, 명령줄 환경으로 제공되는 것이 많다.

가량 자신의 IP주소(IP Address)를 알기 위해서는
ipconfig
명령을 사용한다. (엄밀히 말해서, ipconfig는 명령어가 아니라 ipconfig.exe 라는 프로그램이다.)





명령 프롬프트에서
help
라는 명령을 쳐 보자. 리눅스의 그것에 비할 바는 아니지만, 상당히 많은 명령어들의 리스트가 나온다.


D:\Z>help


특정 명령에 관한 자세한 내용을 보려면, 다음과 같이 입력하십시오: HELP 명령어
ASSOC    파일 확장명 연결을 보여주거나 수정합니다.
AT       명령어와 프로그램의 실행을 스케쥴합니다.
ATTRIB   파일 속성을 표시하거나 바꿉니다.
BREAK    확장된 CTRL+C 검사를 설정하거나 지웁니다.
CACLS    파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.
CALL     한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.
CD       현재 디렉터리 이름을 보여주거나 바꿉니다.
CHCP     활성화된 코드 페이지의 수를 표시하거나 설정합니다.
CHDIR    현재 디렉터리 이름을 보여주거나 바꿉니다.
CHKDSK   디스크를 검사하고 상태 보고서를 표시합니다.
CHKNTFS  부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.
CLS      화면을 지웁니다.
CMD      Windows 2000 명령 인터프리터의 새 인스턴스를 시작합니다.
COLOR    콘솔의 기본색과 배경색을 설정합니다.
COMP     두 개 또는 여러 개의 파일을 비교합니다.
COMPACT  NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.
CONVERT  FAT 볼륨을NTFS로 변환합나다. 현재 드라이브는 변환할 수 없습니다.
COPY     하나 또는 그 이상의 파일을 다른 위치로 복사합니다.
DATE     날짜를 보여주거나 설정합니다.
DEL      하나 또는 그 이상의 파일을 지웁니다.
DIR      디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.
DISKCOMP 두 플로피 디스크의 내용을 비교합니다.
DISKCOPY 플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.
DOSKEY   명령 줄을 편집하고, Windows 2000 명령을 다시 호출하고, 매크로를 만듭니
다.
ECHO     메시지를 보여주거나, 명령어 반향을 켜거나 끕니다.
ENDLOCAL 일괄 파일에서 환경 변경의 지역화를 끝냅니다.
ERASE    하나 또는 그 이상의 파일을 지웁니다.
EXIT     CMD.EXE 프로그램 (명령 인터프리터)를 마칩니다.
FC       두 파일 또는 파일의 집합을 비교하고 둘 사이의 다른 점을 표시합니다.
FIND     파일에서 텍스트 문자열을 찾습니다.
FINDSTR  파일에서 문자열을 찾습니다.
FOR      파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
FORMAT   Windows 2000에서 사용할 디스크를 포맷합니다.
FTYPE    파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.
GOTO     Windows 2000 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진
        줄로 가게 합니다.
GRAFTABL Windows 2000이 그래픽 모드에서 확장 문자 세트를 표시할 수 있게 합니다.
HELP     Windows 2000 명령어에 관한 도움말을 제공합니다.
IF       일괄 프로그램에서 조건 처리를 수행합니다.
LABEL    디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.
MD       디렉터리를 만듭니다.
MKDIR    디렉터리를 만듭니다.
MODE     시스템 장치를 구성합니다.
MORE     출력을 한번에 한 화면씩 표시합니다.
MOVE     하나 또는 그 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.
PATH     실행 파일의 찾기 경로를 보여주거나 설정합니다.
PAUSE    일괄 파일의 처리를 보류하고 메시지를 보여줍니다.
POPD     PUSHD 명령으로 저장된 디렉터리로 바꿉니다.
PRINT    텍스트 파일을 인쇄합니다.
PROMPT   Windows 2000 명령 프롬프트를 바꿉니다.
PUSHD    현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.
RD       디렉터리를 지웁니다.
RECOVER  불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.
REM      일괄 파일 또는 CONFIG.SYS에서 주석을 기록합니다.
REN      파일 이름을 바꿉니다.
RENAME   파일 이름을 바꿉니다.
REPLACE  파일을 대체합니다.
RMDIR    디렉터리를 지웁니다.
SET      Windows 2000 환경 변수를 보여주거나, 설정하거나, 지웁니다.
SETLOCAL 일괄 파일에서 환경 변경의 지역화를 시작합니다.
SHIFT    일괄 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.
SORT     입력을 정렬합니다.
START    지정된 프로그램이나 명령을 별도의 창에서 시작합니다.
SUBST    경로를 드라이브 문자로 지정합니다.
TIME     시스템 시간을 보여주거나 설정합니다.
TITLE    CMD.EXE 세션에 대한 창의 창 제목을 설정합니다.
TREE     드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.
TYPE     텍스트 파일의 내용을 보여줍니다.
VER      Windows 2000 버전을 보여줍니다.
VERIFY   파일이 디스크에 올바로 쓰였는지 검증할지 여부를 지정합니다.
VOL      디스크 볼륨 이름과 일련 번호를 보여줍니다.
XCOPY    파일과 디렉터리 트리를 복사합니다.

D:\Z>




위의 명령어들 중에서 궁금한 것이 있다면, 특정 명령어 뒤에 /? 를 붙이면, 아래와 같이 더 자세한 도움말이 나온다. 윈도XP도 마찬가지다:




D:\Z>DIR /?
디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.

DIR [드라이브:][경로][파일 이름] [/A[[:]특성]] [/B] [/C] [/D] [/L] [/N]
 [/O[[:]정렬 순서]] [/P] [/Q] [/S] [/T[[:]시간 필드]] [/W] [/X] [/4]

 [드라이브:][경로][파일 이름]
             나타낼 드라이브, 디렉터리 및/또는 파일을 지정합니다.

 /A          지정된 특성을 가진 파일을 보여줍니다.
 특성        D  디렉터리                   R  읽기 전용 파일
             H  숨김 파일                  A  기록 파일
             S  시스템 파일                -  부정을 뜻하는 접두사
 /B          최소 형식을 사용합니다 (머리말 정보나 요약 없음).
 /C          파일 크기에 1000단위로 분리 기호를 보여줍니다. 이것은 기본값
             입니다. 분리 기호를 표시하지 않으려면 /-C를 사용하십시오.
 /D          /W와 같으나 세로로 배열하여 보여줍니다.
 /L          소문자를 사용합니다.
 /N          파일 이름이 제일 오른쪽에 오도록 새로운 긴 목록 형식을
             사용합니다.
 /O          파일을 정렬된 순서로 보여줍니다.
 정렬순서    N  이름순(문자 순서)    S  크기순(작은 것 먼저)
             E  확장명순(문자 순서)  D  날짜/시간순(가장 이전 것 먼저)
             G  그룹 디렉터리 먼저         -  순서를 반대로 하는 접두 기호
 /P          정보가 한 화면에 꽉 차면 잠깐 멈춥니다.
 /Q          파일 소유자를 보여 줍니다.
 /S          지정한 디렉터리와 하위 디렉터리를 포함하여 보여줍니다.
 /T          정렬에 사용할 시간 필드를 지정합니다.
 시간필드   C  작성한 시간
             A  마지막 액세스한 시간
             W  마지막 기록한 시간
 /W          이름만 가로로 배열하여 보여줍니다.
 /X          8.3 파일 이름이 아닌 파일에 대한 짧은 이름을 보여줍니다.
             이 형식은 긴 이름 앞에 짧은 이름이 추가된 것으로 /N 형식과
             같습니다. 짧은 이름이 없으면 공백을 보여줍니다.
 /4          4자리수 연도를 표시합니다.

스위치를 DIRCMD 환경 변수로 미리 설정할 수 있습니다. 하이픈(-)을
스위치 앞에 접두 기호로 주면 미리 설정된 스위치에 우선합니다. (예, /-W)


D:\Z>




관련 포스트: [컴퓨터 초보자를 위한 강좌] Z 폴더를 만들자

참고로, "명령 프롬프트" 아이콘의 (마우스 오른쪽 클릭하여) 등록정보에서 "시작 위치"를 "D:\Z" 등으로 변경해 주면 편리하다.



더 읽기: WINDOWS

Monday, March 13, 2006

블로그가 이제 구글에 정상적으로 인덱스되고 있음

오늘 구글(www.google.co.kr) 검색창에서
site:http://mwultong.blogspot.com/
로 검색해 본 결과, 모든 포스트들이 제대로 나왔고, 포스트 내부의 문자열들도 정상적으로 검색되고 있었다.

계속 살펴 보아야겠지만 현재로서는 좋은 상태다.

그동안 구글에서, 오래된 포스트들이 검색되지 않았던 이유는, Archives 링크를 자바스크립트로 만든 것 때문이 사실상 확실하다.

물론 자바스크립트 링크가 작동하지 않는 경우를 대비해, <noscript></noscript> 안에 예비 링크가 적혀 있긴 하지만, 이것은 아무 의미가 없었다.

여러 정황을 종합해 본 바에 의하면, 구글은 <noscript></noscript> 태그 안의 링크를 전혀 읽지 않는다. 왜냐하면 <noscript></noscript> 가 악용되는 경우가 많기 때문이다. 원래 구글 같은 검색 엔진은 자바스크립트를 읽을 수 없기에, <noscript></noscript> 안에 있는 내용을 읽어야만 한다. 그러나 스패머들이 스팸 페이지를 만들 때 방문객의 눈에 보이지 않는 링크를 만들기 위해 <noscript></noscript> 태그를 많이 사용한다. 그래서 구글이 아예 읽지를 않는 것이다. 달리 말하자면, 구글이 그만큼 '엄격한' 검색엔진이라는 말이 된다.

여담이지만, MSN 검색(search.msn.co.kr)은 그런 면에서 좀 느슨했다.


관련 포스트: 블로그가 구글에 잘 인덱스 안되던 이유를 좀 알게 됨

[건강] 담배, 특히 줄담배를 확실히 줄이는 쉬운 방법

니코틴의 유혹이 그리 강렬한 것은 아니다. 담배를 계속 피우게 되는 것은 니코틴 때문이 아니라 단지 습관 때문이다. 만약 손가락 관절을 꺾어서 똑똑 소리를 내는 습관이 한 번 생긴 사람은, 손가락 관절이 유혹을 하는 것이 아닌데도 평생 계속 관절을 꺾어야만 안심이 된다.

담뱃갑을 손이 직접 닿지 않는 곳에 놓아두는 것이다. 몇 걸음을 걸어가야 하는 곳이나, 서랍 속에 넣어 두어도 좋다. 이 방법을 사용하면 즉시, 흡연량을 1/2로 줄일 수 있다.

딱히 흡연 욕구 때문에 담배를 피우는 것은 아니다. 무의식적으로 담배에 손이 가게 되고 무의식으로 담배를 피운다. 담배를 멀리에 놓아둔다면 이 무의식적인 '자동 흡연' 과정을 차단할 수 있다. 귀찮아서라도 담배에 손이 덜 가게 된다. 그리고 무심코 손을 뻗다가도 "어, 담배가 어디 있지? 아차, 줄이기로 했었지" 하고 끊임없이 자각하게 해준다.

이 방법의 좋은 점은, '의지'가 필요 없다는 것이다.

단, 스트레스를 받으면 자신도 모르게 다시 담뱃갑을 자신의 가까이로 당겨오게 되는데 이것을 주의해야 한다.




이쑤시개를 입에 물고 있는 방법도 좋긴 한데, 며칠간 계속 이러고 있으면 입 주위의 근육이 긴장되어서 그런지, 혈압이 높아지는 경향이 있습니다.

Saturday, March 11, 2006

[건강] 치약을 적게 써야 치아가 건강해진다

치약 광고를 보면 칫솔에다 치약을 듬뿍 얹어서 양치질을 하는데, 이런 장면의 영향으로 치약을 지나치게 많이 쓰게 된다. 이러면 양치질이 제대로 되지 않는다. 이럴 바에야 차라리 치약 없이 맹물로 양치질하는 것이 낫다.

우선, 두꺼운 치약 층 때문에 칫솔이 치아에 직접 닿지 않게 된다. 씻겨 나가야 할 음식물 찌꺼기는 오히려 치약 층을 갑옷 삼아 버티게 된다. 양치질이 끝나도, 두꺼운 치약 층이 완전히 씻기지 않아 기분도 개운치 않게 된다.

치약이 치아를 씻어 주는 것은 절대 아니다. 세척의 주체는 어디까지나 물이다. 다만 물은 오염 물질들 특히 기름과 잘 섞이지 않기에, 물이 그런 것과 잘 섞여서 용해시키도록 돕는 것이 치약이다. 이것은 비누도 마찬가지인데 즉 '계면 활성제'인 것이다.

다시 말하자면, 물은 기름과 섞이지 않기에 기름을 씻어낼 수 없다. 만약 물과 기름이 섞이게 할 수 있다면 물이 기름을 씻어낼 수 있다는 이야기다. 물과 기름을 섞이게 하는 것이 계면활성제이다. (물론 치약에는 계면 활성제 외에 연마제 등도 들어 있다. 그런데 계면 활성제든 연마제든 '불소(弗素)'든 좋은 것이 아니다.)

계면활성제라는 것은 최소한의 용량만을 사용해야 효과를 볼 수 있다. 너무 많으면 오히려 물의 세척 작용을 방해한다. 물과 때를 계면활성제가 서로 연결해 주어야 하는데, 물과 계면 활성제만 연결되고, 때는 물과의 연결이 끊어져 세척이 되지 않는 것이다.

치약을 비롯한 모든 세제는 가급적 적은 양을 사용해야 효과를 볼 수 있다. 초밥에 와사비를 묻히듯, 치약을 칫솔에 살짝 묻히는 것이 좋다. 그리고 물과 최대한 골고루 잘 섞이게 해야 한다. 즉, 치약을 되도록 묽게 사용해야 하는 것이다. 그래야 치약과 섞인 물이 비로소 '침투력'을 가지고 치아들의 곳곳에 충분히 스며들게 되는 것이다.

치약으로 '떡칠'을 하게 되면, 물은 침투력을 잃어버린다. 이 상태에서는 아무리 열심히 양치질을 해도 소용이 없다.

또한, 칫솔은 되도록 가볍게 쥐는 것이 좋다. 힘주어 칫솔질을 하면 오히려 잘 닦이지 않는다. 힘을 주면, 칫솔이 잘 닿는 부분에만 과도하게 칫솔질이 되어 치아를 마모시키고, 닿기 힘든 부분은 전혀 닿지 않게 되어 버린다. 이것은 아주 해로운 양치질이다.

칫솔을 가볍게 쥐고 마사지하듯 부드럽게 치아를 닦으면, 칫솔이 치아의 구석구석 골고루 닿게 되어 효과적으로 양치질을 할 수 있다.

양치질을 할 수 없는 경우라면 녹차를 마시는 것이 좋다. 녹차에는 기름기를 씻어주는 강력한 성분이 있다. 녹차를 마시면, 비록 고급 녹차가 아니라도, 혀로 치아를 문지르면 뽀드득 하는 소리가 나게 되고, 기름기가 없어졌다는 사실을 확연히 알 수가 있다. 기름기가 씻겨 나간다면, 기름기 없는 일반 음식찌꺼기는 더 더욱 쉽게 씻기게 된다.

자일리톨 껌에는 충치 예방과 충치의 진행을 정지시키는 확실한 약효가 있기는 하지만, 양치질을 대신하는 것은 조금 무리다. 껌이 치아의 모든 부분에 접촉하는 것은 아니기 때문이다.


그리고 지금은 어떤지 모르겠지만 예전에 진해시와 청주시에서는 충치를 예방한답시고 수돗물에 불소를 넣었다. 수돗물을 틀자마자, 투명한 물이 아닌 허연 물이 쏟아지는데 아마 불소화 때문인 듯했다. 기분이 좋지 않았다. 차라리 충치가 몇 개 있는 게 낫지, 유독 물질을 매일 마셔야 한다니 얼마나 끔찍한가. 충치는 위에서 설명한 바와 같이 양치질을 한 후에 자일리톨 껌을 씹으면 100% 예방된다. 자일리톨 껌은, 산업 폐기물인 불소와 달리, 천연 성분이다.



참고 사이트: 수돗물 불소화 반대 국민연대 (필자는 이 사이트와 관련이 없고 오늘 구글에서 발견했음.)

Friday, March 10, 2006

[Perl/펄] 한글 자소 분리: '똠방각하'를 'ㄸㅗㅁㅂㅏㅇㄱㅏㄱㅎㅏ'로 자동 변환

한국어 용언의 검색은 상당히 까다롭다. 불규칙 활용이 많기 때문만이 아니라, 한글이 알파벳과 달리 음절 단위의 문자이기 때문이다. 즉 풀어쓰기를 하지 않고 모아쓰기를 하기 때문이다.

가령 문서에서 "파랗다"의 모든 활용형들, 즉 "파란", "파라니" 등을 한꺼번에 검색할 수는 없다. 검색을 해야 한다면 자소 분리가 반드시 필요하다. 다시 말해, 풀어쓰기 형태로 만들어서 검색해야 한다. 검색할 문자열과 검색 대상이 될 문자열들을 모두 풀어놓아야 자소 단위로 검색을 할 수가 있다.


파랗다
파란
파라니
파랄
파래


가령, 필자가 알기로 "파랗다"의 어근은 "파ㄹ"이다.(아니면 말고^^;) 검색해야 할 문자열인 이것을 "ㅍㅏㄹ"로 풀어 놓은 후, 검색 대상이 되는 문서도 다음과 같이 풀어쓰기를 한다. 그런 후 "ㅍㅏㄹ"로 검색하면 "파랗다"의 모든 활용형들이 한꺼번에 검색이 된다.


ㅍㅏㄹㅏㅎㄷㅏ
ㅍㅏㄹㅏㄴ
ㅍㅏㄹㅏㄴㅣ
ㅍㅏㄹㅏㄹ
ㅍㅏㄹㅐ


그러면 풀어쓰기는 어떻게 해야 하는 걸까. 사람이 손으로 일일이 할 수는 없는 일이다. 여기서 소개하는 펄 프로그램은 이렇게 한글 풀어쓰기를 만드는 것이다.

이것은, 다른 분들이 만든 C++과 파스칼(델파이)로 된 자소 분리 프로그램을 필자가 펄로 변환한 것이다. 꼭 필요해서가 아니라 호기심으로 한 번 해 보았다. 이런 간단한 프로그램은 C++이나 파스칼보다 펄이 적합할 것이다.

한글 조합형의 경우, 비트 연산으로 자소 분리를 한다. 그러나 현재 윈도OS에서 사용되는 완성형의 경우는 비트 연산이 안되고 자소 분리가 사실상 불가능하다.

그래서 '완성형 한글을 유니코드 한글로 변환하여 자소를 분리'한 후, '다시 완성형 한글로 변환해 출력'하는 것이 이 프로그램의 골자다. 유니코드 한글 역시 완성형이기는 하지만, 글자들이 합리적으로 배열되어 있어, 간단한 계산만으로도 자소를 분리할 수 있다.



다음의 펄 코드를 jaso_bunri.pl 등의 적당한 이름으로 하드에 저장한다. 일부 불필요한 주석들이 붙어 있는데 신경 쓰지 않아도 된다.

#!/usr/bin/perl
########################################################################
# 완성형 한글의 한글 문자열을 초성/중성/종성으로 분리하여 출력
# v1.0a
########################################################################
use strict; use warnings;

# utf8 출력은 use encoding "cp949", STDOUT => "utf8";
# 인코딩을 euc-kr 로 하면 '똠' '힣' 등이 나오지 않음. MS의 euc-kr 은 사실상 cp949임.
# 한글 인코딩은 perlko 라는 펄 문서를 참조.
use encoding "cp949";





# 이것이 프로그램 본체
foreach (<>) {
  utf8::upgrade($_);
  LF2LFCR($_);
  print hangul2jaso($_);
}




sub hangul2jaso { # 유니코드 한글 문자열을 입력 받음
  my ($a, $b, $c); # 자소 버퍼: 초성/중성/종성 순

                 # ㄱ      ㄲ      ㄴ      ㄷ      ㄸ      ㄹ      ㅁ      ㅂ      ㅃ      ㅅ      ㅆ      ㅇ      ㅈ      ㅉ      ㅊ      ㅋ      ㅌ      ㅍ      ㅎ
  my @ChoSung   = (0x3131, 0x3132, 0x3134, 0x3137, 0x3138, 0x3139, 0x3141, 0x3142, 0x3143, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e);
                 # ㅏ      ㅐ      ㅑ      ㅒ      ㅓ      ㅔ      ㅕ      ㅖ      ㅗ      ㅘ      ㅙ      ㅚ      ㅛ      ㅜ      ㅝ      ㅞ      ㅟ      ㅠ      ㅡ      ㅢ      ㅣ
  my @JwungSung = (0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163);
                 #         ㄱ      ㄲ      ㄳ      ㄴ      ㄵ      ㄶ      ㄷ      ㄹ      ㄺ      ㄻ      ㄼ      ㄽ      ㄾ      ㄿ      ㅀ      ㅁ      ㅂ      ㅄ      ㅅ      ㅆ      ㅇ      ㅈ      ㅊ      ㅋ      ㅌ      ㅍ      ㅎ
  my @JongSung  = (0,      0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e);

  my @input_chars = unpack("U*", $_[0]); # 한글 유니코드 문자열을 16진수 배열로
  my $result;

  foreach (@input_chars) {
     # "AC00:가" ~ "D7A3:힣" 에 속한 글자면 분해.
     # regex로는 아스키 문자까지 한글로 오인함. 버그?
     if ($_ >= 0xAC00 && $_ <= 0xD7A3) {

        $c = $_ - 0xAC00;
        $a = $c / (21 * 28);
        $c = $c % (21 * 28);
        $b = $c / 28;
        $c = $c % 28;

        $a = int($a); $b = int($b); $c = int($c);
        $result .= chr($ChoSung[$a]) . chr($JwungSung[$b]);
        $result .= chr($JongSung[$c]) if ($c); # $c가 0이 아니면, 즉 받침이 있으면
     } else {
        $result .= chr($_);
     }
  }
  $result;
}


sub LF2LFCR {
  # 펄은, 파이프로 입력받으면 DOS 텍스트로 출력하고, DOS 파일로 입력받으면 UNIX 텍스트로 출력하는 등
  # 혼란스러운 면이 있는데, 이때 입력과 상관없이 무조건 DOS 텍스트로 출력케 하기 위한 함수
  $_[0] =~ s/\n/\r\n/g if ($_[0] !~ /\r\n/); # 도스 텍스트가 아니면
}



자소 분리할 글(가령 소설 같은 것)을 텍스트 파일로 만들어 0.txt 등의 이름을 붙여 주자. 여기서는, 이상(李箱)의 소설 '날개' 중의 일부를 사용했다:


이 18가구를 대표하는 대문이라는 것이 일각이 져서 외따로 떨어지기는 했으나 있다. 그러나 그것은 한 번도 닫힌 일이 없는 한길이나 마찬가지 대문인 것이다. 온갖 장사아치들은 하루 가운데 어느 시간에라도 이 대문을 통하여 드나들 수가 있는 것이다. 이네들은 문간에서 두부를 사는 것이 아니라 미닫이만 열고 방에서 두부를 사는 것이다. 이렇게 생긴 33번지 대문에 그들 18가구의 문패를 몰아다 붙이는 것은 의미가 없다. 그들은 어느 사이엔가 각 미닫이 위 백인당(百忍堂)이니 길상당(吉祥堂)이니 써붙인 한곁에다 문패를 붙이는 풍속을 가져버렸다.


그런 후 윈도의 명령 프롬프트에서
jaso_bunri.pl 0.txt
라고 치고 엔터키를 누른다. (펄은 컴파일할 필요 없고 그냥 실행시키면 된다. 리눅스/맥 등에서도 별다른 수정없이 이 펄 프로그램이 작동할 것이다)

위의, 이상의 소설 '날개'를 자소 분리한 결과가 아래다:


ㅇㅣ 18ㄱㅏㄱㅜㄹㅡㄹ ㄷㅐㅍㅛㅎㅏㄴㅡㄴ ㄷㅐㅁㅜㄴㅇㅣㄹㅏㄴㅡㄴ ㄱㅓㅅㅇㅣ ㅇㅣㄹㄱㅏㄱㅇㅣ ㅈㅕㅅㅓ ㅇㅚㄸㅏㄹㅗ ㄸㅓㄹㅇㅓㅈㅣㄱㅣㄴㅡㄴ ㅎㅐㅆㅇㅡㄴㅏ ㅇㅣㅆㄷㅏ. ㄱㅡㄹㅓㄴㅏ ㄱㅡㄱㅓㅅㅇㅡㄴ ㅎㅏㄴ ㅂㅓㄴㄷㅗ ㄷㅏㄷㅎㅣㄴ ㅇㅣㄹㅇㅣ ㅇㅓㅄㄴㅡㄴ ㅎㅏㄴㄱㅣㄹㅇㅣㄴㅏ ㅁㅏㅊㅏㄴㄱㅏㅈㅣ ㄷㅐㅁㅜㄴㅇㅣㄴ ㄱㅓㅅㅇㅣㄷㅏ. ㅇㅗㄴㄱㅏㅈ ㅈㅏㅇㅅㅏㅇㅏㅊㅣㄷㅡㄹㅇㅡㄴ ㅎㅏㄹㅜ ㄱㅏㅇㅜㄴㄷㅔ ㅇㅓㄴㅡ ㅅㅣㄱㅏㄴㅇㅔㄹㅏㄷㅗ ㅇㅣ ㄷㅐㅁㅜㄴㅇㅡㄹ ㅌㅗㅇㅎㅏㅇㅕ ㄷㅡㄴㅏㄷㅡㄹ ㅅㅜㄱㅏ ㅇㅣㅆㄴㅡㄴ ㄱㅓㅅㅇㅣㄷㅏ. ㅇㅣㄴㅔㄷㅡㄹㅇㅡㄴ ㅁㅜㄴㄱㅏㄴㅇㅔㅅㅓ ㄷㅜㅂㅜㄹㅡㄹ ㅅㅏㄴㅡㄴ ㄱㅓㅅㅇㅣ ㅇㅏㄴㅣㄹㅏ ㅁㅣㄷㅏㄷㅇㅣㅁㅏㄴ ㅇㅕㄹㄱㅗ ㅂㅏㅇㅇㅔㅅㅓ ㄷㅜㅂㅜㄹㅡㄹ ㅅㅏㄴㅡㄴ ㄱㅓㅅㅇㅣㄷㅏ. ㅇㅣㄹㅓㅎㄱㅔ ㅅㅐㅇㄱㅣㄴ 33ㅂㅓㄴㅈㅣ ㄷㅐㅁㅜㄴㅇㅔ ㄱㅡㄷㅡㄹ 18ㄱㅏㄱㅜㅇㅢ ㅁㅜㄴㅍㅐㄹㅡㄹ ㅁㅗㄹㅇㅏㄷㅏ ㅂㅜㅌㅇㅣㄴㅡㄴ ㄱㅓㅅㅇㅡㄴ ㅇㅢㅁㅣㄱㅏ ㅇㅓㅄㄷㅏ. ㄱㅡㄷㅡㄹㅇㅡㄴ ㅇㅓㄴㅡ ㅅㅏㅇㅣㅇㅔㄴㄱㅏ ㄱㅏㄱ ㅁㅣㄷㅏㄷㅇㅣ ㅇㅟ ㅂㅐㄱㅇㅣㄴㄷㅏㅇ(百忍堂)ㅇㅣㄴㅣ ㄱㅣㄹㅅㅏㅇㄷㅏㅇ(吉祥堂)ㅇㅣㄴㅣ ㅆㅓㅂㅜㅌㅇㅣㄴ ㅎㅏㄴㄱㅕㅌㅇㅔㄷㅏ ㅁㅜㄴㅍㅐㄹㅡㄹ ㅂㅜㅌㅇㅣㄴㅡㄴ ㅍㅜㅇㅅㅗㄱㅇㅡㄹ ㄱㅏㅈㅕㅂㅓㄹㅕㅆㄷㅏ.





아래는 윤동주 시인의 서시를 자소 분리한 것이다:


ㅅㅓㅅㅣ (序詩)


ㅈㅜㄱㄴㅡㄴ ㄴㅏㄹㄲㅏㅈㅣ ㅎㅏㄴㅡㄹㅇㅡㄹ ㅇㅜㄹㅓㄹㅓ

ㅎㅏㄴ ㅈㅓㅁ ㅂㅜㄲㅡㄹㅓㅁ ㅇㅓㅄㄱㅣㄹㅡㄹ,

ㅇㅣㅍㅅㅐㅇㅔ ㅇㅣㄴㅡㄴ ㅂㅏㄹㅏㅁㅇㅔㄷㅗ

ㄴㅏㄴㅡㄴ ㄱㅚㄹㅗㅇㅝㅎㅐㅆㄷㅏ.

ㅂㅕㄹㅇㅡㄹ ㄴㅗㄹㅐㅎㅏㄴㅡㄴ ㅁㅏㅇㅡㅁㅇㅡㄹㅗ

ㅁㅗㄷㅡㄴ ㅈㅜㄱㅇㅓㄱㅏㄴㅡㄴ ㄱㅓㅅㅇㅡㄹ ㅅㅏㄹㅏㅇㅎㅐㅇㅑㅈㅣ

ㄱㅡㄹㅣㄱㅗ ㄴㅏㅎㅏㄴㅌㅔ ㅈㅜㅇㅓㅈㅣㄴ ㄱㅣㄹㅇㅡㄹ ㄱㅓㄹㅇㅓ ㄱㅏㅇㅑㄱㅔㅆㄷㅏ.

ㅇㅗㄴㅡㄹ ㅂㅏㅁㅇㅔㄷㅗ ㅂㅕㄹㅇㅣ ㅂㅏㄹㅏㅁㅇㅔ ㅅㅡㅊㅣㅇㅜㄴㄷㅏ.





분리한 자소를 다시 조합?

자소 분리한 문자열을 다시 원래대로 합쳐주는 함수는 만들지 못했다. 다시 합치기 위해서는 이렇게 한 줄로 쭉 풀어주는 것이 아니라, 자소들을 음절 단위로 배열 속에 보관해 두어야 할 것이다.

CPAN(세계적인 펄 코드 창고)에서 "hangul"로 검색해 보면, 일본인이 만든 한글 처리 모듈이 하나 나온다. (한국의 대학에서는 자신들이 개발한 한글 처리 프로그램을 내부인끼리만 사용하지 외부에 공개하지 않았다. 그래서 한글 처리 프로그램을 만들기 위해 외국인의 도움을 받아야 할 때가 있었다.)

SADAHIRO Tomoyuki > Lingua-KO-Hangul-Util-0.22 > Lingua::KO::Hangul::Util

이 모듈을 사용하면 한글 자소 분리는 물론이고 다시 조합하는 것도 가능할 것이다.



관련 포스트: [Perl/펄] 윈도용 ActivePerl 설치법





추가 사항:
"jaso_bunri.pl 0.txt" 이렇게 하면 콘솔 화면 상으로만 출력된다. 자소 분리된 출력을 파일로 만들기 위해서는 리다이렉션을 사용한다. 즉 아래와 같이 하면 된다.

jaso_bunri.pl 0.txt > tt.txt

이러면 tt.txt (아무 이름이나 상관 없지만 기존의 파일을 덮어쓰게 되므로 유의) 라는 텍스트 파일 안에 출력 결과가 들어 가게 된다.








추가 사항:
만약 그냥 jaso_bunri.pl 이라고 하면 커서만 깜빡이고 아무 반응이 없을 것이다. 그러나 그 상태에서도 펄이 입력을 기다리고 있으므로, 키보드로 직접 한글을 입력하거나, 한글 텍스트를 클립보드로 복사한 후 콘솔창에 대고 마우스 오른쪽 버튼을 클릭하여 붙여 주거나 한 후, Ctrl+Z 키를 눌러 주면, 자소가 분리된다.

Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

D:\Z>jaso_bunri.pl

완성
^Z

ㅇㅘㄴㅅㅓㅇ

D:\Z>



파이프(pipe) 입력도 가능하다. 한글 원화 기호(\) 위에 있는, 즉 '백슬래시 키' 위에 있는 작대기(|)로 파이핑을 할 수 있다.
아래는 dir 명령을 자소 분리한 것. (단, 펄의 파이핑에 조금 문제가 있는데, "perl -S" 이것을 펄 파일 앞에 붙어 주어야 한다.)

dir | perl -S jaso_bunri.pl
이 명령의 결과가 아래의 창:

D ㄷㅡㄹㅏㅇㅣㅂㅡㅇㅢ ㅂㅗㄹㄹㅠㅁ: Foo
ㅂㅗㄹㄹㅠㅁ ㅇㅣㄹㄹㅕㄴ ㅂㅓㄴㅎㅗ: 2873-D621

D:\Z ㄷㅣㄹㅔㄱㅌㅓㄹㅣ

2006-03-10  01:49p      <DIR>          .
2006-03-10  01:49p      <DIR>          ..
              0ㄱㅐ ㅍㅏㅇㅣㄹ               0 ㅂㅏㅇㅣㅌㅡ
              2 ㄷㅣㄹㅔㄱㅌㅓㄹㅣ  44,346,966,016 ㅂㅏㅇㅣㅌㅡ ㄴㅏㅁㅇㅡㅁ



참고로, 위의 dir의 원래 출력은 이것
D:\Z>dir
D 드라이브의 볼륨: Foo
볼륨 일련 번호: 2873-D621

D:\Z 디렉터리

2006-03-10  01:49p      <DIR>          .
2006-03-10  01:49p      <DIR>          ..
              0개 파일               0 바이트
              2 디렉터리  44,346,966,016 바이트 남음

D:\Z>

Thursday, March 09, 2006

블로그 디자인을 결국 잡지 형태로 변경

상단에 배경 그림을 넣어야 할지 끝까지 고민했다. 왜냐하면 페이지 상단에 그래픽이 있으면 시선을 분산시켜서 정작 포스트 내용에 집중할 수 없기 때문이다. 그러나 상단 우측의 빈 공간이 계속 마음에 걸렸다. 디자인의 관점에서 보면, 이곳에 빈 곳이 있어서는 곤란했다. 즉 여백으로서도 작용하지 않는 매우 까다로운 빈 공간인 것이다. 그래서 무채색에 가까운 그림으로 시선의 분산을 방지하는 한편 공간을 메우는 방법을 택했다.

사이드바의 글자들(About Me 등)도 비슷한 문제를 겪었는데, 일반 잡지들에서 흔히 하듯 단어의 첫 글자에만 색을 주는 것으로써 그럭저럭 해결했다.



기술적인 측면들:



블로그 헤더를 수정하는 것에는 기술적인 어려움도 있었다. 블로거닷컴의 템플릿 에디터에서 편집하는 것은 힘들고 시간도 걸렸기에, 파이어폭스로 블로그 페이지의 HTML을 하드에 저장해 놓고, 그 저장해 놓은 HTML을 PC에서 텍스트 에디터로 직접 고치는 방법을 택했다. 그런 후 그 결과를 블로거닷컴의 템플릿에 반영해 주고 블로그를 재게시했다.

헤더의 배경 그림 등의 필요한 그래픽 파일들은, 일반 사진을 블로그에 올리는 방식으로 우선 올려둔 후, 그 주소를 템플릿에 입력하면 된다. 그런데 블로거닷컴에서는, GIF를 잘 올릴 수가 없었다. 애니메이션 GIF는 100%가 JPG로 변환되어 버리는 것은 물론, 면적에 비해 조금이라도 용량이 큰 GIF, 일부 투명 GIF를 올리면 랜덤하게 JPG로 변환되어 버렸다. 그리고 JPG도 고화질 JPG는 저화질 JPG로 자동 변환되어 업로드되었다. 이러한 것의 원칙도 분명치 않아서, GIF/JPG 파일들의 원본이 그대로 업로드될 때도 있었고 안될 때도 있었다. (물론 blogger.com 이 아닌 자기 소유의 서버에 그림이 저장되어 있다면 이런 문제는 생기지 않을 것이다.) 아무튼 blogger.com에 그림 파일들을 올리는 것조차도 상당히 힘이 들었다.




[임시 포토샵 강좌(?)] '웹페이지와 블렌딩되는 배경 그림' 만들기:



헤더의 배경 그림은 현재, 유화붓과 와인잔 사진으로 되어 있고, 좌측의 녹색(#88BB22) 웹페이지의 색과 서서히 섞이게 되어 있다. 원래 이런 식의 배경 그림은 '알파 채널(alpha channel)'을 가진 그림을 사용해야 한다. 즉 단계적인 투명도를 가진 그림을 사용해야 하는데, GIF는 1단계뿐인 단순한 투명도를 가지고 있어 사용할 수 없고, (필자가 알기로) JPG는 투명도를 지원하지 않고, PNG는 알파채널을 지원하지만 정작 웹브라우저에서 PNG의 알파채널을 지원하지 않는다. (다만 IE 7에서는 이것을 지원하는 듯하다)

이런 복잡한 문제가 있었기에 어쩔 수 없이, 좌측의 녹색(#88BB22)과 부드럽게 블렌딩되는 JPG를 만들 수밖에 없었다.

(1) 배경으로 쓸 작은 그림의 좌측 변을, 사각 선택 툴(Rectangle Marquee Tool)로 1~3cm쯤 선택. (이러면 하얀 점선이 사각형으로 움직인다.)

(2) 포토샵(Photoshop) 메뉴: Select/Feather/Feather Radius 를 75픽셀쯤 주어 선택 영역을 부드럽게. (선택 영역이 부드러워진 정도를 육안으로 보기 위해서는, 포토샵 7의 경우, q키를 누른다. q를 한번 더 누르면 원래 상태로 돌아온다.)

(3) 전경색을 #88BB22 로 정확하게 지정

(4) Alt+Delete 키를 7~8회 누름

(5) "Save for Web" 등으로 저장. 되도록 고화질로 저장해야, 그림이 웹페이지와 섞이는 Gradation 이 부드럽게 된다. 단, blogger.com이 자동으로 저화질로 변환하여 업로드할 수 있으므로, 실제로 업로드된 파일이 방금 만든 원본인지 아니면 blogger.com이 손댄 것인지 살펴 봐야 한다.





참고:




이것은 blogger.com 의 "Son of Moto" 템플릿(Template)을 수정한 일부이다.



페이지 상단(헤더)을 수정하는 핵심 클래스들:

#blog-header        {
       color:#FFFFFF;
       margin:0 auto;
       padding:0 0 15px 0;
       background:#88BB22;
       border:0;
       background-image:url(http://적당한 그림 파일 경로);
       background-repeat:no-repeat;
       background-position:bottom right;
       }

#blog-header h1        {
       font-size:24px;
       text-align:left;
       padding:15px 20px 0 20px;
       margin:0;
       }

#header_bottom_border { background:url(http://www.blogblog.com/moto_son/headbotborder.gif) top left repeat-x; }





상단 헤더 부분의 템플릿:

 <div id="blog-header"><span id="top"></span>
 <h1>

   <MainPage>
     <a href="<$BlogURL$>"><span style="color:#FFFFFF;">m</span><span style="color:#DFEBED;">wultong</span> <span style="color:#FFFFFF;">B</span><span style="color:#DFEBED;">log</span> <span style="color:#B3D8BB; font-weight:normal;">―</span> <span style="color:#FFFFCC;">소설</span> <span style="color:#DDFFAA; font-weight:normal;">/</span> <span style="color:#FFFFCC;">IT</span></a>
   </MainPage>

   <ArchivePage>
     <a href="<$BlogURL$>" class="wasabi-hover wasabi-push"><$BlogTitle$> &nbsp; <span style="color:#F4D74F;">◀</span><span style="color:#FDC06D;">◀</span><span style="color:#F9AC3A;">◀</span> <span style="color:#FFFFFF;">Home</span></a>
   </ArchivePage>

   <ItemPage>
     <a href="<$BlogURL$>" class="wasabi-hover wasabi-push"><$BlogTitle$> &nbsp; <span style="color:#00FF00;">◀</span> <span style="color:#FFFFFF;">Home</span></a>
   </ItemPage>

 </h1>
 <p style="font-family:'굴림'; font-size:11pt;"><$BlogDescription$></p>
 </div>
 <div id="header_bottom_border">&nbsp;</div>

Wednesday, March 08, 2006

보청기 등의 기계 장치 없이 '소리'를 크게 듣는 법

산속 멀리에서 아주 희미한 소리가 나긴 나는데, 이를테면 '사람 살려' 같은 소리가 들리는 것 같기도 한데, 잘 알아들을 수 없을 경우, 한밤중에 집안에서 들려오는 부스럭거리는 소리의 정체를 알고 싶을 때, 이 방법을 쓰면 도움이 된다.

귓바퀴의 크기가 크고 단단하고 오목거울처럼 소리를 잘 모아준다면 소리는 훨씬 크게 들린다. 그러나 외계인이 아닌 이상 그런 귀를 가진 사람은 없을 것이다.

보통의 귀를 가진 사람이 청력을 갑자기 높여야 할 때는, 양손바닥을 미키마우스의 귀처럼 귀바퀴의 가장자리에 갖다 대는 것이다.

그런 후 소리가 더 잘 들리도록 손바닥의 각도와 굴곡을 적절히 조정해야 한다.

손바닥을 되도록 오목하게 하는 것이 좋다. 이 방법을 사용하면 사람의 말소리 등을 적어도 2배쯤은 선명하게 들을 수 있다.


☞ 생활

Tuesday, March 07, 2006

[Perl/펄] 윈도우용 액티브펄(ActivePerl) 다운로드 설치법

MS윈도에서, 컴퓨터 언어인 'Perl(펄)'을 사용하기 위해서는 ActivePerl 을 설치하는 것이 좋다. Cygwin 내에 있는 펄도 좋지만, 먼저 Cygwin 이 깔려 있어야 하고, 또한 Cygwin 에 대한 전문 지식이 없다면 사용이 조금 까다로운 편이다. 마이크로소프트에서도 내부적으로 펄을 사용하며 특히 ActivePerl 을 사용하는 것으로 알고 있다. 즉 ActivePerl 은 매우 공신력이 있고 안정적이다.

어떤 펄이나 버전만 같다면 동일하다. 그러나 어디서 배포하느냐에 따라 모듈들의 구성이 달라지는 등 미묘한 차이가 있다. MS윈도 즉 Win32 환경에서는, 복잡하게 생각할 필요 없이 ActivePerl 를 깔면 된다. Win32용 모듈들이 많이 포함되어 있어서 편리하다.

다만, 웹 서버용 스크립트를 만들 때는 ActivePerl 이 적합하지 않은 것으로 알고 있다. 아파치 서버용으로는 mod_perl 이 있고, 일반적으로는 PHP 가 널리 사용된다.

ActivePerl 을 서버용으로 사용할 수도 있겠지만 필자가 아는 한 주요한 용도는, 컴퓨터 내에서 각종 잡다한 업무를 처리하는 데 있다. Perl 은 IT 세계의 Swiss Army Knife (일명 맥가이버 칼)로 불린다.




ActivePerl 은 ActiveState 라는 회사에서 배포한다. 그러나 무료다. 개인이든 회사에서든 무료로 사용할 수 있다. Perl 이라는 것 자체가, 파이어폭스와 같은 오픈소스이니 말이다.




ActivePerl 다운로드:



ActiveState 의 ActivePerl 페이지에서, "Free Download"라고 되어 있는 곳을 클릭하면 다운로드 페이지가 나온다.

(1) 다운로드 페이지에서 이메일 주소 등을 물어 보는데 입력하지 않아도 된다. NEXT 버튼을 누른다.

(2) 버전을 확인하자. 이 글을 쓰고 있는 지금 현재 버전은 5.8.7.815 이다. 그러나 "815콜라"와는 상관이 없다. (밑에 보면 ActivePerl 5.6.1.638 버전도 같이 배포하는데 이걸 받을 필요는 없다. 5.8 버전을 쓸 수 없는 특수한 경우에만 사용하는 것이다.)

(3) Windows 라고 되어 있는 항목에서, "MSI"라는 것을 클릭한다. ("AS package"보다도 "MSI"가 쉽고 편리하다.) 파일 크기는 12.7메가이고, 확장자는 ".msi" 다. 파일명은 버전에 따라 다르겠지만
        ActivePerl-5.8.7.815-MSWin32-x86-211909.msi
이런 식이다.

(4) 다운로드받은 설치 파일을 클릭하면 설치가 시작된다. 여느 프로그램처럼 "I accept the terms in the License Agreement (라이센스에 동의합니다)"를 선택해 주어야 한다.

설치 디렉토리의 기본값은 C:\Perl\ 로 되어 있는데, C드라이드에 OS이외의 프로그램을 까는 것은 별로 좋지 않기에 필자는 D:\Perl\ 로 바꾸었다. D드라이브가 없다면 C:\Perl\ 로 그대로 놓아두자. 그리고 "Program Files" 폴더 밑에 설치하는 것은 좋지 않다. 유닉스에는 파일/폴더명에 공백이 없기에 나중에 문제가 생길 수 있다. (다른 언어도 마찬가지지만 특히 펄은 유닉스용으로 개발된 언어다. 유닉스의 일부나 마찬가지다.)

(5) 버전에 따라 안 나올 수도 있지만 만약, "POD를 HTML로 컴파일" 이라는 옵션이 있다면 (영문 문구는 잘 기억나지 않음) 그렇게 하도록 해야 한다. POD 포맷으로 된 펄 매뉴얼들을 HTML 로 보기 좋게 변환해 주는 것이다. 현재 5.8.7 버전은 기본으로 변환되어 있었다.




펄의 폴더들:



D드라이브에 설치한 경우를 예로 들어서 설명:

D:\Perl\bin : 이곳이 펄의 실행 파일과 각종 스크립트들이 있는 곳. 확장자가 없는 것이 펄 스크립트인데, 유닉스와 달리 윈도에서는 확장자가 없는 파일은 실행이 불가능하므로, 실행 가능하도록 변환시켜 놓은 것이 bat 파일들이다. 이것을 무작정 실행시켜 보지 말고 메모장 등으로 열어서 내용을 살펴 보아야 한다. (GUI가 없는 텍스트 기반의 콘솔 프로그램들은, 탐색기에서 마우스로 클릭해 실행시키면 안된다. 반드시 명령 프롬프트에서 실행해야 한다.)

D:\Perl\html : 펄 매뉴얼들이 있는 곳. 여기서 직접 보는 것보다, "윈도 시작 메뉴:/프로그램/ActivePerl 5.8.7 Build 815/Documentation" 아이콘을 실행시키면 브라우저에 보기 좋게 매뉴얼이 뜬다. 대단히 많은 분량이다. 그리고 일반 상용 프로그램의 매끄러운 그것과는 달리, 다소 읽기 까다로운 문체의 영어로 되어 있다. 전문 글쟁이들이 쉽게 다듬은 매뉴얼이 아니라 실무자/해커들이 필요에 의해서 쓴 것이기 때문이다. (여기서 말하는 해커란 나쁜 의미에서가 아닌 긍정적인 의미에서의 해커다.) 따라서 이것을 펄의 입문서로 삼는 것은 곤란하다. O'Reilly 출판사의 "Learning Perl" (일명 라마북 The Llama Book. '라마'라는 동물이 그려져 있기에.)이 가장 좋은 입문서다. O'Reilly 출판사의 펄 서적들은 전세계 펄 프로그래머들에게 있어 '성경'이나 마찬가지다. (O'Reilly출판사나 아마존에서 원서를 구입하거나 그럴 여력이 없는 분은 당나귀에서 적당히 해결하면 된다. ㅎㅎ 요즘에는 당나귀에 각종 IT서적이 pdf나 chm 포맷으로 많이 올라온다.ㅎㅎ)





설치한 펄을 이제 실행시켜 보자:



펄에는 그래픽 유저 인터페이스가 없다. 즉 윈도 창이 나오지 않는다. 코맨드 라인 상에서만 작동한다. 쉽게 말해서, 글자들로만 이루어진 프로그램이다.

유닉스/리눅스용 툴의 대부분은 이렇게 텍스트 모드로 작동한다. 그리고 윈도용 프로그램 역시도 일부 툴은 이렇게 되어 있다. (윈도에서는 "Win32 콘솔 프로그램(Win32 Console Application)"으로 불린다. 16비트인 도스용 텍스트 프로그램과 모양새는 똑같지만, 어디까지나 32비트 프로그램이다.)

윈도 시작/프로그램/보조 프로그램/명령 프롬프트를 선택하면 검은 색의 창이 하나 열리는데, 여기서

        perl --help

라고 입력하고 Enter키를 누르면 펄의 도움말 화면이 나온다. 한글화는 전혀 되어 있지 않지만 한글 입출력에 문제가 없다.

만약 그냥 perl 이라고 입력한다면 화면에 아무것도 나오지 않는다. 커서만 깜빡거릴 것이다. 이것은 정상적인 상태인데, 펄이 입력을 기다리고 있는 것이다. 이때 Ctrl+Z 를 치면 빠져 나올 수 있다.





ActivePerl: 윈도우용 액티브 펄의 도움말 화면

펄의 실체(?)

아주 어렵게 보이는 이야기들이 많이 적혀 있지만 이걸 이해할 필요는 거의 없으니 부담 갖지 말자.



현재 폴더가 C:\Documents and Settings\Administrator>인데, 이곳은 어떤 작업을 하기에 적당한 곳이 아니므로 임시 폴더로 가야 한다. 가령 D:\Z 라는 곳으로 가기 위해서는

d:
cd z

하는 명령어를 사용해 이동한다. ([컴퓨터 초보자를 위한 강좌] Z 폴더를 만들자 참조)




최초의 프로그램을 실행해 보자



설치가 잘되었는지 알기 위해, 다음의 빨간 코드 3줄을 "0.pl" 등의 적당한 이름을 붙여 텍스트 파일로 만든다. 유닉스용 펄 스크립트에는 일반적으로 확장자가 없지만, 윈도에서는 ".pl"이라는 확장자를 반드시 붙여야만 한다. 특별한 경우가 아니라면, "PL"을 소문자로 적는다. ("test.pl"이라는 식의 이름은 테스트용 파일로서 좋지가 않다. 유닉스에는 test라는 이름의 프로그램이 이미 있기 때문)


print "하하하하\n";
print 1 + 1, "\n";
print "Hello World\n";



D:\Z> 이런 명령 프롬프트에서 0.pl 이라고 입력한 후 엔터키만 치면 실행된다.

0.pl
또는
perl 0.pl
이라고 입력한다.



명령 프롬프트의 화면에

D:\Z>0.pl
하하하하
2
Hello World


라는 세 줄의 문자열이 나오면 성공. 다만 위의 코드에서 따옴표를 생략하면 에러가 나고, "\n" 를 생략하면 행갈이가 되지 않고 한 줄로 붙어 나온다. 그리고 코드 행의 끝에는 반드시 세미콜론(;)이 있어야만 한다.





사용자 라이브러리 폴더를, 환경 변수에 추가하자



펄의 모듈들은 다음의 폴더(디렉토리)에 있다. (D드라이브에 설치한 경우다)

        기본 라이브러리: D:\Perl\lib
        제3자(ActiveState 등)가 추가한 라이브러리: D:\Perl\site\lib

그런데 사용자 자신이 추가한 모듈들을 위의 폴더에 보관하는 것은 좋지 않다. 자신이 추가한 모듈이 다른 모듈들과 섞여 잘 알 수 없는 데다, 백업할 때 불편하기 때문.

자기 전용 라이브러리 폴더를 만든 후 펄에게 알려주는 것이 좋다.

필자의 경우, "D:\WINDOWS_\Programs\perl_\site\lib" 이라는 폴더를 만들었다. (WINDOWS_ 는 윈도 폴더가 아니라 윈도에 관련된 이런저런 파일들을 보관하는 곳.) 꼭 이런 이름으로 만들 필요는 없고, \site\lib 로 끝나는 아무 이름이면 적당하다. \site\lib 로 끝나지 않아도 상관은 없다. 다만 폴더 이름에 영문이 아닌, 한글이 들어가거나 공백이 들어가면 펄이 오작동할 수 있다.

아무튼 위와 같은 이름으로 하드 디스크에 폴더를 만든 후, 펄에게 그 사실을, 즉 사용자 라이브러리 폴더를 만들었다는 사실을 알려주어야 한다. 펄이, 로빈 윌리엄스의 "바이센테니얼 맨 (Bicentennial Man)"처럼 저절로 알 수는 없는 일이다. OS의 "환경 변수 (environment variable)"라는 곳에 사람이 손수 지정해 주어야만 펄이 비로소 그 사실을 알게 된다.


윈도2000/XP의 경우는 이렇게 조정하면 된다:

내 컴퓨터 아이콘/(오른쪽 클릭으로) 등록 정보/고급/환경 변수/시스템 변수/새로 만들기에서, "변수 이름"을 "PERLLIB"로 "변수 값"을 "D:\WINDOWS_\Programs\perl_\site\lib" 로 (따옴표 제외하고) 입력한다.


그런 후, 명령 프롬프트에서 set 이라는 명령을 실행시키면

D:\Z>set
...<생략>...
PERLLIB=D:\WINDOWS_\Programs\perl_\site\lib
...<생략>...

이라는 것이 나와야 한다.


위의 방법을 거치지 않고 명령 프롬프트 상에서 단순히
set PERLLIB=D:\WINDOWS_\Programs\perl_\site\lib
이런 식으로 하면 설정이 OS에 저장되지 않으므로 주의.

윈도98의 경우에는 C:\ 의 AUTOEXEC.BAT 에
set PERLLIB=D:\WINDOWS_\Programs\perl_\site\lib
이런 문자열을 넣어주어야 할 것이다.




가령 Foo.pm 이라는 모듈을 자신이 만들었거나 다운로드받았다면 D:\WINDOWS_\Programs\perl_\site\lib 폴더에 넣어두면 된다. 그리고 하드를 백업할 때는 펄 폴더를 모두 백업할 필요 없이, 이 D:\WINDOWS_\Programs\perl_\site\lib 폴더와 그 아래만 백업하면 된다.

모듈에 따라서는 ...\site\lib 여기 아래에 서브 폴더를 만들어야 할 경우도 있다.


관련 포스트: [Perl] 특정 펄 모듈이 이미 설치되어 있는지 확인하는 배치 파일

추천 사이트: 펄마니아






참고로, 펄은 펄 공동체에서 자원봉사자들이 개발하는 것이다. 소스만 배포하고 실행 파일은 배포하지 않기에, 사용자가 직접 소스를 자신의 OS에 맞게 컴파일을 하고 또한 자신의 OS에 필요한 모듈들을 추가하여 사용하는 것인데, 이것은 개인이 하기에는 대단히 어려운 작업이므로 ActiveState 라는 회사에서 이 작업을 대신 해주는 것이다. ActiveState는 그대신 펄/파이썬과 관련된 툴을 판매하여 회사를 운영한다.





☞ Perl(펄)


<< Home

Categories
Some Recent Posts
Monthly Archives
Top