FAQ O Matic 설치 이후...

김민수의 이미지

참 해묵은 프로그램이지요.

예전에 설치했다가 다시 깔 일이 있어서 깔았는데, 눈에 가시같은 것이 하나 있네요.

저는 저만 문제가 있는 줄 알았는데, KFUG kr-FAQ(http://www.kr.freebsd.org/fom-serve/cache/1.html)도 동일한 문제가 있는 것 같아 최소한 제가 잘못한(?) 것은 아닌 것 같아 이곳에 질문을 합니다.

현상: http://www.jikji.org/faq/cache/1.html 에 가셔서 [Show Expert Edit Commands] 를 누르면 한글이 깨져 나옴. 클라이언트(저는 IE6.0)에 따라 다른지는 아직 모르겠습니다.

이해 불능:
html 소스 보기를 하면, [윽... 거기에 있는 <!-- 다만, 문서의 내용을 바꾸거나 새로운 내용을 더하는 것은 금지합니다. --> 내용은 더 이상 참이 아닙니다. 예전에 제가 copyweb 개념을 생각할 때고, 지금 저는 좀 다른 생각 중..] charset=euc-kr로 정의가 되어 있으므로 한글이 깨져 나올 이유가 없어 보입니다.

해결노력:
제 기억에 예전에 apache2.x 를 설치했을 때 이런 문제가 없었습니다. 지금은 apache13을 사용하므로, 혹시나 해서 AddDefaultCharset을 euc-kr로 추가해 봤는데, 별 효과 없습니다.

http://sourceforge.net/tracker/index.php?func=detail&aid=659616&group_id=10674&atid=310674 내용츨 참조해서, multibyte patch를 해보았는데, 이것도 아닌 것 같습니다.

혹시나 왜 그런지 이유라도 좀 알려주시면 감사하겠습니다.

cjh의 이미지

perl로 된 CGI 에서는 보통 발생하는 현상입니다.

1. perl에 들어있는 CGI.pm의 최신 버전을 CPAN에서 받아 설치합니다.
특히 perl 5.000x는 반드시 업그레이드해야 합니다.
2. 스크립트에서 CGI 객체의 header함수를 부르는 부분을 찾아 다음과 같이
고칩니다.

my $q = new CGI;
print $q->header();

-->

my $q = new CGI;
print $q->header(-charset=>"euc-kr");

--
익스펙토 페트로눔

김민수의 이미지

두 가지가 내용이 섞여 있어서 나누어서 여쭈어 봅니다.

cjh wrote:

1. perl에 들어있는 CGI.pm의 최신 버전을 CPAN에서 받아 설치합니다.
특히 perl 5.000x는 반드시 업그레이드해야 합니다.

use.perl port(perl 5.8.0, use.perl system하면 5.00503) 한 후에 FAQ O Matic 설치를 했었습니다. 말씀하신 내용은 일반적인 내용으로, perl 5.000x 이전 판을 사용한다면 2번 항목의 선행 조건으로 CGI.pm을 최신 판으로 올려야 하는 것으로 이해하면 되나요?

cjh wrote:

2. 스크립트에서 CGI 객체의 header함수를 부르는 부분을 찾아 다음과 같이
고칩니다.

my $q = new CGI;
print $q->header();

-->
my $q = new CGI;
print $q->header(-charset=>"euc-kr");

이 부분을 몇 개 찾아보았는데요, 동일한 code는 없고 해서 :? , 단순히 Appearance.pm의 cPageHeader에 말씀하신 code를 넣었습니다.
http://www.jikji.org/cgi-bin/fom.cgi?editCmds=compact&file=1 보니까, 한글은 제대로 나오는데, 제일 위에
Server: Apache/1.3.27 (Unix) PHP/4.3.0 Date: Mon, 17 Feb 2003 04:18:39 GMT Content-Type: text/html; charset=ISO-8859-1
라는 글이 표시가 되네요... 이 놈 때문이었다는 것은 확실하네요 :)

sub cPageHeader {
	my $q=new CGI;
	print $q->header(-charset=>"euc-kr");
	my $params = shift || {};
	my $showLinks = shift || [];
	my $suppressType = shift || '';

	# this is a func because FAQ::OMatic::fomTitle() isn't well-defined at
	# global initialization time.
	my $type = ($suppressType) ? '' : "Content-type: text/html\n\n";

	# THANKS: to Billy Naylor for requesting the ability to insert
	# THANKS: a corporate logo into every page's HTML.
	if (FAQ::OMatic::getParam($params, 'render') ne 'text') {
		my $pageHeader = $FAQ::OMatic::Config::pageHeader || '';
		my $page = '';
... 생략...

cPageHeader를 부르기 전에 호출된 header가 문제일 것 같은데, 제 힘으로 못찾겠습니다... :cry:

모든 .pm에 관련된 것이 아니라 공통적인 한 두 개의 .pm문서라는 가정하에 다른 것을 좀 들여다 봤는데,
OMatic.pm

sub stripnph {
	my $hdr = shift;

	# strip off the HTTP/1.0 header line, because we're not
	# really an nph script
	$hdr =~ s#^HTTP/[^\n]*\n##s;
	return $hdr;
}

sub header {
	my $cgi = shift;
	my $hdr = stripnph($cgi->header(@_, '-nph'=>1));
	return $hdr;
}


이 내용이 좀 비슷할까요? 이게 맞다고 해도 어떻게 수정해야 할지 저는 난감..

일감은 준호님 말씀하신 것 같은 "단 한 줄의 문제"일 것 같은데, 그 한 줄을 저는 쉽게 못찾겠습니다. 한번 더 가르침을 주시면 좋겠습니다~

그럼 이만.

인류와 지구를 살리는 길은 소비를 의식적이고 자발적으로 줄이는 것, 바로 거기에 있다.
=========================
우리가 정말 정보의 바다에 살고 있을까?

cjh의 이미지

Quote:
두 가지가 내용이 섞여 있어서 나누어서 여쭈어 봅니다.
use.perl port(perl 5.8.0, use.perl system하면 5.00503) 한 후에 FAQ O Matic 설치를 했었습니다. 말씀하신 내용은 일반적인 내용으로, perl 5.000x 이전 판을 사용한다면 2번 항목의 선행 조건으로 CGI.pm을 최신 판으로 올려야 하는 것으로 이해하면 되나요?

네. perl에는 CGI.pm이 들어있는데, 5.000x버전의 CGI.pm은 header함수에서 -charset을 줄 수 없습니다. 5.8이면 괜찮습니다. 근데 use.perl명령이라니 FreeBSD군요.

sub cPageHeader {
	my $q=new CGI;
	print $q->header(-charset=>"euc-kr");
	my $params = shift || {};
	my $showLinks = shift || [];
	my $suppressType = shift || '';

이 부분은 위의 내용으로 충분할 것 같습니다.

sub header {
	my $cgi = shift;
	my $hdr = stripnph($cgi->header(@_, '-nph'=>1));
	return $hdr;
}

이렇게 고치면 될 것 같네요.

sub header {
	my $cgi = shift;
	my $hdr = stripnph($cgi->header(@_, '-nph'=>1, '-charset'=>"euc-kr"));
	return $hdr;
}

--
익스펙토 페트로눔

김민수의 이미지

감사합니다.

사용하는 OS가 FreeBSD가 맞습니다. :)

그리고, cPageHeader를 수정했을 때에는
"Server: Apache/1.3.27 (Unix) PHP/4.3.0 Date: Mon, 17 Feb 2003 04:18:39 GMT Content-Type: text/html; charset=ISO-8859-1"
라는 메시지가 확실하게 화면 제일 위에 표시가 되었습니다.

CGI.pm에서 ISO-8859-1을 EUC-KR로 수정해서 그 내용이 표시가 안되게 했었는데,

    
# set charset to the safe ISO-8859-1
$self->charset('ISO-8859-1');

준호님 말씀하신 대로 OMatic.pm 에 있는 header() 함수를 수정하고, CGI.pm은 원래 것으로 되돌리니까 보다 더 확실하게! 해결해 주네요.

감사합니다!

인류와 지구를 살리는 길은 소비를 의식적이고 자발적으로 줄이는 것, 바로 거기에 있다.
=========================
우리가 정말 정보의 바다에 살고 있을까?

김민수의 이미지

향후 참조를 위해 내용 새로 더했습니다.

cjh wrote:
Quote:
sub header {
	my $cgi = shift;
	my $hdr = stripnph($cgi->header(@_, '-nph'=>1));
	return $hdr;
}

이렇게 고치면 될 것 같네요.

sub header {
	my $cgi = shift;
	my $hdr = stripnph($cgi->header(@_, '-nph'=>1, '-charset'=>"euc-kr"));
	return $hdr;
}

이 부분이

sub header {
        my $cgi = shift;
        my $charset = gettext("http-charset");
        my $hdr = stripnph($cgi->header((@_,'-charset'=>$charset), '-nph'=>1));
        return $hdr;
}

이렇게 바뀌었군요...

근데, FAQ-O-Matic은 일본어는 지원하는데 왜 한글은 지원 안하지요?
저는 사용자 입장에서, FreeBSD의 portupgrade 든, rpm package를 통해 '업'하든, 한글 문제가 좀 부드럽게 되었으면 하는 바람입니다...

인류와 지구를 살리는 길은 소비를 의식적이고 자발적으로 줄이는 것, 바로 거기에 있다.
=========================
우리가 정말 정보의 바다에 살고 있을까?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.