웹툴즈에서 몇 가지를 만들어 봤는데요… 트래픽 부담도 있고 해서, 필요하신 분들은 직접 설치해서 쓰시라고 소스를 공개합니다.

PHP가 어려우신 분께서는 아래의 삽입코드는 그대로 이용하셔도 무방합니다. 좀 더 다양한 기능 (통계분석, 이웃관리, 랜덤, 이웃랜덤 등)을 이용하시려면 웹툴즈 홈페이지에서 회원 가입 후 이용하셔야 합니다. (DB와 연결되는 부분이라 어쩔 수 없네요.)

간단히 HTML로만 이루어진 소스는 며칠 전에 공개했으니, 그 것을 이용하시면 됩니다.

RSS로 구독을 원하시면 며칠 전 공개한 RSS구독 PHP소스를 이용하시면 됩니다.

아래 코드는 웹툴즈에서 제공하고 있는 부분 중 회원가입이 필요하진 않은 부분만 추린 소스입니다.

삽입코드

<iframe name='opencastframe' id='opencastframe' src='http://opencast.netne.net/embed.php?opencast_id=KK244&opencast_index=3&is_header=1&is_footer=1&is_feed=1&opencast_feed=opencast.netne.net/feed.php?id=KK244' width='475 height='336' border='0' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' allowtransparency='true'></iframe>

옵션 설명

http://opencast.netne.net/embed.php embed.php의 도메인을 포함한 전체 경로
opencast_id=KK244 필수, 오픈캐스트의 캐스트 채널 아이디
opencast_index=3 생략하면 최신 발행, 발행번호
is_header=1 상단에 캐스트 채널 보일지 여부, 0 또는 생략하면 안보임
is_footer=1 하단에 구독링크 보일지 여부, 0 또는 생략하면 안보임
is_feed=1 하단에 rss 구독링크 보일지 여부, 0 또는 생략하면 안보임, is_footer=1 일 때만 보임
opencast_feed= feed링크에 연결할 주소, 블로그 RSS링크로 바꿔도 됨. 앞서 공개한 RSS PHP파일 경로를 이용. http://를 붙이지 말 것.

만약 is_feed=1 인데, opencast_feed를 생략하면 기본 RSS주소로 링크됩니다. 기본 링크 주소를 바꾸시려면 embed.php의 13번 줄을 변경하시면 됩니다.

view.php

오픈캐스트의 캐스트보드 부분만을 가져오는 IFRAME 소스

view.php?opencast_id=KK244 또는
view.php?opencast_id=KK244&opencast_index=3 형태로 불러오면, 캐스트보드만 가져옴.

캐스트보드만 보여주기 원하면 이 소스만 이용하면 됨.

<?php
// GET변수 가져옴
$opencast_id = $_GET['opencast_id'];
$opencast_index = $_GET['opencast_index'];

$opencast_url = "http://opencast.naver.com/" . $opencast_id;

if ($opencast_index)
$opencast_url .= "/" . $opencast_index;
?>

<body topmargin="0" leftmargin="0" style="background-color:transparent">
<div style="position:absolute; width:475; height:275; left:-263px; top:-127px;">
<iframe name='opencast' id='opencast' src='<?=$opencast_url?>' width='738' height='402' border='0' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' allowtransparency='true'></iframe>
</div>
</body>

embed.php

상단 제목과 하단 구독링크를 만들기 위해서 확장한 것임.

파란색으로 된 줄은 자신의 홈페이지 등으로 링크해서 쓰세요 .

3개의 이미지 파일이 필요합니다. 각 이미지는 embed.php이 있는 디렉토리 하단에 images 디렉토리를 만들어서 업로드 합니다.

<?php
// GET변수 가져옴
$opencast_id = $_GET['opencast_id'];
$opencast_index = $_GET['opencast_index'];
$is_header = $_GET['is_header'];
$is_footer = $_GET['is_footer'];
$opencast_feed = $_GET['opencast_feed'];
$is_feed = $_GET['is_feed'];

$opencast_url = "http://opencast.naver.com/" . $opencast_id;

if ($is_feed && !$opencast_feed)
$opencast_feed = "opencast.netne.net/feed.php?id=" . $opencast_id;

$fp = fopen($opencast_url,"r");
$content = "";
while( !feof($fp) ){
$buffer = fgets($fp,4096);
$content .= $buffer;
}
fclose($fp);

preg_match("/<h1>.*<\/h1>/", $content, $matches);

echo "<p>";
if( $matches[0] == ""){
$ch_link = "";
} else {
$ch_link = $matches[0];
$ch_link = str_replace("a href=\"/", "a target=\"_blank\" href=\"http://opencast.naver.com/", $ch_link);
}

$footer_top = 318;
if (!$is_header)
$footer_top -= 37;
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style>
a:link    {color:#666;text-decoration:none;}
a:visited {color:#666;text-decoration:none;}
a:active  {color:#333;text-decoration:none;}
a:hover  {color:#333;text-decoration:none;}

#chlink { width:100%; height:32px; background:url(images/cast_logo.gif) no-repeat 0 9px; background-color:#272e3c; }
<?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE')) { ?>
#chlink h1 { font-size: 12px; float:left; padding:9px 9px 0 27px; color:#fff; }
<?php } else { ?>
#chlink h1 { font-size: 12px; float:left; padding:2px 9px 0 27px; color:#fff; }
<?php } ?>
#chlink h1 span { position:relative; top:-1px;  margin-right:1px; padding-right:3px; font-size:11px; color:#01939c; font-family:Tahoma, sans-serif;}
#chlink h1 a { color:#fff; }

#chrssicon { position:absolute; width:100%; height:24px; background-color:#f0f0f0; font-size: 11px; font-family:Dotum; float:left; padding:4px 0 0 8px; color:#333333; left:0px; top:<?=$footer_top-6?>px;}
#chrsslink { position:absolute; width:120px; height:24px; font-size: 11px; color:#333333; font-family:Dotum; top:<?=$footer_top?>px; left:28px;}
#chrssicon2 { position:absolute; width:20px; height:24px; background-color:#f0f0f0; font-size: 11px; font-family:Dotum; float:left; padding:4px 0 0 8px; color:#333333; left:110px; top:<?=$footer_top-6?>px;}
#chrsslink2 { position:absolute; width:120px; height:24px; font-size: 11px; color:#333333; font-family:Dotum; top:<?=$footer_top?>px; left:137px;}
#chrssicon3 { position:absolute; width:20px; height:24px; background-color:#f0f0f0; font-size: 11px; font-family:Dotum; float:left; padding:4px 0 0 8px; color:#333333; left:183px; top:<?=$footer_top-6?>px;}
#chrsslink3 { position:absolute; width:120px; height:24px; font-size: 11px; color:#333333; font-family:Dotum; top:<?=$footer_top?>px; left:210px;}
#webtools { position:absolute; width:120px; height:24px; font-size: 10px; color:#333333; font-family:Tahoma, sans-serif; top:10px; left:<?php if($is_right) echo "450px;"; else echo "410px;"; ?> }
#webtools a { color:#666; }
#chhelp { position:absolute; width:220px; height:24px; font-size: 11px; color:#999999; font-family:Dotum; top:<?=$footer_top?>px; left:270px;}

#blank1 { padding:5px 0 0 0; }
</style>
</head>
<body topmargin="0" leftmargin="0" style="background-color:transparent">
<?php if ($is_header) { ?>
<div id="chlink"><?=$ch_link?></div>
<div id="webtools"><a href="http://webtools.kr" target="_blank">WEBTOOLS</a></div>
<div id="blank1"></div>
<?php } ?>
<iframe name='opencast' id='opencast' src='http://opencast.netne.net/view.php?opencast_id=<?=$opencast_id ?>&opencast_index=<?=$opencast_index?>' width='475' height='275' border='0' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' allowtransparency='true'></iframe>
<?php if ($is_footer) { ?>
<div id="chrssicon"><img src="images/cast_link1.gif"></div>
<div id="chrsslink"><a href="<?=$opencast_url?>?action=subscribe" target="_blank">네이버에서 구독</a></div>
<?php if ($is_feed == 1) { // 피드출력 옵션이 체크된 경우만 RSS링크 출력 ?>
<div id="chrssicon2"><img src="images/cast_link2.gif"></div>
<div id="chrsslink2"><a href="http://www.hanrss.com/add_sub.qst?url=http://<?=$opencast_feed?>" target="_blank">HanRSS</a></div>
<div id="chrssicon3"><img src="images/cast_link2.gif"></div>
<div id="chrsslink3"><a href="http://<?=$opencast_feed?>" target="_blank">RSS</a></div>
<?php } ?>
<div id="chhelp">마우스를 올려놓고 휠을 사용해 보세요.</div>
<?php } ?>
</body>
</html>

  1. 2009.07.27 14:27

    비밀댓글입니다

    • k2man 2009.07.27 15:00 신고

      위에 소스는 단순히 네이버 오픈캐스트를 IFRAME으로 가져오기 위한 소스입니다.
      말씀하신 것을 하려면 플래시를 따로 공부하셔야 할 것으로 보입니다.
      도움이 못되어 죄송하네요. ^^;

  2. 2009.07.27 18:53

    비밀댓글입니다

최근에는 패키지로 배포되는 APM이 여러면에서 상당히 편리하므로 컴파일해서 설치할 필요가 없는 편입니다.

이 문서는 개인적인 차원에서 정리하는 것임을 밝혀 둡니다.

주의1)  -기호 2개가 연속으로 있을 때 조금 긴 -기호로 바뀌어 버리네요. 수정이 잘 안되니, 참고 바랍니다. ^^;;

 

 

1. MySQL

# wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz/from/http://mysql.byngsoo.net/
# tar xvzf mysql-5.0.67.tar.gz
# cd mysql-5.0.67
# ./configure --prefix=/usr/local/mysql --without-readline --enable-thread-safe-client --with-charset=utf8 --with-extra-charsets=ucs2,euckr CFLAGS="-I/usr/local/include" CXXFLAGS="-I/usr/local/include"
# make
# make install

 

2. Apache

# wget http://apache.tt.co.kr/httpd/httpd-2.2.9.tar.gz
# tar xvzf httpd-2.2.9.tar.gz
# cd httpd-2.2.9
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-auth-digest --enable-dav --enable-dav-fs --with-mpm=worker --enable-rewrite --enable-deflate --enable-headers --enable-expires --enable-log-forensic --enable-dbd --enable-authn-dbm --enable-authn-dbd --enable-authz-dbm
# make
# make install

--with-mpm=worker 설명

Apache2에는 worker와 prefork가 있다. 일반적으로 worker가 메모리를 적게 사용하지만, prefork에 비해서 불안정하다고 알려져 있다.

해당 옵션을 삭제하면 기본으로 prefork가 된다.

서버의 수용 최대 접속 컴파일 단계에서 늘리기

Apache1.3.x에서는 httpd.h 파일의 HARD_SERVER_LIMIT 값을 변경해 컴파일 해야 하지만, Apache2에서는 조금 다르다.

컴파일 전에 아래 값을 변경해 줘야 한다.

server/mpm/prefork/prefork.c
DEFAULT_SERVER_LIMIT 을 256에서 2048로 변경

server/mpm/worker/worker.c
DEFAULT_SERVER_LIMIT 을 16에서 256으로 변경

 

3. PHP

# wget http://kr2.php.net/get/php-5.2.8.tar.gz/from/this/mirror
# tar xvzf php-5.2.8.tar.gz
# cd php-5.2.8
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-iconv=/usr/local --with-libxml-dir=/usr/local/xml --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-zlib-dir=/usr/local --with-freetype-dir=/usr/local --with-curl --enable-mbstring --enable-mbregex --enable-dbase --enable-sigchild --enable-gd-native-ttf --enable-wddx --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --enable-soap --enable-ftp --enable-safe-mode --enable-exif --enable-bcmath
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini

configure 중 libiconv.so.2 문제

아래와 같은 에러가 발생할 수 있다.

Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)

The output of /opt/modules/apache2/bin/apxs follows:
/opt/modules/apache2/bin/httpd: error while loading shared libraries:libiconv.so.2: cannot open shared object file: No such file or directory
apxs:Error: Sorry, no shared object support for Apache.
apxs:Error: available under your platform. Make sure.
apxs:Error: the Apache module mod_so is compiled into.
apxs:Error: your server binary `/opt/modules/apache2/bin/httpd'..
configure: error: Aborting

해결방법

# ln -s  /usr/local/lib/libiconv.so.2 /usr/lib/

다시 configure 실행

 

4. ZendOptimizer

http://www.zend.com 에서 다운로드

# tar xvzf ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz
# cd ZendOptimizer-3.2.8-linux-glibc21-i386
# ./install

install스크립트

- 자동으로 설치함
- 설치 중 php.ini 경로 입력 : /usr/local/php/lib
- 설치 중 Apache Control Utility 경로 입력 : /usr/local/apache2/bin/apachectl

ZendOptimizer 제거

- /usr/local/php/lib/php.ini-zend_optimizer.bak 을 php.ini로 바꿈

최근에는 패키지로 배포되는 APM이 여러면에서 상당히 편리하므로 컴파일해서 설치할 필요가 없는 편입니다.

이 문서는 개인적인 차원에서 정리하는 것임을 밝혀 둡니다.

 

 

1. PATH 설정

/etc/profile 에 아래 내용 추가

# form Apache located at /usr/local/apache2
if [ –d /usr/local/apache2 ]
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apache2/lib; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/apache2/bin; export PATH;
fi

# from MySQL located at /usr/local/mysql
if [ –d /usr/local/mysql ]
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/mysql/bin; export PATH;
fi

 

2. MySQL 설정

mysql 사용자 추가

# groupadd mysql
# useradd -d /home/mysql -g mysql –s /bin/false mysql

환경파일 복사

# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

DB파일 생성

# /usr/local/mysql/bin/mysql_install_db
# chown -R mysql:mysql /usr/local/mysql/var

root 비밀번호 변경

# /usr/local/mysql/share/mysql/mysql.server start
# /usr/local/mysql/bin/mysqladmin –u root password ‘new-password’

 

3. Apache 설정

/usr/local/apache2/conf/httpd.conf 파일 수정

# Dynamic Shared Object (DSO) Support
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .htm .html
AddType application/x-httpd-php-source .phps

ServerName 수정

ServerName 192.168.0.1 처럼 IP를 지정하거나 도메인 지정

Include 주석 해제

가장 하단부에 각 설정이 구분된 Include 설정이 있다. 필요한 설정 부분 주석을 해제한다.

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include conf/extra/httpd-autoindex.conf

# Language settings
Include conf/extra/httpd-languages.conf

# User home directories
Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf

# Various default settings
Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf

새로운 웹프로그래밍에 도전중이다.
요즘 마리학교에 몸담아 있으면서, 학교 홈페이지 개편작업을 하고 있다.
제로보드4로 되어 있던 홈페이지를 완전히 뜯어 고치고 있다.

빈 공간에 건물을 끌어다 놓고 자기 집으로 설정하고,
공동의 공간에는 도로와 구름을 가져다 놓을 수 있다.

이메일주소를 아이디로 하고 이메일인증도 하려고 한다.

한 화면에서 모든 작업을 할 수 있도록, AJAX와 DHTML을 이용하려고 한다.

WIKI를 도입하고, 위지윅에디터를 쓰고, 업로드도 ActiveX를 쓰더라도 무제한으로 늘리고 등등....
그런데, 도대체 만들어야 할게 너무 많다.

아무것도 없는 데서 처음부터의 삽질 ㅋㅋ

3~4년만에 웹프로그래밍에 집중하면서, 왜이리도 모르는게 많은지 한심할 뿐이다..
에궁 어려워라~~~

'My Story' 카테고리의 다른 글

항상 정신없는 나의 마리학교  (2) 2007.06.08
화악산 계곡을 가로질러~~  (0) 2007.06.08
나의 허접한 웹프로그래밍  (0) 2007.05.24
집 앞  (0) 2007.05.24
완전히 지워졌다. 다시 시작하자!!  (0) 2007.05.09
로그를 남길 시간이 없다  (0) 2007.05.01

+ Recent posts