[linux] CentOS5, gnome에서 한글 입력하기 (nabi 설치)

nabi-0.14-3.i386

전에.. CentOS4 에서는.. 한글입출력을 위해 nabi를 사용했었는데..
그땐 어렵지 않게 설치했던것 같은데..
(기억하기론 그냥 yum install nabi 이런식으로 설치했던것 같다.)
CentOS5로 왔더니.. yum에서 안보이길래.. 좀 찾아봤다..

첨부한 rpm 파일을
=========
# rpm -Uvh nabi-0.14-3.i386.rpm
=========
과 같이 설치하면 되며..
별다른 설정 없이.. gnome에서 shift+space 로 한영전환이 가능했다.
(뭐.. 다른 포스팅 된 글을 보니.. 최신판을 컴파일해서 설치했는데.. 뭐 잘 안된다느니. .하는 말이 있던데..
하여튼.. 첨부한건 최신판은 아닌것 같고..
rpm으로 설치해서 실행된걸 확인한 버전이다..)

Loading

[linux] munin에서 sata hdd 인식하기..

리눅스 서버에 munin을 설치해서.. 대략적인 서버 상태를 파악한다.
뭐 특별한 패키지를 깔진 않고.. 그냥 rpm으로 설치 후, 기본적인 항목들만 보고 있는데..
그중에 유용했던 항목중에 하나가..
HDD temperature 다.
뭐 얼마나 정확하겠냐 마는.. 지금 케이스에 온도계가 달려있는것도 아니고..
하드 온도변화를 보면서.. 대략적으로 온도를 파악할 수 있어서.. 보곤 했었다.

그런데.. 새하드를 단 뒤부턴 온도정보가 안나온다.. -_-;;
IDE에서 SATA방식으로 바꿨는데.. SATA는 인식이 안되는듯..
그래서 일단 그냥 놓고 있다가..
자료를 좀 찾아봤는데..
아래와 같은 내용이 있어서 한번 해보려고 한다.
지금은 시간이 없어서.. 일단 잊어버리지 않게, 이쪽에 옮겨놓고.. 시간날때 한번 작업해보려고 한다.

관련글 : http://munin.projects.linpro.no/ticket/530

수정내용
===============
hddtemp_smartctl.in.orig    2007-09-20 22:10:46.000000000 +0100
+++ hddtemp_smartctl.in 2007-10-03 16:08:53.000000000 +0100
@@ -93,6 +93,13 @@
     @drives = grep /hd[a-z]/, readdir IDE;
     closedir(IDE);
   }
+
+  # Now add in scsi (eg sata) ones
+  my @sata = `dmesg | grep ‘^ sd[a-z]:’ | awk -F ‘:’ ‘{print \$1}’`;
+  foreach(@sata) {
+    chomp; s/ //g;
+    push(@drives,$_);
+  }
} elsif ($^O eq ‘solaris’) {
   @drives = map { s@.*/@@ ; $_ } glob ‘/dev/rdsk/c*t*d*s2’;
}
@@ -132,7 +139,13 @@
   $dev = $_ =~ /(.*)(?:_\d+)/ ? $1 : $_;
   my $cmd = $smartctl.’ -A ‘;
   $cmd .= $ENV{‘args_’.$_}.’ ‘ if exists $ENV{‘args_’.$_};
–  $cmd .= ‘-d ‘.$ENV{‘type_’.$_}.’ ‘ if exists $ENV{‘type_’.$_};
+
+  if(exists $ENV{‘type_’.$_}) {
+    $cmd .= ‘-d ‘.$ENV{‘type_’.$_}.’ ‘;
+  } elsif($dev =~ /^sd/) {
+    $cmd .= “-d ata “;
+  }
+
   $cmd .= ‘/dev/’;
   $cmd .= ‘rdsk/’ if $^O eq ‘solaris’;
   $cmd .= exists $ENV{‘dev_’.$_} ? $ENV{‘dev_’.$_} : $dev;
===============

Loading

[linux] [펌] 리눅스 스트리밍 서버 (05.12.27)

서버에서 스트리밍 한번 해볼까.. 하고 찾아보다가..
좀 오래된 글이지만 개인적으로 볼려고 올려놓는다.
원문글 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=44342&sca=%C1%A4%BA%B8&page=3

============
제목 : [정보] 리눅스 스트리밍 서버에 관한 솔류션
글쓴이 : nana
날짜 : 05-12-27 22:02

리눅스에서 스트리밍 서비스가 어렵다는 이야기가 많아서 한번 찾아봤습니다.

1. 기본적으로 real 은 되신다는 것을 아실 것이고

2. 미국사이트를 찾아보니 리눅스 스트리밍 전문 서비스들이 있더군요.
http://shoutcast.serverroom.us/?OVRAW=linux%20streaming&OVKEY=linux%20stream%20media%20server&OVMTC=advanced
이곳에서는 nullsoft 의 shoutcast 를 서버로 사용하더군요.
클라이언트는 윈도우미디어 플레이어대신 winamp을 사용하구요. PC, MAC, LINUX 에서 모두 사용되구요. ( http://www.nullsoft.com/ntv/publicaccess/ )
http://www.shoutcast.com/download/broadcast.phtml
가격도 저렴한편이네요. 50메가하드+30기가트래픽에 월11.99달러네요.

3. 오디오스트리밍(MP3) 는 icecast 를 가직고 하나봐요. 셋업하는 방법이 나와있네요 참고하세요.
http://www.yolinux.com/TUTORIALS/LinuxTutorialAudioStreaming.html

4 다음은 MPEG4 스트리밍에 관한 내용이고요
http://www.linuxjournal.com/article/6720

5. BYU브로드캐스팅은 TV 라디오와 웬만하게 알려진 파일들은 대부분 제어하는 것 같습니다.  http://www.byubroadcasting.org/

6. 요즘 야후블로그의 비디오나 cj쇼핑에서 나오는 실시간방송은 한국에서 만든 건데
seevideo라는 플레이어로 dideonet.com 에서 만들었죠
샘플과 asp파일 자바스크립트 파일을 받으시려면 다음을 방문하세요.
http://www.seemedia.co.kr/
seevideo는 리눅스기반 서버에서만 사용이되고, 클라이언트는 윈도우 사용자들을 위해 개발이 되었는 데, AVI파일을 사용하고 있습니다. 기능은 메디아플레이어에 비해 훨씬 뛰어나지만 플레이중 다른 프로그램을 사용하면 시스템이 불안정해지는 것이 흠이더군요.

7. 가장 강력한 것은 프랑스에서 개발된 VLS streaming 입니다.
VLS는 그간 리눅스의 문제점으로 지적됐던 asf wmv divx avi 등을 스트리밍 할수 있으며, 제작자에의하면 별도의 미디어 서버가 필요없이 리눅스 웹서버에서 바로 작동을 한다고 합니다. VLS는 무료이며 소스가 공개되어 있습니다.

아뭏튼 도움이 되었으면 합니다.
윈도우 메디아 플레이어가 시장을 잡고있으니 리눅스 기반이 흔들리는 것 같습니다.
스트리밍프로그램이나 서비스를 개발하시는 분들께 도움이 되셨으면 합니다.

============
나는 하게되면 VLS를 설치해보려고 한다.

가이드 : http://www.videolan.org/doc/vls-user-guide/en/vls-user-guide-en.html
다운로드 : http://www.videolan.org/streaming/download-vls-sources.html

Loading

[linux] cd to iso (image file)

CD이미지를 떠야 하는데.. 레코딩 프로그램이 없을때…
linux에서 간단히 iso 파일 만들기..
(CD이미지 떠야하는데.. PC에 레코딩 프로그램은 없구.. vmware linux는 설치되어있어서.. vmware linux에서 파일 만들었다.)

1. 일단 cd mount를 해제한다.
mount로 마운트되어있는지 확인 마운트 umount되어있으면 해제한다. (/dev/hdc 로 잡혀있을 경우..)
잘 모를 경우 /etc/fstab 도 한번 확인한다.. (대부분 fstab에 자동으로 잡히므로..)
# umount /dev/hdc

2. dd명령으로 이미지 생성 (cd-drive는 /dev/hdc, 생성할 파일은 cdimg.iso 일 경우)
# dd if=/dev/hdc of=cdimg.iso

3. 끝..?? (뭐.. 다시 cd 읽으려면 mount 하던가.. ^^)

Loading

[web] 같은 디렉토리에서 서로 다른 도메인 띄우기 (apache설정 VirtualHost, DirectoryIndex 사용)

흠.. 제목만 보면 잘 감이 안올 수 있는데…
홈페이지를 만들다보면…
게시판 하나만 별도의 도메인으로 다루고 싶을때가 있다.
보통 게시판마다 별도의 주소(URL)가 있긴 한데.. 주소치자니 귀찮고.. 도메인을 아에 따로 하나 쥐어주고 싶은데.. 귀찮아서 기존 도메인이랑 같은 디렉토리를 쓰려고 할때..
뭐 방법이야 여러가지가 있겠지만..
인터넷에서 찾아보면.. 보통 index.php를 만들어서.. $_SERVER[“HTTP_HOST”] 값을 비교해서 해당 URL로 링크 띄워주는 방식을 추천한다..
난 index.php에서도 또 별도로 하는게 있어서..(ddns사용중인 adsl이 살았으면 바로 그쪽 유동ip로 연결하는 작업을 index.php에서 한다.)
그냥 apache httpd.conf에 설정해버렸다.

httpd.conf 에 virtualhost 설정하는 부분이 있는데..
그중에 DirectoryIndex 항목을 추가해준다.

<VirtualHost *:80>      # <--  원래있던 내용
    ServerAdmin admin@server.com
    DocumentRoot /home/myhome/public_html
    ServerName server.com
    ServerAlias www.server.com
    ErrorLog logs/www.server.com-error_log
    CustomLog logs/www.server.com-access_log common
</VirtualHost>

<VirtualHost *:80>   # <-- 복사해서 하나 더 만든다.
    ServerAdmin admin@server.com
    DocumentRoot /home/myhome/public_html
    ServerName test.server.com    # <-- 도메인 설정해주고
    DirectoryIndex test_index.php   # <-- 추가한다.
    ErrorLog logs/test.server.com-error_log
    CustomLog logs/test.server.com-access_log common
</VirtualHost>

이렇게 하면.. 해당 도메인(test.server.com)으로 접속하면 index.php가 아닌 test_index.php를 찾게 되므로..
해당 test_index.php에다가 원하는 게시판 주소로 가게 해놓으면 된다..

근데.. zb4를 쓸때는 잘 됐는데…
얼마전에 xe로 바꿨더니.. 이상하게 잘 안되는 것이다..
메인 도메인으로는 잘 됐는데… test도메인으로 들어가면 해당 게시판은 잘 뜨나, 로그인이라던가.. 하여튼.. 뭔가 액션을 취하려면 잘 안된다..

왜그럴까.. 에러는 403인데.. 원 도메인이랑 같은 디렉토리를 사용하니.. 권한(<Directory …> 부분)은 아닌것 같고.. 도메인 부분인데.. 그럼 VirtualHost 부분인데..
여긴 뭐 권한이나 옵션 설정하는것도 없고.. 이상하다..
하고 한참을 고민했는데..
원래 VirtualHost 부분을 복사해서 해보기도 하고.. 했는데.. 결국 알아냈다..
편하게 쓰고자 했던.. DirectoryIndex 부분.. -_-;;;
httpd.conf 에 원래 DirectoryIndex부분이 있고..
난 VirtualHost에 또 설정하면.. 기존것 상속도 하고 저기에 설정해놓은게 더 우선순위가 먹는줄 알았는데..
그게 아닌가보다.. 기존게 그냥 무시되고.. VirtualHost에 적어놓은것만 인식하는듯..
그래서 xe/ 밑에 index.php를 불러오질 못하고, test_index.php를 찾으려하니 없어서 오류가 나는 듯

해서.. 원래 있던 값들을 추가해줬다.

 

<VirtualHost *:80>   # <-- 복사해서 하나 더 만든다.
    ServerAdmin admin@server.com
    DocumentRoot /home/myhome/public_html
    ServerName test.server.com    # <-- 도메인 설정해주고
    DirectoryIndex temp_index.html index.php index.html   # <-- 또 추가한다.
    ErrorLog logs/test.server.com-error_log
    CustomLog logs/test.server.com-access_log common
</VirtualHost>

이렇게 했더니 잘 돌아간다.. -_-;;

기존의 zb4에서는 거의 모든 링크들이 온전한 링크인데.. xe에서는 rewrite_mode를 활용하기도 하고 해서.. 디렉토리 뒤에 /?mid= 이런식으로도 많이 쓴다..
그러니 index.php를 못찾아서 에러가 났던 게지.. -_-;;
흠… 하여튼.. 난 고생했던거라.. 포스팅 한다..
(근데.. 나처럼 VirtualHost에 DirectoryIndex 설정해서 쓰는 사람 별로 없을 듯..)

Loading

[web] xe 뎃글 인증코드 달기(작업중)

예전 제로보드 쓸때, 뎃글에 자꾸 이상한글이 달려서..
인증코드를 만들었다.
XE로 가려니.. 이쪽에도 필요해서 좀 보고서 우선 급한대로 추가했다.
예전게시판은 글쓰기 권한은 나밖에 없어서.. 뎃글에만 달았는데..
수정해서 글쓰기에도 넣고, 글쓰기 제한 풀어야 겠다.

수정파일 : modules/board/skin/xe_board/view.document.html
수정위치 : 167줄 쯤.. 다음과 같이 추가 (사실 이건 내가 필요해서 넣은것.. 블로그 형태에서 뎃글쓰기가 지저분해서 열고 닫게 하려다 보니.. index가 필요해서..)
===============
{@$commentIdx++;}  
===============

168줄 쯤 다음과 같이 수정 (이것도.. 뎃글쓰기를 열고 닫게 하려다 보니 index가 필요해서..)
===============
        <div id=”commentEditor_{$commentIdx}” class=”boardWrite commentEditor” style=”display:none”>
===============

195줄 쯤.. 다음과 같이 수정,추가 (뎃글쓰기 열고 닫게 하려다 보니 index 추가, 인증코드 추가)
===============
        <div id=”commentButton_{$commentIdx}” class=”commentButton tRight” style=”display:none”>      <– 수정
                {$lang->onetime_password} <img src=”/xe/authimg.php” align=”absmiddle” /> <input type=”text” name=”onetime_password” class=”inputTypeText” />  <– 인증코드 추가
            <span class=”button {$btn_class}”><input type=”submit” value=”{$lang->cmd_comment_registration}” /></span>
        </div>
        <div id=”commentOpenButton_{$commentIdx}” class=”commentButton tRight”>   <– 이하 추가(뎃글 열기 버튼)
            <span class=”button {$btn_class}”><input type=”button” value=”{$lang->cmd_comment_registration}” onClick=”openCommentEditor(‘{$commentIdx}’);” /></span>
        </div>
===============

수정파일 : modules/board/board.controller.php
수정위치 : 130줄 쯤.. 다음과 같이 수정 및 추가
===============
            $obj = Context::gets(‘document_srl’,’comment_srl’,’parent_srl’,’content’,’password’,’nick_name’,’nick_name’,’member_srl’,’email_address’,’homepage’,’is_secret’,’notify_message’,’onetime_password’);    // <– onetime_password 추가
            $obj->module_srl = $this->module_srl;

            if( isset($obj->onetime_password) && ($obj->onetime_password != $_SESSION[“ssOTP”]) ) return new Object(-1, ‘msg_invalid_onetime_password’);   // <– 인증코드 판단하는 줄 추가
===============

수정파일 : modules/board/lang/ko.lang.php
수정위치 : 마지막에 추가
===============
    // 인증코드 관련
    $lang->onetime_password = ‘인증코드’;
    $lang->msg_invalid_onetime_password = ‘인증코드가 올바르지 않습니다’;
===============

수정파일 : modules/board/tpl/filter/insert_comment.xml
수정위치 : <form></form> 과 <parameter></parameter> 사이에 추가
===============
  <form>
     …
    <node target=”onetime_password” required=”true” minlength=”1″ maxlength=”4″ />
  </form>
  <parameter>
     …
    <param name=”onetime_password” target=”onetime_password” />
  </parameter>
===============

신규파일 : modules/board/skins/xe_board/js/comment.js  <– 뎃글쓰기 열고 닫기 위한 javascript
===============
function openCommentEditor(idx)
{
        var ce = document.all[“commentEditor_”+idx];
        var cb = document.all[“commentButton_”+idx];
        var ob = document.all[“commentOpenButton_”+idx];

        if(ce&&cb&&ob)
        {
                ce.style.display = “”;
                cb.style.display = “”;
                ob.style.display = “none”;
        }
}
===============

신규파일 : modules/board/skins/xe_board/images/authcode.php   <– 인증코드이미지 생성 파일
===============
<?
    define(‘__ZBXE__’, true);
    require_once(‘../../../../../config/config.inc.php’);
    $oContext = &Context::getInstance();
    $oContext->init();

    header(“Content-type: image/png”);
    $string_a = array(“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”j”,”k”,
        “m”,”n”,”p”,”r”,”s”,”t”,”u”,”v”,”w”,”x”,”y”,”z”,
        “2”,”3″,”4″,”5″,”6″,”7″,”8″,”9″);
    $keys = array_rand($string_a, 4);
    foreach($keys as $n=>$v){
        $string .= $string_a[$v];
    }

    $_SESSION[“ssOTP”]=$string;

    $im     = imagecreatetruecolor(80, 19);
    $orange = imagecolorallocate($im, 220, 210, 60);
    $px     = (imagesx($im) – 7.5 * strlen($string)) / 2;
    imagestring($im, 3, $px, 3, $string, $orange);
    imagepng($im);
    imagedestroy($im);
?>
===============

우선 급한대로 올렸는데..
다 한건지 모르겠다..
나중에 한번 확인해야지..

Loading

[linux] rpmforge yum repo 설정하기 (rpm으로..)

1. yum 우선순위를 위해..
# yum -y install yum-priorities

2. 귀찮아서 rpm을 받아 설치한다.
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
(centos4일경우는)
# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
# rpm -Uvh rpmforge-release-0.3.6-1.el4.rf.i386.rpm

3. 우선순위를 정한다.
# vi /etc/yum.repos.d/CentOS-Base.repo
===========
# [base], [updates], [addons], [extras]에 각각 추가
priority=1

[centosplus]
priority=2
===========
# vi /etc/yum.repos.d/rpmforge.repo
===========
[rpmforge]
priority=10
===========

Loading

[web] 고정ip와 ddns를 이용하여 웹서비스 시 첫페이지에서 구분해서 띄워주기

pptp를 이용한 고정 ip서비스를 이용중이었는데..
어느정도 회선속도는 보장받고 싶고.. 그렇다고 비싼돈 들이기는 싫고..
ddns를 이용하자니 회선 속도만큼 쓸 수는 있는데.. 이게.. 좀 불안하고..(제때 제때 ip 변경이 적용되지 않거나 할 수 있으므로..)
기존에 쓰던 pptp서비스 기간도 다되가고(나름 가격대비 속도가 괜찮은편..) 연장을 할까하다가…
고정 ip는 느리더라도 제일싼걸로 해놓고..
ddns를 이용해서 서비스 하도록 했다.
다만 ddns가 제대로 업데이트를 안할경우를 대비해서.. 첫페이지에서 ddns페이지가 살아있나 확인하고, 살아있으면 ddns도메인으로 띄우고, 아니면 그냥 고정ip 도메인으로 띄우도록 하기로 했다.

0. 개요
1)index.html(index.php) 에서 ddns도메인의 테스트 페이지를 띄워서 살아있나 확인
2)살아있으면 ddns도메인의 intro페이지를 띄움
3)아니면 고정ip도메인의 intro페이지를 띄움
* 고정ip 도메인 : www.test.com
  ddns도메인 : test.ddns.com
  테스트페이지 : pagealivecheck.html (pagealivecheck.js)
  시작페이지 : intro.html

1. php 함수 이용
처음 생각은 php에서 소캣을 열거나 페이지를 불러와서 확인 하도록 했다.
기본적으로 GET으로 페이지 호출하는 소스를 참고해서 수정했다.
============
<?php
    $req_host = “www.test.com”;
    $mod_host = “test.ddns.com”;
    $start_page = “/intro.html”;
    $auth_param = “”;
    $target_ip=$mod_host;
    $target_port=80;
    $target_uri=”/pagealivecheck.html”;

    $pagealive = true;

    $http_header = array();
    $http_header[] = ‘GET ‘ . $target_uri . ‘ HTTP/1.1’;
    $http_header[] = ‘Host: ‘ . $target_ip . ‘:’ . $target_port;
    $http_header[] = ‘Authorization: Basic ‘.$auth_param;
    $http_header[] = ‘Accept: */*’;
    $http_header[] = ‘Connection: close’;
    $message = implode(“\r\n”,$http_header) . “\r\n\r\n”;

    $fp = fsockopen($target_ip,$target_port,$errno,$errstr,10);
    if(!get_resource_type($fp)==’stream’) { $pagealive=false; }
    if($pagealive && !fwrite($fp,$message)){
        fclose($fp);
        $pagealive = false;
    }

  if($pagealive)
  {
    $http_response=array();
    while(!feof($fp)){
        $http_response[]=fgets($fp,4096);
    }
    fclose($fp);

    $http_res_code=substr($http_response[0],9,3);
    $http_res_message=substr($http_response[0],13);

    if($http_res_code==”200″)
    {
        $pagealive = true;
    }
    else
    {
        $pagealive = false;
    }
  }

    if($pagealive)
    {
?>
<meta http-equiv=”refresh” content=”0; url=http://<?=$mod_host.$start_page?>” >
<?
    }
    else
    {
?>
<meta http-equiv=”refresh” content=”0; url=http://<?=$req_host.$start_page?>” >
<?
    }
?>
============
뭐 잘 돌아갔다.
잘돌아가는 줄 알았다.
그런데 문제가 하나 생겼다. 테스트 겸 해서.. ddns의 80포트를 막아봤다(공유기에서 포트포워딩 해주므로.. 그거 설정을 바꿔봤다.)
그런데.. ddns도메인으로 자꾸 연결하려고 하는거 아닌가..
생각해봤더니.. 서버단에서 채크를 하다보니.. 외부에서는 테스트페이지가 안열려도 공유기 내부에서는 테스트페이지가 열리나보다.

2. iframe, ajax 사용
해서.. javascript를 이용해서.. 브라우져단에서 페이지가 살았는지를 확인하고 싶어서..
iframe을 사용하다가.. ajax을 이용해서 해보려고 또 소스좀 참고 해서 했다.
결론은.. 잘 안된다.. 처음엔 문법을 잘몰라 헤매고.. 여차저차해서 만들었더니..
도메인이 달라서 계속 권한이 없다고 나오고 그런다.
권한에 대해 찾아보니.. iframe의 경우 뭐 프레임에 또 프레임을 넣어서 parent.parent 해서.. 하면 될것 같긴 하지만..
귀찮다.. -_-;;

3. js 파일 이용
생각해보니.. 그냥 js파일을 외부에서 불러들여왔던걸 생각했다.
그래서.. js 파일에 변수값 하나 세팅해주고.. 이파일을 불러온다음.
이 변수값이 세팅 됐는지.. 안됐는지.. 확인해서 다음페이지를 결정하기로 했다.
그랬더니.. 그런대로 잘 동작하는데..
한가지 문제점이.. onload 이벤트에 넣어줬더니.. js파일이 있는 경우에는 상관없는데..
js파일을 못 여는 경우.. 한참동안 시도를 하다가.. 그게 실패로 끝나야만 onload가 발생하더군..
meta테그로 refresh해봤는데.. 그것도 실패로 끝난뒤에 실행되는것 같고..
그래서.. 좀더 고민하다가.. 그냥 timeout으로 지정해버렸다.
해서.. 지금 사용하고 있는 소스는 다음과 같다.
javascript밖에 없어서.. html로 해도 되는데.. 그냥 php로 했다.

index.php
=============
<?php
    $req_host = “www.test.com”;         // 원 호스트(고정 ip, 저속)
    $mod_host = “test.ddns.com”;        // 수정 호스트(ddns, 고속)
    $start_page = “/intro.html”;        // 시작페이지

    $test_page=”/pagealivecheck.js”;    // 살아있는지 확인 b_page_alive = ture;
?>
<html>
<head>
<script language=’JavaScript’>
<!–
    var b_page_alive = false;

function goStartPage()
{
        if(b_page_alive)
                document.location = “http://<?=$mod_host.$start_page?>”;
        else
                document.location = “http://<?=$req_host.$start_page?>”;
}

setTimeout(“goStartPage();”,3000);
//–>
</script>
<script type=”text/javascript” src=”http://<?=$mod_host.$test_page?>”></script>
<meta http-equiv=”refresh” content=”5; url=http://<?=$req_host.$start_page?>”>
</head>
<body onload=’goStartPage()’>
</body>
</html>
=============

html을 원하면.. 아래파일로 하면 된다.
index.html
=============
<html>
<head>
<script language=’JavaScript’>
<!–
    var b_page_alive = false;   // mod_host, test_page 에서 true 로 셋해준다.

    var req_host = “www.test.com”;      // 원 호스트(고정 ip, 저속)
    var mod_host = “test.ddns.com”;     // 수정 호스트(ddns, 고속)
    var test_page = “/pagealivecheck.js”;       // 살아있는지 확인 b_page_alive = ture;
    var start_page = “/intro.html”;     // 시작페이지

function goStartPage()
{
        if(b_page_alive)
                document.location = “http://”+mod_host+start_page;
        else
                document.location = “http://”+req_host+start_page;
}

setTimeout(“goStartPage();”,3000);

//–>
</script>
<body onload=’goStartPage()’>
<script>
document.write(“<“+”script type=’text/javascript’ src=’http://”+mod_host+test_page+”‘>”+”<“+”/script”+”>”);
document.write(“<“+”meta http-equiv=’refresh’ content=’5; url=http://”+req_host+start_page+”‘>”);
</script>
</body>
</html>
=============

pagealivecheck.js 에는 그냥 다음과 같이 한줄만 있다.
=============
var b_page_alive = true;
=============

Loading

[linux] libphp5.so: cannot restore segment prot after reloc: Permission denied

Centos 4를 쓰다, CentOS 5로 넘어가 보려고
CentOS 5.2 설치 후에, apache, php를 설치하고 실행하려니 다음과 같은 에러가 떴다.
==========
[root@localhost bin]# ./apachectl start
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
==========

google을 찾아보니 다음과 같이 하면 된다더라..
==========
[root@localhost bin]# restorecon -R -v /usr/local/apache/module
[root@localhost bin]# chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so
==========

Loading

[linux] virtualbox 를 이용하여 윈도우 돌리기

자료를 좀 찾을게 있어서 p2p를 가끔 사용하는데..
자료를 받으려면 장시간 PC를 켜놓아야 하는 경우가 발생한다.
그래서.. 어차피 리눅스 서버가 항시 켜있으니 이쪽에서 이용하려고.. aMule을 돌렸는데.. (centOS의 경우 rpmforge를 이용하면 yum으로 손쉽게 설치 된다.)

요즘 자료도 잘 안찾아지고.. 꼭 필요한게.. 윈도우 계열의 유료 p2p에서만 보여서.. 좀 고민좀 했었다.
결국 원하는 자료를 무료회원도 다운받을 수 있는 p2p사이트를 발견했는데..
무료회원은 속도가 느려서.. 하세월이다..
그래서.. 리눅스 서버에 윈도우 가상머신을 깔고.. 거기서 받아보기로 했다..
(항상 켜있으니 시간부담은 별로 안크다..)

1. rpm 다운받기
http://www.virtualbox.org/wiki/Downloads

2. 설치
# rpm -Uvh VirtualBox-2.1.4_42893_rhel4-1.i386.rpm
(혹시 에러나면.. kernel-devel, gcc 등이 설치되어있나 확인한다.)

3. vboxusers그룹에 추가
# vi /etc/group
=========
vboxusers:x:502:ninano
=========

4. xwindows를 시작하고 virtualbox를 실행
프로그램-시스템 도구-Sun xVM VirtualBox

5. new를 선택해서.. 가상머신 하나 만들어서 실행하고 윈도우 깐다…

참고1) 이상하게 mount된 cdrom을 virtualbox에서 인식을 못한다. iso파일을 만들어서 이미지파일을 mount 한다.
# dd if=/dev/hdc of=winxp.iso
(/dev/hdc : cdrom 장비, winxp.iso : 생성될 iso파일명)

참고2) virtualbox에서 윈도우를 실행하면.. “오른쪽 ctrl”을 눌러야 virtualbox 밖으로 나올수 있다.
가끔 이게 인식이 안되어있어서 못나오는 경우가 있는데.. 윈도우에서 키보드 설정을 해주면 된다.
“한글 PS/2 키보드 / USB키보드(103/106)” 을 선택해준다.

Loading