2009년 12월 30일 수요일

XE 설치

ftp.sayclub.com
/pub/linux/centos/5.2/os/i386

useradd 만들id
(-D옵션을 통해 루트 디렉토리를 정할 수 있다)
passwd 만들id
groupadd 그룹이름


  1. apache 2.2.11
    다운로드 : http://httpd.apache.org/
  2. php 5.2.9
    다운로드 : http://php.net/
  3. mysql 5.0.77
    다운로드 : http://mysql.com/ mysql-5.0.77-linux-i686-icc-glibc23.tar.gz
    단, mysql은 성능 향상을 위해서 직접 컴파일 하지 않고 Intel C/C++ compiled 를 사용하였습니다.
  4. Zend Optimizer 3.3.3
    다운로드 : http://zend.com
  5. xCache 1.2.2 (공식사이트 적용 결과 eAccelerator로 채택)
    다운로드 : http://xcache.lighttpd.net/
  6. eAccelerator 0.9.5.3
    다운로드 : http://bart.eaccelerator.net/source/0.9.5.3/

 

MySQL 5.0.77 설치

  1. 다운 받은 mysql-5.0.77-linux-i686-icc-glibc23.tar.gz 를 /usr/local/msyql-5.0.77-linux-i686-icc-glibc23.tar.gz 로 복사합니다.
    파일 이름은 버전, glibc 버전에 따라 다를 수 있습니다.
    /bin/cp msyql-5.0.77-linux-i686-icc-glibc23.tar.gz /usr/local
  2. /usr/local 디렉토리로 이동합니다.
    cd /usr/local
  3. 압축 해제를 합니다.
    tar xvfz msyql-5.0.77-linux-i686-icc-glibc23.tar.gz
  4. mysql 버전 업그레이드시마다 디렉토리 명을 재지정하지 않기 위해 심볼릭 링크를 겁니다.
    ln -s msyql-5.0.77-linux-i686-icc-glibc23 mysql
    위와 같이 하면 차후부터 /usr/local/mysql 을 mysql의 경로로 지정하면 됩니다.
    다만 /usr/local/mysql/data 디렉토리의 경우 잘 관리를 해주어야 합니다.
  5. mysql에서 권장하는 데로 mysql 계정과 그룹을 생성하여 줍니다.
    groupadd mysql
    useradd -g mysql mysql
  6. mysql디렉토리에 권한을 부여합니다.
    cd /usr/local/mysql
    chown -R mysql .
    chgrp -R mysql .
  7. DB 인스톨을 합니다. (Intel C/C++ 컴파일 버전은 따로 컴파일 할 필요 없이 DB 생성을 하면 됩니다.
    ./scripts/mysql_install_db --user=mysql
    chown -R root .
    chown -R mysql data
  8. mysql 대몬을 시작합니다.
    ./bin/mysqld_safe --user=mysql &
  9. 새롭게 MySQL을 설치한 경우 MySQL ROOT 비밀번호를 지정해주어야 합니다.
    ./bin/mysqladmin -u root password '비밀번호'

이제 mysql 설치는 끝났고 /usr/local/mysql/bin/mysql -u root -p 명령을 통해서 root 계정으로 접속 테스트를 하면 됩니다.

*주의: XE를 설치하기전에 시스템을 재부팅하면 mysql 을 시작할 수 없다.

mysql 이 시작되지 않으면 다시 설치하여야 한다.

 

Error


Apache, PHP 컴파일 설치

PHP는 Apache의 모듈로 탑재되어 동작을 하기에 Apache과 PHP는 같이 설치를 하는 것이 일반적입니다.

여기 사용된 Apache, PHP파일은 다음과 같습니다.

  • Apache : httpd-2.2.11.tar.gz
  • PHP : php-5.2.9.tar

프로그램 버전에 따라 다른 이름을 가질 수 있습니다만 각 압축을 해제한 파일을 아래와 같은 위치에 두도록 합니다.

  • Apache : /root/httpd
  • PHP : /root/php

아래와 같은 순서로 컴파일 하시면 됩니다.

  1. 아파치
    [root@localhost apache]# ./configure --prefix=/usr/local/apache --enable-so --enable-modules=so --with-mpm=worker --enable-rewrite
    [root@localhost apache]# make
    [root@localhost apache]# make install
    다양한 옵션을 줄 수 있지만 최소한의 설치만을 위해서 위와 같이 enable so, enable rewrite 만 옵션으로 두고 컴파일을 합니다.
    설치되는 경로는 /usr/local/apache 로 합니다.
    /usr/local/apache/bin/apachectl start
    위의 명령으로 웹서버를 실행하여 확인하실 수 있습니다.

    noacceptable C compiler found in $PATH 에러가 나오는 경우

  2. PHP
    PHP의 경우 다양한 연동 프로그램이 필요할 수 있습니다.
    예를 들어 XE에서 썸네일을 만들기 위해 GD Library가 필요하기도 하고 png, gif등을 다루기 위한 라이브러리가 필요하기도 합니다.
    소개하고 있는 CentOS에서는 yum을 이용하여 관련 라이브러리들을 먼저 설치할 수 있고 다른 리눅스 OS도 비슷한 라이브러리 설치 도구를 제공할 것입니다.
    1. 필요한 라이브러리 설치 (CentOS)
      yum -y install libxml2 libjpeg libpng freetype
    2. PHP 컴파일

      에러 나는 경우


      펼쳐두기..

      # tar xvfj php-5.2.9.tar.bz2
      # mv php-5.2.9 /root/php
      # cd /root/php
      # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql --enable-magic-quotes --disable-dmalloc --enable-bcmath --enable-gd-native-ttf --enable-sysvsem --enable-sysvshm --enable-inline-optimization --enable-mbstring --enable-mbregex --enable-gd-native-ttf --enable-ftp --with-jpeg-dir --with-freetype-dir --with-curl --with-zlib --with-gd  --with-ttf --with-iconv --disable-debug
      make
      make install
    3. PHP의 make install 시에 libmysqlclient.so.15 를 찾을 수 없다는 에러가 나오면 다음과 같이 해당 파일을 symbolic link로 처리할 수 있습니다.
      ln -s /usr/local/mysql/lib/libmysqlclient.so.15.0.0 /usr/lib/libmysqlclient.so.15
      다시 make install 하면 됩니다.
    4. php.ini 파일 복사/ 설정
      php 구동시 기본 설정을 읽는 php.ini 파일을 여기서는 /usr/local/php/lib/php.ini로 복사 합니다.
      cp php.ini-dist /usr/local/php/lib/php.ini
      위 파일을 열고 아래 부분을 수정합니다.
      register_globals = Off
      post_max_size = 200M
      file_uploads = On
      upload_tmp_dir = /tmp
      uplaod_max_filesize = 200M
      allow_url_fopen = Off
      allow_url_include = Off
      위의 설정중 이미 동일하게 설정된 것도 있을 수 있습니다.
      post_max_size는 post되는 정보의 사이즈를 설정하는 것이고 upload_max_filesize는 업로드 가능한 최고용량이니 서비스에 맞게 적절히 수정하시면 됩니다.
  3. Zend Optimizer 설치
    PHP의 기본 상태로 사용시 성능이 매우 저조한데 이를 위해 Zend Optimizer를 설치합니다.
    다운로드 받은 Zend Optimizer 압축 해제후 아래와 같이 실행하면 자동으로 설치 됩니다.
    ./install
    위 스크립트를 실행하면 설치 스크립트가 자동으로 위치를 읽어서 진행을 하게 됩니다.
    Zend Optimizer를 설치하면 /etc/php.ini 는 /usr/local/Zend/etc/php.ini 로 대체됩니다.
    관련문서1 관련문서2
  4. Apache에 PHP 설정하기
    아파치 설정파일에 PHP 실행을 연동하기 위한 설정을 합니다.
    /usr/local/apache/conf/httpd.conf 파일을 열어서 아래와 같은 부분을 변경합니다.
    LoadModule php5_module        modules/libphp5.so
    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
    <IfModule mime_module>
        ...
        AddType application/x-httpd-php .php
        ...
    </ifModule>
  5. xCache 연동 (eAccelerator로 대체)

  6. eAccelerator 설치

    bash: phpize: command not found

    다운로드 받은 파일의 압축을 풀고 다음과 같이 설치하시면 됩니다.

    # tar xvfj eaccelerator-0.9.5.3.tar.bz2
    # cd eaccelerator-0.9.5.3
    # ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config
    # make && make install
    그리고 /usr/local/Zend/etc/php.ini 파일을 열어서 Zend Optimizer 문 위에 아래와 같은 내용을 입력하세요.
    zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-zts-20060613/eaccelerator.so"
    eaccelerator.shm_size="16"
    eaccelerator.cache_dir="/var/cache/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="0"
    eaccelerator.shm_ttl="0"
    eaccelerator.shm_prune_period="0"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"
    eaccelerator.log_file="/var/log/eaccelerator.log"
    * /var/cache/eaccelerator 디렉토리를 생성하셔야 합니다.
    # mkdir /var/cache/eaccelerator
    # chown nobody
    /var/cache/eaccelerator
    # chmod 700 /var/cache/eaccelerator

    정상적으로 설치 되었다면 위와 같이 eAccelerator, Zend Optimizer 둘다 보여야 합니다.

  7. phpMyAdmin 설치

Memo
mysql 시작
/usr/local/mysql/bin/mysqld --user=mysql &
아파치 시작
/usr/local/apache/bin/apachectl restart

/usr/local/Zend/etc/php.ini
/usr/local/apache/htdocs
/usr/local/apache/conf/httpd.conf
/usr/lib/php/modules/eaccelerator.so
/etc/vsftpd/vsftpd.conf

펼쳐두기..



#vi /usr/local/apache/htdocs/conf/httpd.conf
#URL Rewrite 설정
<Directory "/usr/local/apache/htdocs">
...
AllowOverride All
...
</Directory>
비어있는 디렉토리 접근 불가
Options Indexes FollowSymLinks -> Options FollowSymLinks
ssh 설정
#vi /etc/ssh/sshd_config
#PermitRootLogin yes -> PermitRootLogin no
/* vsftpd 설정 */
/etc/vsftpd/vsftpd.conf
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
anonymous_enable=NO
#vi /etc/vsftpd/chroot_list




리눅스 압축 명령어

Linux 에서 주로 사용되는 압축 명령들

1) tar
  home 라는 디렉토리를 압축 하는 예제

  압축 : tar cvfz home.tgz /home
  압축 해제  : tar xvfz home.tar

2) tar와 gz이 같이 있을 경우 압축 해제(tgz, tar.gz)

       gzip -dc 화일명.tgz | tar -xvf -
       tar -xvfz 화일명.tgz

3) gzip 명령
    압축하기 : gzip 화일명 =>  gzip file.tar
    압축해제 : gzip -d 화일명  ==>  gzip -d file.tar.gz
 
4) compress 압축 명령
  압축하기 : compress 화일명
  압축해제 : uncompress 화일명.z
 
5) zip : unzip 화일명.zip

6) compress와 tar의 경우 해제시(tar.z)

  uncompress -c 화일명 | tar xvf -

http://www.fduser.org/blog/73

2009년 12월 12일 토요일

SSH 설치부터 접속까지. - Linux CentOS

  1. ssh 설치 - 보통은 이미 설치되어 있다.

  2. 방화벽 허용
    ssh (23) 포트를 풀어준다.

  3. Root 계정 비허용
    #vi /etc/ssh/sshd_config
    #LoginGraceTime 2m
    PermitRootLogin no
    #StrictModes yes
    #MaxAuthTries 6
    #PermitRootLogin yes 되있는 것을 PermitRootLogin no 라고 고침.

  4. 접속
    putty 라는 프로그램을 사용한다. (무설치)
    필자는 22번 포트에 아이피 주소를 적고 접속하였다.



리눅스 계정 기본 사용법

리눅스 기본 명령어

 ls 명령어 :  ls 는 파일의 목록을 보는 명령어이다. 이 명령어에는 많은 옵션이 있으며 여기에서는 가장 많이 사용되는 몇 가지만 알아보도록 한다.

 $ ls <옵션>

 F : 파일 유형을 나타내는 기호를 파일명 끝에 표시한다
 l : 파일에 관한 상세 정보를 나타낸다.
 a : dot 파일(.access 등)을 포함한 모든 파일을 나타낸다.
 t : 파일이 생성된 시간별로 나타낸다.

cat 명령어 : 파일의 내용을 화면에 출력한다.

 $ cat 파일이름

 mv 명령어 : 파일의 위치를 옮기거나 이름을 바꿀 경우 사용된다.

 이름 변경 : $ mv old_name new_name
 파일의 위치변경 : $ mv file ../main/new_file

 cp 명령어 : 파일을 복사한다

 $ cp file_a file_b (file_a을 file_b이란 이름으로 복사한다)
 $ cp file_1 ../main/file_b (file_1을 ../main/file_b이란 이름으로 복사한다)

 more 명령어 cat 명령어는 실행을 시키면 한 화면을 넘기는 파일일 경우 그 내용을 모두 볼 수가 없다. 하지만 more 명령어를 사용하면 한 화면 단위로 보여줄 수 있어 유용하게 사용된다.

 Space bar : 다음 페이지
 Return(enter) key : 다음 줄
 v : vi 편집기로 전환
 /str : str 문자를 찾음
 b : 이전 페이지
 q : more 상태를 빠져나감
 h : 도움말
 = : 현재 line number를 보여줌

 chmod 명령어 : 사용자에 대한 파일의 접근을 제한하는데 사용된다.

$ chmod 755 file_name

 rm 명령어 : 파일을 삭제한다.

 $ rm <파일이름> (파일을 삭제한다)
 $ rm -r <디렉토리> (디렉토리 전체를 삭제한다)
 $ rm -i a.* (a로 시작하는 모든 파일을 일일이 삭제할 것인지 확인하면서 삭제)

 mkdir 명령어 : 디렉토리를 만든다.

 $ mkdir <디렉토리이름>

 pwd 명령어 : 현재 자신의 작업 디렉토리를 보여준다.

 $ pwd    /home/hosting_users/jasko21/www/ec01

 who 명령어 : 현재 시스템에 login 하고 있는 사용자의 리스트를 보여준다.

 $ who

 whereis 명령어 : 소스, 실행파일, 메뉴얼 등의 위치를 알려줌

 $ whereis perl (perl의 위치를 알려준다)

 새로운 파일을 만드는 방법

 $ vi newfile (vi 편집기 상태로 들어감)
 $ touch newfile (빈 파일만 생성됨)
 $ cat > newfile (vi 편집기 상태로 들어감, 문서 작성후 Ctrl+D로 빠져나옴)

 파일 내용만 보기

 $ cat filename (파일의 내용을 모두 보여줌)
 $ head -n filename (n줄 만큼 위세서부터 보여줌)
 $ tail -n filename (n줄 만큼 아래에서부터 보여줌)

 파일 (디렉토리) 압축 하고 풀어보기

 압축파일풀기 : tar -xvf FILE_NAME.tar
 압축하기 : tar -cvf FILE_NAME.tar 압축할파일명 혹은 디렉토리명

VI 문서 편집기 사용하기

파일 열기 및 종료

 열기 : vi letter.txt
 :w ; 저장(write)
 :q ; 종료(quit)
 ZZ ; 종료
 :wq ; 저장 후 종료
 :w! ; 강제 저장
 :q! ; 강제 종료

편집모드

 i ; 커서앞에 텍스트 삽입
 a ; 커서뒤에 텍스트 삽입
 o ; 현재 행 아래에 텍스트 삽입

텍스트 교체

 r ; 한 글자만 교체
 R ; 커서가 있는 자리부터 여러문자 교체

커서이동

 ←, h, <del>
 ↓, j
 ↑, k
 →, l

신속이동

 w ; 오른쪽으로 특수문자 혹은 한단어의 처음으로 이동
 b ; 왼쪽으로 특수문자 혹은 한단어의 처음으로 이동
 W ; 오른쪽으로 한단어의 처음으로 이동
 B ; 왼쪽으로 한단어의 처음으로 이동

한 행 안에서의 이동

 0 (숫자) ; 행의 맨 처음으로 이동
 $ ; 행의 맨 마지막으로 이동

페이지 이동

 G ; 문서의 맨 끝 행으로 이동
 nG ; nqjsWo 행으로 이동
 C-f ; 한페이지 아래로 이동
 C-b ; 한페이지 위로 이동

삭제명령

 dw ; 한 단어 삭제
 dd ; 한 줄 삭제
 D ; 커서부터 행 끝까지 삭제
 x ; 한 글자 삭제

숫자와 명령의 조합 예제

 10j ; 10줄 위로 이동
 10x ; 10글자 삭제
 5dd ; 5줄 삭제

복사 & 붙여넣기

 x, dw, dd, D → p ; 커서 뒤에 임시 버퍼내용 추가
 x, dw, dd, D → P ; 커서 앞에 임시 버퍼내용 추가

텍스트 복사

 yw ; 한단어 복사
 y$ ; 커서부터 행끝까지 복사
 yy ; 한줄 모두 복사

2줄 붙이기 ; J

텍스트 탐색

 / ; 전방 탐색
 ? ; 후방 탐색
 n ; 같은방향으로 탐색 계속
 N ; 반대방향 탐색 계속
 /  ; 전방탐색 계속
 ?  ; 후방탐색 계속

행 번호 붙이기

 :set nu
 :set nonu ; 번호 없애기

특정 행 번호로 이동

 :1 ; 1번째 행으로 이동
 :$ ; 마지막 행으로 이동
 :$= ; 현재 문서의 총 줄(행)수
 :.= ; 현재위치의 행번호

범위 지정

 v

 :1,10d ; 1번행부터 10번행가지 삭제(d)
 :.,$d ; 현재부터 마지막 행까지 삭제
 :0,$-4d ; 파일의 맨처음(0;가상번호)부터 끝까지 삭제하되 4는 제외
 :.-1,.+1y(:.-,.+y)(:-,+y) ; 현재 행을 기준으로 아래위 3행을 복사
 :0,$y ; :%y ; 모든 행 복사

일부분 저장

 :1,.w part1.txt ; 1행부터 현재 행까지 part1.txt 라는 이름으로 저장
 :1,.w >>part.txt ; 1행부터 현재 행까지를 part.txt 파일에 추가

다른파일 내용 (읽기) 삽입

 :r insert.txt ; 커서위치 아래에 insert.txt  파일을 추가
 1r insert.txt ;
 0r insert.txt ;

텍스트 검색 및 교체

 :범위s/찾는문자열/교체할문자열/옵션
 :%s/girl/woman/g (※ g ; global)
 :0,.s/^/>> /g ; 맨 처음부터 현재행에 대하여 행의 맨 앞에 >>를 붙임 (※ ^ 는 가상의 맨 앞)
 :.-3,.+5s/$/<</g ; 주어진 범위의 각 행 끝에 << 문자 추가 (※ $는 가상의 맨 마지막)

※ . ; 현재 행 ^ ; 가상의 맨 처음 $ ; 가상의 맨 처음 % 현 문서 전체

특수문자가 들어간 문자열의 교체

 :%s/\/usr/\/usr/local/g ; /usr를 찾아서 /usr/local 로 교체
※ \ (역 슬래쉬) 특수문자(/)의 해석방지

외부 유닉스 명령어 실행

 :!명령
 :sh ;
 :r :ls ; 유닉스 명령의 실행 결과 화면을 현재 편집중인 내용에 불러들임

필터와 명령

 :%!tr [a-z][A-Z] ; 전체 텍스트의 영문자를 대문자로 치환
 :%!sort ; 정렬

 


http://www.jasko.co.kr/xe/?mid=extLinux

2009년 12월 11일 금요일

IE6 커닝 페이퍼: IE6 버그 25+ 해결하는 방법

웹 색상 총 정리

2009년 12월 1일 화요일

IE6 Background Flicker

메뉴부분 hover작동시 번쩍거리는 현상이 IE6에서 발생하게 되는데, 특히 IE6에서 도구->인터넷옵션->임시인터넷 파일설정->저장된 페이지의 새버전 확인->"페이지를 열때마다" 를 선택한 경우이면 확실한 번쩍거림을 볼수 있습니다.

그렇게 번쩍거리는 것은 서버로 이미지요청을 계속 하게되서 보이는 효과로, 결국 대역폭(Bandwidth)이 늘어나고 서버에도 부담을 주게 되고 사용자 환경도 느리게 할수도 있습니다. 반드시 수정해야 한다는!!

관련 내용을 검색 하면서 몇가지 해결책을 찾아 정리해봤습니다. 검색해보니 3가지 정도의 해결법이 있네요. 우선

아파치서버의 경우 아래 코드를 httpd.conf파일에 추가하면 됩니다.

#this stops screen flicker in IE 
BrowserMatch "MSIE" brokenvary=1
BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
BrowserMatch "Opera" !brokenvary
SetEnvIf brokenvary 1 force-no-vary

그러고 난후 아파치에서 mod_expires모듈을 설정 하면 문제가 해결 됩니다.

또는.htaccess파일에 아래 코드를 넣어도 됩니다.

ExpiresActive On 
ExpiresDefault A18000
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000

IIS 서버의 경우는 여기 를 방문해보시면 될것 같습니다.

CSS를 이용한 방법도 소개되고 있어 살펴보니 Background 프로퍼티에 따라서 깜빡거리는 현상이 발생한다고 합니다.

background style에

  • background-color에 특정색이 설정되는 경우
  • background-repeat 시키지 않는경우
  • background-position을 설정하는 경우

와 같이 background요소가 설정되는 경우 flick거리게 됩니다. 또 background요소로 깔리는 이미지 영역이 2500픽셀 미만이 되면 역시 flick하게 됩니다. 가령 아래와 같은 경우는 해당 영역의 총 넓이 값이 2450픽셀로 2500픽셀 미만이므로 깜빡거리게 됩니다.

a { width: 49px; height: 50px; } 

이 외에도 설정하려는 이미지가 투명이미지인 경우도 그렇습니다.

마지막으로 스크립트를 이용한 방법도 있습니다.

<script type="text/javascript"> 
(function(){
/*Use Object Detection to detect IE6*/
var m = document.uniqueID /*IE*/
document.compatMode /*>=IE6*/
!window.XMLHttpRequest /*<=IE6*/
document.execCommand ;
try{
if(!!m){
m("BackgroundImageCache", false, true) /* = IE6 only */
}
}catch(oh){};
})();
</script>

그냥 실행되고록 해놓은 코드로 삽입하면 됩니다. flicker현상을 위한 코드는 아닌데 부수적으로 flicker 효과를 없애는 역활까지 해주는거 같네요. IE6 에서만 문제되는 현상이기 때문에 해당 코드 삽입 형식에 제일 편하지 않을까 합니다 :)

참고사이트.
http://www.hedgerwow.com/360/bugs/dom-fix-ie6-background-image-flicker.html
http://www.fivesevensix.com/studies/ie6flicker/
http://dean.edwards.name/my/flicker.html

http://html.nhndesign.com/619

IE6/5.5에서 :hover :focus 속성 앵커태그 이외에 주는 법

CSS의 :hover 이벤트는 마우스가 엘리먼트 위에 올라가있을 때 발생합니다. 이것은 될 수 있으면 자바스크립트의 onmouseover 를 사용하지 않고도, 디스플레이를 컨트롤 할 수 있기 때문에 편리합니다. 최근에 나오는 브라우저는 앵커태그(a) 이 외에 다른 엘리먼트 에서도 :hover 를 사용할 수 있도록 되어있습니다.

하지만 익스플로러 6 이하 브라우저에서는 오직 앵커 태그에서만 :hover가 작동하고, 다른 엘리먼트에서는 작동하지 않는 문제가 있습니다.

지 금 제 블로그 메인 메뉴에 마우스를 올리면 뜨는 서브메뉴도 자바스크립트를 일체 사용하지 않고 CSS로만 만들어 진 것 입니다(올블로그 툴바가 있는 상태에서는 오작동합니다. 원인은 찾지 못했습니다). li:hover 기능을 이용해서 만든 것인데, 모든 최신 브라우저에서 별 문제 없이 작동을 합니다만, IE6 이하에서만 동작을 하지 않았습니다.

아래의 해결법으로 IE6에서도 문제없이 풀다운되는 메뉴를 구현할 수 있었습니다.

이 럴때는 expression을 사용하면 강력한 CSS컨트롤을 할 수 있습니다. 단점으로는 익스플로러 계열에서만 작동한다는 점인데요. 그래서 오히려 제 블로그 같은 서브메뉴를 구현할때는 장점으로 부각될 수 있습니다. li:hover 가 IE6 이하에서 인식을 못하고 다른 브라우저에서는 정상인식을 하므로 IE6 이하의 브라우저에서만 expression을 적용시키면 되기 때문입니다.

활용소스는 다음과 같습니다.

HTML 코드
<div class="menu">
 이 레이어를 컨트롤 하기 위함입니다
<div>

CSS 코드
/* IE6 이외의 브라우저 */
.menu      {
 padding:50px;
 text-align:center;
}
.menu:hover,
.menuOver  { /* menuOver는 html에 선언되지 않았지만, 마우스가 올라갔을 때를 디자인합니다. */
 background: #ff0000;
}

/* IE6과 그 이하의 브라우저 */
.menu  {
 behavior: expression(
  this.onmouseover = new Function("this.className += ' menuOver';"),
  this.onmouseout = new Function("this.className = this.className.replace(' menuOver', '');"),
  this.style.behavior = null
 );
}


일 반적인 최신 브라우저는 위 소스에서 사용된 div:hover 가 작동합니다. 하지만 IE6 이하의 브라우저에서는 작동하지 않기 때문에, expression을 활용해서 강제로 div:hover 와 똑같은 효과가 구현 가능하도록 한 것입니다.
빨간 부분을 자신에게 맞게 고쳐서 쓰시면 됩니다. CSS는 상속중심의 코드이기 때문에, 기본적으로 상속받을 것은 받고, IE6 에서 사용할 expression만 그 아래에 따로 선언을 해주면 됩니다.


http://monoeyes.com/394

2009년 11월 30일 월요일

제로보드를 설치하기 위한 서버 환경 비교.

제로보드(XE)의 설치환경을 내 경험으로 비교해봤다.

  1. Linux - Apache + PHP + MySQL
    가장 최적의 조건이다.
    끌린다면 내가 설치하면서 작성했던 포스팅을 참고하도록.
    장점
    1. 적은 비용 - 리눅스는 무료 운영체제이다.
    2. 빠른 속도 - IIS에 비해 비교적 빠른 속도이다.
    3. 안정적인 운영체제 - 리눅스 중에서도 centos 가 서버용으로 좋다고 한다.
    4. 저렴한 하드웨어 - 운영체제 자체가 가벼워 하드웨어 비용이 적다.
    단점
    1. 처음 리눅스를 접한다면 막히는 부분이 많다. (얼마나 많은지는 직접 해보면 알음..)
  2. Windows Server 2008, Windows 7 - IIS7 + PHP + MySQL
    비교적 쉬운 인터페이스와 괜찮은 속도를 제공한다.
    APMSETUP 검색해서 php4iis 를 받으면 더 쉽게 서버를 구축할 수 있다.

    장점

    1. 편리한 인터페이스 - 비교적 편리할 뿐, 사실 어렵기는 다 마찬가지.
    2. 속도 - IIS6에 비해 속도가 개선되었다.

     단점

    1. 라이센스 - Server 2008 은 수십만원의 운영체제이다. (대학생은 무료로 사용가능)
     
  3. Windows + Apache + PHP + MySQL
    연습하기에 좋다.
    XP, 7 등 어디서나 설치할 수 있다.
    APMSETUP을 설치하면 더 쉽게 사용할 수 있다.

  4. Windows Server 2003, Windows XP - IIS6 + PHP + MySQL
    나쁜건 아니지만 위에 나온 조합들이 더 낫다.

서버를 깔고나면 Zend Optimizer, xCache, eAccelerator 와 같은 가속기를 설치해주는 것이 좋다.

아니, 반드시 설치해줘야만 마음에 드는 속도가 나올 것이다.

곰곰히 생각해보니,,, 호스팅 받으면 어차피 다 해결될 문제군. -ㅅ-

2009년 11월 29일 일요일

페이지 로딩 완료후 display:none 적용하기

  1. div 태그 감추기
    <div style="display:none;">
    내용
    </div>
    버그: div 태그에 걸린 자바스크립트가 적용되지 않는다.
  2. 로딩후 div 태그 감추기
    <script type="text/javascript">
    function hide() {document.getElementById('set').style.display="none"};
    //hide 함수 - set 영역을 감춤
    window.onload = function () {setTimeout("hide()",1)};
    //로딩이 완료되면 0.01초후 hide 함수 호출
    </script>
    <div id="set">
    내용
    </div>
    IE6, IE8, Firefox, Safari 에서 테스트 했는데 잘 된다.

음.. 이것도 삽질이라면 삽질이랄까;;

xe 에디터 스킨을 제작하는데 많은 도움이 됬다.

Javascript : Css : DIV 숨기기 보이기

스크립트

<head>

<script language=Javascript>

    function open_menu1(){  // menu1 사용 하고자 펑션 이름.

      var openDiv=document.getElementById('point1').style;  //point1 부분에 Div ID
  openDiv.display=(openDiv.display=='none')? '' : 'none'; // '' = 비움 : 'none' = none으로 설정 display 의 값을 변경

    }

 </script>

</head>


사용예

<head>

<script language=Javascript>
 function open_menu1(){
  var openDiv=document.getElementById('point1').style;
  openDiv.display=(openDiv.display=='none')? '' : 'none';
  var openDiv=document.getElementById('point2').style;
  openDiv.display=(openDiv.display=='none')? 'none' : 'none';
  var openDiv=document.getElementById('point3').style;
  openDiv.display=(openDiv.display=='none')? 'none' : 'none';
  var openDiv=document.getElementById('point4').style;
  openDiv.display=(openDiv.display=='none')? 'none' : 'none';
 }

</script>

</head>

openDiv.display=(openDiv.display=='none')? 'none' : 'none'; // none:none  = 두가지 값 모두 none으로 보이기 위해


HTML & CSS

<a align=absmiddle style='cursor:pointer' onclick=open_menu1()>클릭</a>//onclick open_menu1() 스크립트의 펑션 명

또는

<a align=absmiddle style='cursor:pointer' onmouseover=open_menu1()>마우스 오버</a> // 마우스 오버 형태로 사용시 open_menu1() 은 스크립트 펑션 명

<DIV id=point1 style="display:none; width:99%; padding:5; border:1px solid #bbbbbb; line-height:140%; margin-bottom:10px; text-align:left; background-color:#ffffdd;">

point1 = DIV ID = 스크립트에 지정된 DIV ID

style="display:none" 최초 지정된 display 속성 :none 화면에 보이지 않게 지정


사용예

<BODY>
 <a align=absmiddle style='cursor:pointer' onclick=open_menu1()>클릭</a><br />

또는 <br />

<a align=absmiddle style='cursor:pointer' onmouseover=open_menu1()>마우스 오버</a><br />

<div style="height:40px;">
<DIV id=point1 style="display:none; width:99%; padding:5; border:1px solid #bbbbbb; line-height:140%; margin-bottom:10px; text-align:left; background-color:#ffffdd;">
11111111111
</div>
<DIV id=red style="border 1px solid #bbbbb; background-color:red; width:100%; height:40px;">
</div>
 </BODY>

Javascript : Css : DIV 숨기기 보이기

2009년 11월 26일 목요일

텍스타일을 써야할, 쓰지 말아야할 3가지 이유

 

내가 XE에 관심이 많아서 인지 설치형 블로그, 텍스타일이 종종 눈에 띈다.

 

설치형 블로그로 널리 알려진 것은 텍스트큐브이다.

 

그리고 텍큐의 스폰서인 다음, 구글에서 서비스하는 티스토리와 텍스트큐브닷컴이 유명하다.

 

설치형 블로그가 자유로운 표현이 장점이라 하면.. 단점은 역시 호스팅 문제이다.

 

하지만 티스토리와 같은 설치형+가입형의 적절한 서비스덕에 장점만을 적절히 취하고 있다.

 

 

 

텍스타일은 XE(제로보드) 기반의 설치형 블로그.

 

그럼 왜 텍스타일을 써야 하느냐?

 

우선 텍스타일을 써야할 이유를 알아봐야겠다.

  1. 글감 수집기 & 보관함
    네이버에 홍보되었던 Textyle, 한번쯤 봤을 것이다.
    거기에 소개되었던 것이 바로 글감 수집기.
    웹서핑을 하다가 맘에 드는 부분이 있으면 자신의 블로그에 기억시키는 기능이다.
    정말 매력적이지 않은가?
    포스팅에 날개를 달아준다.

  2. 단락별 편집기.
    이 녀석은 깔끔하고 구조적인 포스팅을 할 수 있게 도와준다.
    포스팅을 하다보면 무슨 말을 써야할까,,, 생각하면서 다른 부분으로 넘어가서 쓰는 경우가 있다.
    이렇게 나눠가면서 글을 쓰는 것을 단락별 편집기가 한몫 거들어 줄 것이다.

  3. 자체 API
    텍스타일에는 API 기능이 포함되어 있다.
    이제 Windows Live Writer 에서 포스팅하지 않아도 텍스타일 하나로 모두 처리할 수 있다.
    이를테면,,, 텍스타일 한곳에 포스팅하면 티스토리, 텍스트큐브, 네이버 블로그, 이글루스 등에 한꺼번에 발행 할 수 있는 것 ㅡ,.ㅡ;;
    API [텍스타일 to 텍스타일] 도 가능하다고 한다.

이토록 매력적인 텍스타일이지만 아직은 더 두고봐야 할 것 같다.

 

아무래도 오래지 않은 기능이니, 그 자체가 발목을 잡는다.

  1. 개발 단계.
    앞으로 어떤 변수가 있을지 모르고, 현재 어떤 불안정 요소가 있는지 모른다.
    베타딱지를 떼고 1.0 버전이 나왔지만 말이다.
    버전이 조금은 더 필요하지 않을까,,, 나는 그렇게 생각한다.

  2. 스킨.
    텍스타일 스킨은 텍스트큐브에 비해 복잡한 편이다.
    얼마나 복잡한지는,,, 직접 뜯어보시길 -_-b
    그래서 스킨 선택폭도 좁다.

  3. 복잡한 설치과정.
  4. 이건 정말 크리티컬하다.
    파일이 많은 건 둘째치고, 자신의 서버를 구축해야 하기 때문이다. (무료 호스팅을 받던가..)
    텍스트큐브의 스폰서인 다음, 구글에서 티스토리와 텍스트큐브닷컴을 서비스 한것 처럼 NHN에서 텍스타일을 서비스하길 기대해본다.
    (토트라고.. 이미 텍스타일 서비스를 시작한 곳도 있더라.)

 

결론은 텍스타일은 정말 매력적인 녀석이다(-_-?)

 

만약 텍스타일에 대해 흥미로운 구석이 있다면 위에서 언급한 토트에서 텍스타일을 경험해볼 수도 있다.

 

텍스타일 서비스중인 곳은 2~3군데 있었는데 너무 허접한데다가,,, 주소도 까먹었고 그나마 토트가 깔끔해 보인다 -_-;;; (여기가면 초대장있다)

 

아래는 텍스타일 소개 영상

 

 

이제, 선택의 시간^^

2009년 11월 21일 토요일

Apache httpd.conf 필수 점검 사항

  1. ServerType standalone
    #서버를 항상 가동하여 메모리 점유가 많아지지만, 속도가 빨라진다.

  2. Timeout 120
    # Timeout은 클라이언트에서 서버로 접속할 때 클라이언트나 서버의 통신장애로 인해 300초 동안 클라이언트에서 완벽한 처리를 하지 못할 때 클라이언트와의 연결을 해제한다.

  3. KeepAliv On
    #홈페이지 접속한 상태를 계속 유지하면서 빠른시간내에 메뉴를 클릭(15초 횟수:100번)

  4. MaxKeepAliveRequests 100
    # KeepAlive 상태에서 처리할 최대 요청 처리 건수를 설정한다.
    # 보통의 웹 사이트에서는 설정값 100으로 충분하다.

  5. KeepAliveTimeout 30
    # KeepAlive 상태를 유지할 시간을 초 단위로 설정한다. (30초후 접속 끊음)

  6. MinSpareServers 5
    MaxSpareServers 10
    #유휴서버가 MinSpareServers의 개수(5) 보다 적게되면 추가로 생성을 하게 되며
    #MaxSpareServers의 개수(10)보다 많게 되면 죽이게 된다

  7. StartServers 5
    #StartServer 값과 MinSpareServers 값은 같은 값을 설정하는것이 바람직하다.

  8. MaxClients 75
    #동시접속자

  9. MaxRequestsPerChild 30
    #이 값만큼의 클라이언트요청을 받았다면 이 자식프로세스는 자동으로 죽게된다.

  10. AllowOverride All
    #AllowOverride none 으로 하면 URL Rewrite 작동하지 않는다.

apache httpd.conf설정 및 설명
아파치웹서버 환경설정파일 httpd.conf 설명입니다.

  1. Options FollowSymLinks
    Options Indexes FollowSymLinks 부분을 위와 같이 바꾼다.
    효과: 비어있는 디렉토리 접근 불가

phpMyAdmin 설치


  1. 1. 압축을 푼다.
    # tar xfvz phpMyAdmin-3.2.3-all-languages.tar.gz

  2. libraries 폴더로 들어간다.
    # cd phpMyAdmin-3.2.3-all-languages/libraries

  3. 설정파일을 복사한다.
    # cp config.default.php config.inc.php

  4. 파일을 수정
    # vi config.inc.php
    $cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin';
    $cfg['blowfish_secret'] = 'elkha'; // cookie 값 입력 (아무거나 입력해도 됨)
    $cfg['Servers'][$i]['host']          = 'localhost';
    $cfg['Servers'][$i]['auth_type']     = 'cookie'; (작동 안되면 http 입력)
    $cfg['Servers'][$i]['user']          = 'root';
    $cfg['Servers'][$i]['password']      = 'mysql 비밀번호';

  5. 수정한 파일 이동
    # mv config.inc.php ../

  6. phpMyAdmin 접속할 수 있도록 웹폴더로 이동
    # cd ../
    # mv phpMyAdmin-3.2.3-all-languages /usr/local/apache/htdocs/phpmyadmin

  7. 웹에 접속해서 확인
    http://localhost/phpmyadmin


2009년 11월 20일 금요일

이런 펭귄녀석



슬슬 펭귄녀석이 지루해져 간다.

8번 포맷했나

이제 삽질은 그만 ..

2009년 11월 18일 수요일

리눅스 설치

설치한 리눅스 - centos

리눅스 원격제어
http://www.leewh.co.kr/entry/VNC%EB%A1%9C-Windows-%EC%97%90%EC%84%9C-Linux-%EC%9B%90%EA%B2%A9%EC%A0%9C%EC%96%B4


리눅스 원격제어 - freenx (랜덤여신, 관련 링크2)

nxclient-3.4.0-5.exe

윈도우용 클라이언트

설치 명령어 yum install freenx


 /etc/nxserver 에 node.conf.sample 파일이 있으며, 파일 이름을 node.conf 로 수정하고, 내용을 수정하면 설정을 변경할 수 있습니다.

네트워크 설치

http://blog.bagesoft.com/695

일반 설치
http://blog.cuwoom.net/49


서버 구축
http://www.bek.me/?mid=spring&pageid=2807638

윈도우 APM서버에서 리눅스서버로 XE이전 방법
http://zzowa.tistory.com/46

 

 


2009년 10월 9일 금요일

와~ 메인보드 도착했다

 

서버를 운영하기 위해 새로운 식구(?)를 구입(-_-)했다.

 

이미 가지고 있던 부품을 활용하면 2대 정도 만들수 있지만 좋은 방법이 아니었다.

 

서버는 전력소모가 적어야 하기 때문이다.

 

그래서 서버용으로는 노트북이나 Mini-itx 컴퓨터가 어울린다.

 

하지만 노트북은 완전히 사정거리 밖의 아이템... (총알 크리)

 

그래서 내가 선택한 것은 Mini-itx 소형 콤퓨타!

 

케이스는 이미 정해져 있었다.

 

바로.. 작년에 공동구매 했던 미니레터.

▶ [리공] 비아코, 미니레터 55mm Tower 케이스 출시 이벤트
  내용보기 : http://www.parkoz.com/zboard/view.php?id=notices&no=573

 

그렇다.

 

1년전, 8만원에 공구했던 물건이다.

 

하지만 난 가난해서 이제서야 메인보드를 구입했다. (케이스를 1년 동안 모셔놨단 얘기)

 

어쨋건, 중고장터를 이용하여 아톰330보드를 매입.

 

오늘 보드를 받고,,, 고이 모셔둔 케이스 뽁뽁이를 뜯어냈다 ㅎㅎㅎ

 

가슴이 두근두근

 

이 요염한 자태

 

카메라 찍는건 익숙치 않아서.. 언제나 진동을 한다

 

이... 이건 알몸 +_+b

 

심장과 같은 120와트 DC to DC 케이블.

 

당시에는 미니레터가 DC to DC를 포함하여 12만원이었는데... 지금은 파워 빼버리고 6만원 하더라.

 

드디어 메인보드 등장!

 

램은 내 메인 시스템에서 떼어줬다(2G)

 

그런데 매력적인 모습은 어디로 가고 이런 잇힝스러운 상태가 되어버렸을까...

 

 

아직 2.5인치 하드디스크가 없기에 한동안 이렇게 써야한다.

 

저 케이스 안에 들어갈 수 있는 부품은 메인보드와 2.5인치 하드밖에 없기 때문.

 

시스템 사양

CPU 아톰330 (듀얼)

RAM DDR2 2G PC2-6400 (단, 보드가 5300까지 지원하기 때문에 5300속도로 작동)

HDD 40GB

VGA 내장

PSU 120W (파워값이 상당하다. 저렴한 60W 짜리로 써도 상관없는데..)

 

어서 윈도 설치하고 삽질해야겠다.

 

아흑

 

내 맘이 두근두근(-_-)

2009년 10월 7일 수요일

iTunes 최신버전 가볍게 설치하기

*참고: 이 팁은 iTunes 9 유저에게 필요합니다.

 

구버전을 쓰신다면 이 포스팅과 관련이 없으며 아래 링크를 참고해주세요.

▶ [프로] 군살 많은 아이튠즈 가볍게 설치하기
  내용보기 : http://www.parkoz.com/zboard/view.php?id=my_tips&no=12613

 


 

Tunes는 음악좋아하는 사람들에겐 필수적은 프로그램중 하나입니다.

 

수많은 노래를 쉽게 정리할 수 있고 ??하는 매력적인 녀석이죠.

 

그런데 이 녀석을 설치하려면 잡다한 것이 많습니다.

 

잡다한 것이 얼마나 있는지는 밑에서 확인하도록 하고 설명을 시작하겠습니다?

 

우선 http://www.apple.com/itunes/download/ 페이지로 이동해서 iTunes를 받습니다.

 

다운로드 받으면 압축을 풀어주고요.

 

압축풀면 아래 프로그램들이 보입니다.

 

자그마치 프로그램이 8개나 있군요.

 

원래대로라면 iTunes 하나를 위해 프로그램 8개나 깔아야 하는군요.. 쿨럭

 

이제 설치할 프로그램은 AppleApplicationSupport.msi, iTunes.msi, QuickTime.msi 입니다.

 

시작메뉴에서 실행, 그리고 cmd를 입력합니다.

 

iTunes 압축푼 폴더로 이동해서 passive 옵션으로 itunes.msi 파일을 실행합니다.

 

그럼 iTunes가 설치됩니다.

 

이제 AppleApplicationSupport.msi 이 녀석을 깔아줍니다.

 

재부팅하고 Quick Time.msi 설치합니다.

 

이제 다 됬군요 :)

 

각 프로그램 역할은 다음과 같습니다.

iTunes.msi 다 아시죠?

AppleApplicationSupport.msi 이걸 깔아주지 않으면 iTunes 9 버전은 작동하지 않습니다.

Quick Time.msi 재생하는데 필요한 코덱정도로 보시면 됩니다. (iTunes 9 버전은 QT Lite 작동안됨)

AppleMobileDeviceSupport.msi 아이팟 터치등의 제품을 사용할때 필요합니다.

 

모두 완료했다면 본문 처음에 알려드린 링크를 따라가세요.

 

시작 프로그램, 백업관련 팁이 있습니다.

2009년 10월 3일 토요일

예쁜 아이콘 모음 - ico

블로그나 사이트등에는 아이콘을 붙일 수 있습니다.

 

예를들어 텍스트큐브닷컴 홈페이지에 들어가면 주소앞에 텍큐 아이콘이 붙죠.

 

이 아이콘은 jpg, gif 가 아니라 ico 포맷으로 되어있습니다.

 

그래서 직접 만들려면 그에 맞는 에디터가 필요하죠.

 

만들려면 만들수야 있지만.. 삽질을 많이 해야하고 노력에 비해 성과가 적은 것 같습니다. (경험상)

 

그래서 이러한 ico파일을 다운로드 받을 수 있는 사이트를 소개해드릴까 합니다.

 

Axialis Software 라는 회사에서 지원하는 아이콘인데요, 무진장 많습니다.

 

 

사이즈는 16x16, 24x24, 32x32, 48x48 등으로 다양합니다.

 

원래는 운영체제 용으로 나온것 이지만 블로그 아이콘으로도 아주 좋은 것 같습니다 :)

 

아이콘 페이지: http://www.axialis.com/free/icons/index.html