2009년 11월 30일 월요일

[리눅스] vim 텍스트 색상이 제대로 출력되지 않을때..



/etc/vimrc 파일에 아래 내용추가시 모든 계정에 컬러가 적용됨
syntax on
colorscheme desert

아래는 어디에 쓰는 경우인지 모르겠음...
~/.profile에
export TERMINFO=/usr/lib/terminfo
export TERM=xterm

 

2009년 11월 23일 월요일

[자바스크립트] 예 아니오 메시지창



<script>
function del_code(code){
  var isDel = confirm("정말로 삭제하시겠습니까?");
  if(isDel){
   document.location.href ="./del.php?id="+code;
  }
  else{
   return;
  }
 }
</script>

2009년 11월 18일 수요일

흠...

제주 하나투어에 들어온 이후...

많은 압박감을 받으며 작업을 진행하면서

스트레스도 많이 받았지만...

받는 스트레스만큼 실력도 조금씩 향상되는것을 느끼는것 같기도 하다...

최고의 개발자가 되고 싶은 꿈은 있지만...

너무 멀게만 느껴지는 현실...

[PHP] PHP 를 이용하여 웹페이지를 엑셀파일로 변환하여 다운받기



<a href="/down.php?>">[리스트 다운로드]</a>

===============down.php========================
<?
    header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=Excel.xls");
    header("Content-Description: PHP4 Generated Data");
    $sql    = "쿼리문입력'";
    $stmt    = mysql_query($sql, $connect);
    $num    = mysql_num_rows($stmt);
?>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<table border="1" cellpadding="1" cellspacing="0">
<tr>
 <td><b>NO</b></td>
 <td><b>제목</b></td>
 <td><b>작성자</b></td>
 <td><b>날짜</b></td>
 <td><b>조회수</b></td>
</tr>

<?
    for($i = 0; $i < $num; $i++)
    {
        $res = mysql_fetch_array($stmt);
        
        $j++;
        echo "<tr><td>$j</td><td>$res[subject]</td><td>$res[name]</td><td>$res[date]</td><td>$res[hit]</td></tr>";

    }
    flush();
    usleep(1);
?>

</table>

2009년 11월 14일 토요일

64bit APM설치 DSO방식 linux APM install



제목 : 64bit APM설치 DSO방식 linux APM install 기술문서

주식회사웹호스트 http://www.webhost.co.kr

본 문서는 Linux CentOS 5.2 Final 에 최적화되었습니다.
본 문서는 여러번의 테스트를 거쳐서 완성한 웹호스트에서 제공하는 문서입니다.


1. 리눅스 패키지 필수설치문서

- 리눅스시스템이 64bit 인지 먼저확인방법

uname -a

이 명령에서
Linux localhost.localdomain 2.6.18-92.1.22.el5 #1 SMP Tue Dec 16 11:57:43 EST 2008 x86_64 x86_64 x86_64 GNU/Linux

이런형식으로 x86_64 가 나오면 시스템은 64bit 환경이다.


- 필수 rpm설치 (for 64bit 를 위하여)

yum -y install freetype freetype-devel freetype-utils gd gd-devel libjpeg libjpeg-devel libpng libpng-devel curl curl-devel openssl flex gcc gcc-c++

위 명령은 root에서 수행할것. 기존에 있다면 알아서 걸러줌


- yum install 이 안됩니다. 왜그런가요?

vi /etc/resolv.conf 확인할 것
nameserver 168.126.63.1
로 수정하거나, 입력해서 네임서버질의가 정상적으로 되는지 확인할것



2. mysql 설치하기


우선 APM관련 rpm은 모두 삭제하라



rpm -e dovecot
rpm -e mysql
rpm -e php-common
rpm -e php-ldap
rpm -e php-cli
rpm -e php
rpm -e php-cli
rpm -e php-common
rpm -e httpd-manual
rpm -e system-config-httpd
rpm -e httpd
rpm -e mod_ssl
rpm -e mod_python
rpm -e webalizer
rpm -e mod_ssl
rpm -e httpd
rpm -e mod_perl
rpm -e httpd


vi install.sh <--아래내용입력
중요사항) 줄의 끝에 일일이 역슬래시문자를 반드시 붙이셔야 합니다.
제로보드게시물에 역슬래시를 표기하지 못하므로 보이지 않습니다.



./configure --prefix=/usr/local/mysql \
--localstatedir=/home/MySQL/DATA \
--sysconfdir=/etc --disable-shared \
--with-mysqld-user=mysql \
--with-charset=euckr \
--with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static \
--without-docs --without-bench \
--without-isam \
--with-extra-charsets=all \
--with-innodb \
--without-debug

[참고사항] utf8 경우, --with-charset=utf8 \
mysql 4.1.x 대 설치시는 --with-charset=euckr \



저장하고 빠진후
chmod 700 install.sh
./install.sh

make && make install

========================================
참고) 에러유형 libmysqlclient.so.15 생성안될때 (에러날때만 참고할것)

- ls libmysql/.libs 해서 libmysqlclient.so.15  있는지 확인 (make까지만 해본후 리스트확인)
- 설치후 mysql 입력시 위 so.15 에러날때 어떻게 해야하나?

* 아래와 같이 --disable-shared옵션을 제거한 후에 설치한다.

./configure --prefix=/usr/local/mysql \
--localstatedir=/home/MySQL/DATA \
--sysconfdir=/etc \
--with-mysqld-user=mysql \
--with-charset=euc_kr

/etc/ld.so.conf 에 내용추가
/usr/lib/mysql <--추가
ldconfig
=========================================
make && make install

mkdir -p /home/MySQL/DATA
/usr/local/mysql/bin/mysql_install_db
useradd -M -o -r -d /home/MySQL/DATA -s /sbin/nologin -c "MySQL Server" -u 27 mysql >/dev/null 2>&1
install -m 644 ./include/my_config.h /usr/local/mysql/include/mysql
mkdir -p /var/run/mysqld
chmod 0755 /var/run/mysqld
chown mysql:mysql /var/run/mysqld
rm -f /usr/local/mysql/share/mysql/mysql-*.spec
rm -f /usr/local/mysql/share/mysql/mysql-log-ratate
strip /usr/local/mysql/libexec/mysqld
ldd /usr/local/mysql/libexec/mysqld
chown -R mysql.mysql /home/MySQL/DATA
cp ./support-files/my-huge.cnf /etc/my.cnf
cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --level 3 mysqld on
chkconfig --list (체크하세요. 부팅시 자동으로 올라오게 함)

/etc/profile 수정(패스설정)
-------
# /etc/profile

# mysql config
  PATH="$PATH:/usr/local/mysql/bin"
---------
내용삽입

path는 로그아웃한 후 다시 로그인하면 반영됨.

/etc/rc.d/init.d/mysqld start









3. 중요 패키지설치

(1) zlib 소스설치하기
http://www.zlib.net/
wget http://www.zlib.net/zlib-1.2.3.tar.gz
cd zlib-1.2.3

기존 rpm 그대로 둘것 (삭제하면 안됨)
./configure -s --prefix=/usr/local/zlib-1.2.3
make libdir=/usr/lib64
make test
make libdir=/usr/lib64 install

vi /etc/ld.so.conf
---
include ld.so.conf.d/*.conf
/usr/X11R6/lib
/usr/local/lib
---
내용수정

ldconfig


==================================================
error) /usr/local/lib/libz.a 에러


mv /usr/local/lib/libz.a /usr/local/lib/_libz.a 로 rename 후
make clean / config-make-로 다시 진행


==================================================


(2) libpng 설치
  png 포맷을 다루기 위한 라이브러리입니다.

http://ftp.superuser.co.kr/pub/etc/libpng-1.2.10.tar.bz2
bzip2 -d libpng-1.2.10.tar.bz2
tar xvfp libpng-1.2.10.tar

[root@localhost local]# cd libpng-1.2.10
기존 rpm들은 그대로 둘것 (삭제하면 안됨)
[root@localhost libpng-1.2.5]# cp scripts/makefile.linux makefile
[root@localhost libpng-1.2.5]# make test && make install
[root@localhost libpng-1.2.5]# cd ..



(3) freetype 2 설치
글짜를 그릴 때 쓰는 라이브러리 입니다.

wget http://ftp.superuser.co.kr/pub/etc/freetype-2.2.1.tar.bz2
bzip2 -d freetype-2.2.1.tar.bz2
tar xvfp freetype-2.2.1.tar
 
[root@localhost local]# cd freetype-2.2.1
./configure --prefix=/usr/local/freetype-2.2.1 && make && make install

------------------------------

에러가 남 : 참고용


error) ft2build.h' hasn't been included yet!


vi /usr/include/freetype2/freetype/freetype.h


상단
#error "`ft2build.h' hasn't been included yet!"
#error "Please always use macros to include FreeType header files."
#error "Example:"
#error "  #include <ft2build.h>"
#error "  #include FT_FREETYPE_H"

이 줄 삭제처리후에 다시 수행

-------------------------------


(4) libjpeg 설치
jpg 포맷을 다루는 라이브러리 입니다.

[root@localhost local]# wget http://ftp.superuser.co.kr/pub/etc/jpegsrc.v6b.tar.gz
[root@localhost local]# tar xvfz jpegsrc.v6b.tar.gz
[root@localhost local]# cd jpeg-6b
rpm -qa|grep libjpeg

[root@localhost jpeg-6b]# ./configure --enable-shared --enable-static --prefix=/usr/local/jpeg-6b
[root@localhost jpeg-6b]# make && make test
[root@localhost jpeg-6b]# make install <-- 에러발생할 것임
mkdir -p /usr/local/jpeg-6b/bin
mkdir -p /usr/local/jpeg-6b/include
mkdir -p /usr/local/jpeg-6b/lib
mkdir -p /usr/local/jpeg-6b/man/man1
등등... 없다는 폴더는 만들어줄것
[root@localhost jpeg-6b]# make install
[root@localhost jpeg-6b]# cd ..

위 설치법에서 특별한 것은 중간에 /usr/local/man/man1이라는 디렉토리를 생성합니다. 이유는 make install 하면 /usr/local/man/man1 디렉토리가 없다고 멘 페이지가 설치가 되지 않는다는 에러가 납니다.



(5) gd 설치
그래픽 라이브러리 입니다.
wget http://ftp.superuser.co.kr/pub/etc/gd-2.0.33.tar.gz
[root@localhost local]# tar xvzfp gd-2.0.33.tar.gz
[root@localhost local]# cd gd-2.0.33

[root@localhost gd-2.0.33]# ./configure --prefix=/usr/local/gd-2.0.33 --with-jpeg=/usr/local/jpeg-6b/ --with-freetype=/usr/local/freetype-2.2.1/
[root@localhost gd-2.0.33]# make && make install





4. 아파치의 설치





wget http://ftp.kaist.ac.kr/Apache/httpd/apache_1.3.41.tar.gz

64bit 에서는 -fPIC 옵션을 반드시 줘야 shared object 가 64bit로 된다.
검사법 : file /usr/local/apache/libexec/mod_env.so - 64bit x86-64표시되는지 확인할것



tar xvfzp apache_1.3.41.tar.gz
cd apache_1.3.41
export CFLAGS="${CFLAGS} -fPIC -DHARD_SERVER_LIMIT=1024 -DDEFAULT_SERVER_LIMIT=1024"
./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE --enable-module=so --enable-shared=max
make && make install

아파치의 설치스크립트 복사완료

 cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd



참고사항) 모듈추가하기

기본으로 설치되는 모듈들
-rw-r--r--  1 root root   7587 Jul 21 08:56 httpd.exp
-rwxr-xr-x  1 root root   5543 Jul 21 08:56 libhttpd.ep
-rwxr-xr-x  1 root root 357628 Jul 21 08:56 libhttpd.so
-rwxr-xr-x  1 root root   9814 Jul 21 08:56 mod_access.so
-rwxr-xr-x  1 root root   8164 Jul 21 08:56 mod_actions.so
-rwxr-xr-x  1 root root  10776 Jul 21 08:56 mod_alias.so
-rwxr-xr-x  1 root root   6099 Jul 21 08:56 mod_asis.so
-rwxr-xr-x  1 root root  11160 Jul 21 08:56 mod_auth.so
-rwxr-xr-x  1 root root  28787 Jul 21 08:56 mod_autoindex.so
-rwxr-xr-x  1 root root  14864 Jul 21 08:56 mod_cgi.so
-rwxr-xr-x  1 root root   7401 Jul 21 08:56 mod_dir.so
-rwxr-xr-x  1 root root   7212 Jul 21 08:56 mod_env.so
-rwxr-xr-x  1 root root  16484 Jul 21 08:56 mod_imap.so
-rwxr-xr-x  1 root root  36685 Jul 21 08:56 mod_include.so
-rwxr-xr-x  1 root root  16988 Jul 21 08:56 mod_log_config.so
-rwxr-xr-x  1 root root  15126 Jul 21 08:56 mod_mime.so
-rwxr-xr-x  1 root root  28782 Jul 21 08:56 mod_negotiation.so
-rwxr-xr-x  1 root root   9746 Jul 21 08:56 mod_setenvif.so
-rwxr-xr-x  1 root root  17913 Jul 21 08:56 mod_status.so
-rwxr-xr-x  1 root root   8426 Jul 21 08:56 mod_userdir.so
총 20개

추가해줘야 하는것들
1. libphp4.so : php4
2. mod_bandwidth.c
3. mod_gzip.c
4. mod_headers.c
5. mod_rewrite.c
6. mod_throttle.c
7. mod_url.c
이상 7개

설치하기

1. libphp4.so : 이 것은 php4가 설치되면 아래에서 자동설치됨
2. mod_bandwidth.c를 구해서 설치한다. (웹호스트 자료실에 있습니다)
3. mod_gzip.c (웹호스트자료실에 있습니다)
4. mod_headers.c (웹호스트 자료실에 있습니다)
5. mod_rewrite.c : src/modules/standard/ 폴더에 있습니다.(아파치소스폴더)
6. mod_throttle.c : 웹호스트자료실에 있습니다
7. mod_url.c : 웹호스트자료실에 있습니다.

------------------------------------------------------
- 아파치소스밑에 모듈들이 있다. 확장자 *.c 참조할것
- 2개는 별도로 구할것 mod_throttle.c 와 mod_bandwidth.c 는 yahoo.com에서 구할수 있다.
- 모듈 추가하는 법 (DSO방식에서)
/usr/local/apache/bin/apxs -i -a -c  ./mod_bandwidth.c

참고) apache DSO vs static 방식의 차이점을 이해할것 - 되도록 DSO로 설치권장~
--------------------------------------------------------






5. php4 의 설치 (php4 설치방식 동일합니다)



php 컴파일을위한 모듈경로  변경 (64bit용)


cd /usr/lib


mv  libjpeg.so libjpeg.so__
ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so


mv libexpat.so  libexpat.so__
ln -s /usr/lib64/libexpat.so /usr/lib/libexpat.so


mv /usr/local/lib/libz.a /usr/local/lib/libz.a__
ln /usr/lib64/libz.a  /usr/local/lib/libz.a


mv /usr/lib/libssl.a /usr/lib/libssl.a__
ln /usr/lib64/libssl.a /usr/lib/libssl.a



wget http://ftp.superuser.co.kr/pub/php/php-4.4.4.tar.gz
tar xvzfp php-4.4.4.tar.gz
cd php-4.4.4

첫번째방법은 gd까지 모두 포함해서 설치하는 것이다.
관련 패키지를 아래 apm문서를 보고 모두 설치하라. gd, zlib, jpeg등등...
주의 : zlib-1.2.3 일때~

install.sh 라는 파일을 하나 만든다.
vi install.sh

./configure --prefix=/usr/local/php \
--libdir=/usr/lib64 \
--with-apxs=/usr/local/apache/bin/apxs \
--with-exec-dir=/usr/local/apache/bin \
--with-config-file-path=/usr/local/php/lib \
--with-mysql=/usr/local/mysql \
--with-zlib \
--with-gd \
--with-gd-dir=/usr/local/gd-2.0.33 \
--with-jpeg-dir=/usr/local/jpeg-6b \
--with-png \
--with-freetype-dir=/usr/local/freetype-2.2.1 \
--with-openssl \
--with-mod_charset \
--with-language=korean \
--with-charset=euc_kr \
--with-gdbm \
--with-ldap \
--with-xml \
--with-regex=php \
--with-iconv \
--with-gettext \
--enable-module=so \
--enable-memory-limit \
--enable-track-vars \
--enable-ftp \
--enable-sockets \
--enable-trans-sid \
--enable-magic-quotes \
--enable-sysvsem  \
--enable-sysvshm  \
--enable-mailparse  \
--enable-sigchild  \
--enable-calender  \
--enable-inline-optimization  \
--disable-debug \
--enable-mbstring

저장하고 빠진후
chmod 700 install.sh
./install.sh


utf8로 설치시 --with-charset=utf8 \ 수정할것


두번째는 이 중 간략하게만 설치하는 방법이다.

 make && make install
 cp php.ini-dist /usr/local/apache/conf/php.ini





[ zend의 설치 ]
zend.com 에서 64bit 용 tar.gz을 다운로드한다.
- 상단 download 클릭
- 가입하고 다운할것

tar xvzfp ZeodOptimizer-3.3.2....tar.gz
 cd ZendOptimizer-3.3.2....
 ./install.sh - 진행에 따라 php.ini 를 복사한 /usr/local/apache/conf 입력해줄것
나머진 Next 엔터로 진행







이제
chkconfig --level 3 httpd on
하면 에러가 발생한다. 이것을 해결하기 위해서
vi /etc/rc.d/init.d/httpd
제일 하단에 아래 3줄을 삽입하고 저장하자.

# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 90 90
# description: A very fast and reliable WebServer engine.

다시
chkconfig --level 3 httpd on
OK


이상 64bit APM 설치문서 끝.


작성 : (주)웹호스트 http://www.webhost.co.kr


작성 : 2009-02-09

[리눅스] 64Bit OS Sourece 컴파일시 참고사항



/usr/bin/ld: /usr/local/ssl/lib/libssl.a(s2_srvr.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC


이런 오류가 발생할 경우.. 64bit 에서 configure 에 추가해야 할 사항이 있다.



위의 경우 64bit OS 에서 mod-ssl 을 지원 하기 위해 compile 을 할때 나타나며


해결 방법은 다음과 같다.



./config -fPIC && make && make install



www.openssl.or.kr 에서는 -fPIC 옵션에 대해 다음과 같이 설명한다.


./config -fPIC로 해야지만, DSO판 작성시에 필요한 PIC(Postion Independent Code) 옵션을 지정해 configure 한다.

2009년 11월 3일 화요일

[자바스크립트] 레이어 펼침메뉴



아래의 예제 소스를 응용하시면 제작이 가능합니다.

레이어를 보였다 안보였다 하는 방법 입니다.


▶ 소스
아래의 --------- 사이의 파란 글씨의 내용이 소스입니다..
------------------------------------------------------------

<style type="text/css">
<!--
A:link {font-family: 굴림체; font-size:9pt; text-decoration: none;}
A:visited {font-family: 굴림체; font-size:9pt; text-decoration: none;}
A:hover {font-family: 굴림체; font-size:9pt;text-decoration:overline underline;}
-->
</style>

<script language="JavaScript">
<!--
function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_showHideLayers() { //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; }
}
//-->
</script>

<table width="600" border="0" cellspacing="0" cellpadding="0">
<tr><td height="25">
<A href="문서1의 주소" onmouseover="MM_showHideLayers('menu1','','show','menu2','','hide')">메뉴1</A>
<A href="문서5의 주소" onmouseover="MM_showHideLayers('menu1','','hide','menu2','','show')">메뉴2</A>
</td></tr>
</table>
<div id="menu1" style="position:absolute; left:10px; top:40px; width:500px; height:7px; z-index:2; visibility: hidden">
<A href="문서1의 주소">문서1</a>
<A href="문서2의 주소">문서2</a>
<A href="문서3의 주소">문서3</a>
<A href="문서4의 주소">문서4</a>
</div>
<div id="menu2" style="position:absolute; left:45px; top:40px; width:500px; height:7px; z-index:1; visibility: hidden">
<A href="문서5의 주소">문서5</a>
<A href="문서6의 주소">문서6</a>
</div>


------------------------------------------------------------


▶ 소스 설명

1.
<style ~~> 부터 </style> 태그까지는 링크된 글씨폰트, 글씨크기, 밑줄, 윗줄 등에 대한 스타일 지정입니다.


2.
<table ~~> 부터 </table> 태그까지는 메뉴로 사용하는 레이어와 테이블을 이용한 부메뉴 부르기입니다.

참고) 레이어?
HTML 문서에서 레이어(Layer)란 화면 어디든 사용자가 나타나는 위치를 지정할 수 있는 문단을 말합니다. 레이어는 화면에서 안보이게 숨기거나 나타낼 수 있으며 크기도 지정할 수 있습니다.


3.
<script ~~> 부터 </script> 태그까지는 상위 메뉴를 눌렀을 때 상위 메뉴의 아래에 가로로 부메뉴 나타나게 하는 자바스크립트입니다.


4.
<A href="문서1" onmouseover="MM_showHideLayers('menu1','','show','menu2','','hide')">메뉴1</A>

주메뉴의 부메뉴를 부르는 명령입니다.
menu1이라는 부메뉴(<div> ~ </div> 태그로 만든 레이어의 내용들)를 보여주고(show) id가 "menu2"인 부메뉴 레이어는
감추라는(hide) 명령입니다.

주메뉴에 마우스를 올렸을 때 부메뉴로 나타내고 싶은 레이어를 MM_showHideLayers()에서 '레이어 ID','','show'처럼
지정을 하고 다른 부메뉴 레이어들은 화면에 안보이게 '레이어 ID','','hide'로 숨겨줍니다.

만약 주메뉴와 부메뉴가 각각 3개이고 각 부메뉴 레이어의 id가 menu1, menu2, menu3이라면 마우스가 주메뉴나
부메뉴 중 어느 곳에 위치해 있다가 다른 주메뉴를 선택할 때 항상 선택한 주메뉴의 부메뉴만이 화면에 나타나야 합니다.
안그러면 레이어들이 화면에 겹쳐서 잘 안보일 수 있기 때문입니다.

이런 경우에는 MM_showHideLayers()에서 '레이어 ID','','hide','레이어 ID','','hide'처럼
다른 부메뉴 레이어들은 모두 숨깁니다.(hide)

그런 후 '레이어 ID','','show'로 화면에 나타낼 부메뉴 레이어를 show를 해줍니다. show와 hide 하는 것은
어느 것을 먼저 하느냐는 상관없습니다.

예)

onmouseover="MM_showHideLayers('menu1','','show','menu2','','hide','menu3','','hide')"

이것과

onmouseover="MM_showHideLayers('menu2','','hide'.'menu3','','hide','menu1','','show')"

이것처럼 show 되는 부메뉴를 먼저 써줘두 되고 hide 되는 부메뉴를 먼저 써주든 상관 없습니다.
단, '레이어 ID', '', 'show 또는 hide' 라는 형식은 지켜야 합니다.


부메뉴는 div 태그를 이용하여 레이어로 각각 만듭니다. 레이어의 id는 주 메뉴에서 show를 한 id와 같아야 합니다.


5.
<div id="menu1" style="position:absolute; left:100px; top:30px; width:500px; height:7px; z-index:2; visibility: hidden">
<font size="2" color="white">
<A href="문서1의 주소">문서1</a> |
...........
<A href="문서4의 주소">문서4</a></font></div>


부메뉴의 내용을 레이어에 지정하는 것입니다.
id="menu1"은 이 부메뉴 레이어의 id(아이디)가 menu1이라는 것입니다. id는 부메뉴를 화면에 보여주거나(show) 숨겨줄 때(hide) 사용합니다.
style=은 부메뉴 레이어에 대한 설정을 해주는 것입니다.
  • position:absolute : 브라우저 화면의 왼쪽 위 모서리를 기준으로 레이어의 위치를 지정한다는 의미입니다.
  • left:100px : 브라우저 화면의 왼쪽에서부터 100픽셀 떨어진 위치에 레이어가 나타난다는 의미입니다.
  • top:30px : 브라우저 화면의 위쪽에서부터 30픽셀 떨어진 위치에 레이어가 나타난다는 의미입니다.
  • width:500px : 레이어의 가로 크기를 500픽셀로 지정한다는 의미입니다.
  • height:7px : 레이어의 세로 크기를 7픽셀로 지정한다는 의미입니다.
  • z-index:2 : z는 X, Y 좌표처럼 좌표에 해당하는 것으로 종이를 10장을 책상에 놓아둔다면 제일 아래쪽의 있는 종이는 z-index:1, 맨 위에 있는 종이는 z-index:10과 같다고 생각하시면 됩니다.
  • visibility: hidden : 레이어가 화면에 나타나지 않게 하라는 의미입니다. 레이어가 화면에 나타나면 자동으로 visibility: visible 가 됩니다.
    위의 style의 left와 top의 위치를 조정해서 부메뉴가 나타나는 위치는 조절할 수 있구요.

    메뉴를 추가할 때에는 주메뉴 먼저 추가로 만들어 주고 부메뉴 레이어 중 하나를 복사한 후 id를 고쳐주고 위치도 조절하고 하면 됩니다.

    다른 주메뉴를 선택했을 때 나머지 주메뉴들에 딸린 부메뉴 레이어들은 모두 숨겨지도록 hide 시켜주는 것 잊지 말구요..

    부메뉴가 없는 주메뉴가 필요하다면 show 시켜줄 부메뉴 레이어가 없으니 MM_showHideLayers()에서 '레이어 ID', '', 'hide'만 써주면 되겠죠.

    부메뉴 레이어도 따로 만들 필요도 없구요.
  • [자바스크립트] 레이어 펼침메뉴 소스



    <script language="JavaScript">
    function hiddn_layer(layer_name)
    {
    if (layer_name == '') return;
    eval(layer_name+".style.display='none'")
    }

    function show_layer(layer_name)
    {
    if (layer_name == '') return;
    eval(layer_name+".style.display='block'")
    }
    </script>
    <a href='#' OnClick="show_layer('layer01'); hiddn_layer('layer02');">메뉴1</a> <a href='#' OnClick="hiddn_layer('layer01');show_layer('layer02');">메뉴2</a>

    <div id="layer01" style='display:none;'>1 부메뉴1 | 1 부메뉴2 | 1 부메뉴3 | 1 부메뉴4</div>
    <div id="layer02" style='display:none;'>2 부메뉴1 | 2 부메뉴2 | 2 부메뉴3 | 2 부메뉴</div>