레이블이 Computer인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Computer인 게시물을 표시합니다. 모든 게시물 표시

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월 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년 9월 20일 일요일

uTorrent 세팅파일 한 폴더로 모으는 방법

 

 

 

 

 

뭐 하나 다운로드 받을려고 하면 이젠 토렌트가 꼭 필요한 세상(?)이 됬습니다.

 

토렌트가 무거운 프로그램도 아니라서 많이 즐겨쓰죠.

 

그런데 저처럼 컴퓨터 결벽증에 시달리는 사람에겐 토렌트 설치가 부담스럽게만 느껴집니다.

 

다운로드 받고 싶은 파일이 있어도 토렌트 설치하기 싫어서 포기한 경우도 종종 있었습니다.

 

어찌보면,, 그렇게 하는게 득보다 실이 큰것 같기도 합니다.

 

이제 그런 분들을 위해 쉽고 간편하게 무설치 토렌트를 즐길 수 있는 방법을 소개할려고 합니다.

 

1. 새 폴더를 하나 만듭니다. (저는 uTorrent 라고 하겠습니다)

 

2. 토렌트 실행파일을 uTorrent 폴더에 넣습니다. (파일명은 utorrent.exe으로 지정)

*토렌트가 없으신 분은 토렌트를 다운로드 받습니다. 다운로드(클릭)

(영어에 약해서 언어팩도 받으실 분은 Language pack도 받아서 같은 폴더에 넣습니다)

 

3. 메모장을 켜서 파일명을 settings.dat 이라고 저장합니다.

 

 

다됬습니다. 이제 무설치로 토렌트를 사용할 수 있습니다.

 

참 쉽죠?

2009년 9월 17일 목요일

Windows 7 각 에디션 설명

Starter, Home Basic, Home Premium, Professional, Enterprise, Ulimate

 

각 버전별 특징입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

펼쳐두기..

 

 

위키백과

개념기사

[[오마이뉴스 강인규 기자]최근 들어 '갈라파고스 증후군'이라는 말을 자주 듣는다. 이 말은 특정 지역의 기술이 다른 곳과 다른 방식으로 진화해온 현상을 일컫는다. 올해 7월 < 뉴욕타임스 > 가 '국내전용 기술'로 전락한 일본의 휴대폰 산업을 보도하면서 일본의 전문가 말을 인용한 것이 유행의 계기가 된 듯하다.
2008년 3월 < 파이낸셜타임스 > 도 미국의 자동차 산업을 언급하며 '갈라파고스 증후군'이라는 표현을 썼다. 미국의 자동차 산업이 곤경에 처한 이유를 분석하면서 세계와 동떨어져 '나만의 방식'으로 발전해 온 미국 자동차 시장의 문제점을 지적한 것이다. 배기량 높은 대형자동차 중심의 성장구조가 대표적일 것이다.
한국적 맥락에서의 '갈라파고스 중후군'으로는 흔히 한국 웹의 폐쇄성, 규제중심주의, 국제표준 기술사용 거부 등이 거론된다. 이런 특이점 때문에 한국의 정보통신기술이 미국 자동차나 일본 휴대폰처럼 국제적 경쟁력을 잃고 있다는 것이다. 하지만 한국 인터넷의 '특이성'은 미국과 일본이 겪는 '갈라파고스 증후군'과는 큰 차이가 있다.

일본 휴대전화는 세계 어느 나라보다 뛰어난 품질과 기능, 디자인을 갖추고 있으면서도 자국 시장 밖을 벗어나지 못하고 있다. 모바일 인터넷 역시 1999년에 '아이모드'라는 혁명적 서비스를 시작했으나, 컴퓨터 기반 인터넷과 호환되지 않는 폐쇄성으로 인해 다른 나라에서는 모두 실패하고 말았다. 일본 모바일 기기는 뛰어난 기술을 가지고 있지만, 세계시장과 격리되어 발전한 탓에 국제경쟁력을 잃고 위기에 처하게 되었다. 이와 같은 기술의 국지적 진화를 '갈라파고스 증후군'으로 부르기도 한다.

ⓒ Sharp/Panasonic/NEC

한국의 인터넷 : '강요된 특이성'
진화론의 주창자인 찰스 다윈은 갈라파고스 섬을 둘러보다가 흥미로운 점을 발견했다. 그 섬에는 다른 곳에서 볼 수 없는 특이한 종들이 살고 있던 것이다. 다윈은 생물들이 그곳의 환경에 적합한 방식으로 진화하고 분화했다는 결론을 내리고, 이 사실을 일반화해 진화생물학의 토대로 삼는다.
기술적 관점에서 보는 '갈라파고스론' 역시 '사회적 환경에 따른 진화'라는 전제를 갖고 있다. 여기서 '환경에 따른'이라는 말에 주목할 필요가 있다. 미국의 자동차가 기름을 길에 뿌리고 다니는 대형차 위주로 발전한 것은 싼 휘발유와 가족 중심의 여가생활, 그리고 업무와 주거가 분리된 도시구조 속에서 생겨난 요구 때문이지, 누가 강요해서가 아니다. ('강함'에 대한 미국사회의 이데올로기 정도를 추가할 수 있을지 모르겠다.)
뒤에서 자세히 설명하겠지만, 한국의 인터넷 특이성은 한국적 환경에 따라 '진화'한 것이 아니라, 정치권력에 의해 사실상 강요된 것이다. 반면에 일본의 '갈라파고스 증후군'은 '늦은 컴퓨터 보급'과 '너무 앞서간 휴대폰 기술'의 결합으로 빚어진 결과였다. 한국과 달리 일본에서는 1990년대 중반까지도 컴퓨터가 가정에 널리 보급되지 못했다. '컴퓨터는 사무용'이라는 통념도 있었지만, 소비자들이 비슷한 시기에 유행하기 시작한 문서작성 전용기에 매료된 탓도 컸다. 이런 환경에서 유선 인터넷 보급은 늦어질 수밖에 없었다.
그러다가 2000년대 초부터 '인터넷 가입자'가 폭등하는 현상이 일어난다. 1999년 초에 시작된 모바일 인터넷 서비스 '아이모드(i-Mode)' 덕분이었다. 이미 많은 일본인들이 휴대전화를 쓰고 있었으니, 친숙한 기계를 통해서 '이메일'도 보내고, 기차시간도 확인하고, 좋아하는 식당의 쿠폰도 받을 수 있게 한 것이 인기를 끌 만했다.
일본인들은 이미 10년 전에 '3세대(3G) 이동통신'을 도입한 셈이다. 그러나 불행히 '휴대전화를 이용한 인터넷'이라는 개념은 일본 이외의 나라에서는 보기 어려울 만큼 너무 앞선 기술이었다. 비록 문자 위주의 정보서비스기는 했지만 말이다. 그러나 정말 심각한 문제는 일본의 무선 인터넷 기술이 기존의 웹과 호환이 안 되는 '폐쇄구조'를 지녔다는 점이다. 컴퓨터를 건너뛰어 휴대전화 중심으로 발전한 인터넷 서비스가 컴퓨터 기반 인터넷을 충분히 배려하지 못한 것은 당연했다.

일본 카시오가 내놓은 휴대전화로, 고해상도 광각 카메라와 촬영시 손흔들림 방지기능이 있다. 일본 휴대전화는 카메라와 텔레비전 수신기능은 물론, 방수, 지문인식, 얼굴인식 기능 등 다양한 최신 부가기능이 장착되어 있지만, 빈곤한 소프트웨어로 인해 스마트폰 시장에서는 경쟁력을 확보하지 못하고 있다.

ⓒ Casio

아이모드와 소니의 현재, 네이버와 삼성의 미래
비록 아이모드는 야심차게 진출한 유럽과 북미 시장에서 모두 철수하는 실패를 맛봤지만, 일본 단말기 제조사나 서비스 업체는 크게 괘념치 않았다. 1억이 넘는 일본만 해도 만만찮은 수익이 보장되는 시장이었기 때문이다. 일본의 제조업체는 이미 오랫동안 고질적 '하드웨어 마인드'로 비판 받았지만, 국내에서는 큰 탈 없이 영업을 할 수 있었다. '카메라,' '텔레비전,' '얼굴인식'처럼 휴대전화 기능을 하나씩 늘려가는 것만으로 새 고객을 끌 수 있었기 때문이다.
그러나 시장이 과포화 상태에 이르고, 장기침체의 늪이 깊어지면서 상황은 달라졌다. < 뉴욕타임스 > 가 7월 20일자 기사에서 인용했듯, 이제 일본의 휴대전화 업체는 '외국에 진출하든지, 아니면 사업을 접든지' 선택해야 하는 기로에 섰다. 문제는 겨우 눈을 돌리기 시작한 세계 휴대전화 시장이 이미 소프트웨어 중심으로 재편된 상태라는 점이다.
포털 서비스 등 한국 인터넷 업체의 입장에서 보면, 한국 정보통신산업의 상황은 2000년대 초중반까지의 일본 휴대전화 업계와 비슷하다. 국내시장만으로도 그럭저럭 성장을 해왔다는 점에서 말이다. 외형적으로는 삼성과 엘지 등 하드웨어업체들이 세계시장에서 유례없이 뛰어난 성과를 보이며 승승장구하는 것처럼 보인다.
삼성은 주식총액 면에서 이미 2002년에 소니를 추월했으며, 현재 인텔을 바짝 쫓고 있다. 삼성은 세계 최대의 액정텔레비전 생산업체며, 휴대전화로는 굳건히 세계 2위 자리를 지키고 있다. 엘지는 액정텔레비전 생산에서 세계 2위인 소니를 위협하고 있고, 휴대전화로는 삼성에 이어 세계 3위를 기록하고 있다. 한국의 언론들이 발 벗고 나서서 전해온 소식이니 잘 알고 있을 것이다.
한국 언론이 잘 모르거나 전하지 않는 소식은 한국 업체들이 안으로부터 병들고 있다는 사실이다. 삼성과 엘지의 액정 텔레비전 판매량은 늘고 있지만, 수익률은 계속 하락하고 있다. 텔레비전 같은 하드웨어의 특징은 기술이 빠르게 평준화된다는 점이고, 이로 인해 상품차별화가 가격에서 일어난다. 이것이 정확히 한국 삼성이 일본 소니를 그처럼 짧은 시간에 따라잡은 이유고, 중국 하이어가 이토록 빨리 삼성을 추격할 수 있는 이유다.

애플과 다른 휴대폰 업체들의 영업 이익률 비교한 도표. 애플에 비해 매출은 몇 배나 높지만, 삼성과 엘지 두 회사의 휴대폰 영업이익을 모두 합해도 단일모델 아이폰 하나를 따라오지 못한다. 하드웨어에 기반한 기술격차는 쉽게 좁혀지며, 이로 인해 수익률도 쉽게 악화된다.

ⓒ iSmashPhone

판매율 2위의 저조한 수익률... 이미 시작된 위기
더 심각한 문제는 수익률 악화가 한국 업체가 가장 높은 경쟁력을 갖춘 모바일 분야에서 두드러지게 나타난다는 점이다. 삼성과 엘지의 경우 매출은 높지만, 애플, 리서치인모션(RIM), 노키아에 비해 영업이익은 현저히 떨어진다. 한국의 두 기업은 미국의 애플이나 캐나다의 리서치인모션보다 훨씬 많은 단말기를 팔지만, 벌어들이는 돈은 훨씬 적다.
예컨대 < 아이스매시폰 > 이 지난 8월 추산한 영업이익률을 보면, 애플 40%, 리서치인모션, 20.7%, 노키아 11.3%인데 반해, 삼성은 10.5%, 엘지는 9.1%였다. 이 때문에 삼성과 엘지는 애플보다 훨씬 높은 매출을 올리고도 영업이익은 애플에 비해 삼성이 1.5배 이상, 엘지는 3배 이상 적다.
여기서 이윤이 높은 회사일수록 '스마트폰,' 즉 소프트웨어 중심의 단말기 비중이 높다는 사실을 알 수 있다. 물론 삼성과 엘지도 스마트폰을 세계시장에 내놓았지만 고전을 면치 못하고 있다. 이유는 간단하다. 이 업체들의 스마트폰이 별로 '스마트'하지 못하기 때문이다.
정보통신기기의 흐름이 하드웨어에서 소프트웨어 중심으로 이동했지만, 한국의 업체들은 기껏해야 메모리를 더하고, 카메라와 스크린의 해상도를 높이는 '하드웨어적' 방식으로 대응했을 뿐이다. 사실 뾰족한 수도 없다. 인터넷은 모바일 소프트웨어의 중추가 됐지만, 한국의 인터넷은 모바일 기기에 동력을 공급할 수 없을 만큼 망가진 상태이기 때문이다.

한국의 상거래인증은 인터넷 익스플로러만을 지원한다. 다른 웹브라우저를 쓰는 사용자들은 온라인 거래는 물론, 단순히 웹사이트를 둘러보는데도 어려움을 겪는다. 구글 크롬은 미국은행의 온라인 뱅킹을 문제 없이 해내지만, 한국의 은행 웹사이트에 접속하면 '사용할 수 없다'는 게시문이 뜬다. 위로부터 신한은행, 국민은행, 우리은행.

ⓒ 신한/국민/우리

어쩌다 이 지경이 됐을까
한국에서는 액티브엑스(ActiveX)를 지원하는 익스플로러 웹브라우저가 아니면 은행 거래는커녕, 온라인 상점에서 칫솔 하나도 주문할 수가 없다. 이메일 계정을 만들거나 포털 사이트에 의견 하나 쓰려 해도 성별과 생년월일이 그대로 드러나는 원시적 신원체계인 주민등록번호를 입력해야 한다. 개인의 100여 가지 치명적인 신상 및 행적 정보를 관리하는 그 무시무시한 번호를 말이다.
한국에서 가장 많이 사용한다는 포털 사이트에 가입한다고 하자. '필수항목'으로 다음과 같은 개인정보를 제공해야 한다.
성명, 주민등록번호, 외국인등록번호 또는 여권번호(외국인에 한함), 아이디, 비밀번호, 본인확인문답
주민등록번호나 외국인등록번호가 없는 외국인의 경우는 좀 더 복잡하다. 전화로 본인인증 확인을 거쳐야 한다. 외국 소비자가 무슨 대단한 서비스를 받는다고 이런 귀찮은 과정을 거치겠는가? 구글이나 야후 같은 곳에서는 '본인확인'은커녕, 실명도 쓰지 않고 계정을 원하는 수만큼 만들 수 있는데 말이다. 한국 인터넷은 국내용일 뿐이다.
왜 이렇게 됐을까? 한국적 환경에 알맞게 진화해서? 법이 그렇게 규정하고 있기 때문이다. '정보통신망 이용촉신 및 정보보호 등에 관한 법률'에 따르면, 공공기관 사이트 및 특정수 이상이 방문하는 웹사이트에 글을 남기려면 반드시 '본인확인'을 하게 되어 있다.
모바일 인터넷과의 호환은커녕, 자신이 고른 웹브라우저도 쓸 수 없게 만든 전자금융거래 공인 인증서 역시 (법적 근거도 모호한) '전자금융감독규정'에 따른 것이다. 게다가 한국 공인 인증서 발급에 사용되는 보안체계는 10년 전, 즉 지난 세기에 만들어진 낙후된 기술에 기초하고 있다. 한국 소비자는 편리하지도, 안전하지도 않은 낡은 인증기술을 강요받고 있는 것이다.

한국의 공인인증기술은 불편하고 위험한 액티브엑스(ActiveX)에 기반해 있다. 대다수의 나라에서는 보안문제로 인해 액티브엑스를 사용하지 말 것을 권하고 있고, 최신 웹브라우저 역시 이 기술을 지원하지 않는다. 그러나 유독 한국에서만은 독점적 지위를 누리고 있다.

ⓒ 우리은행

한국은 자본주의가 아니다
이 모순을 어떻게 설명할 수 있을까? 어떻게 21세기 '인터넷 강국'의 '공인인증서'에 20세기 기술이 쓰일 수 있으며, 언론탄압으로 악명 높은 중국정부도 시행하지 못하는 '인터넷 실명제'가 (현 대통령 말을 빌리면) '민주주의가 확고히 자리 잡은' 나라에서 강요될 수 있는지 말이다. '비즈니스 프렌들리'를 내세운 정부가 본인확인 없이는 외국인조차 회원으로 받지 못하게 한 '비즈니스 언프렌들리' 법 규정을 고수하고 있는 현실은 또 어떤가.
구체적으로 여러 이유를 들 수 있지만, 핵심 두 가지를 말하면 이렇다. 첫째는, 한국이 자본주의가 아니라는 것이다. 둘째는 한국이 '지나치게 효율적인' 사회라는 것이다. 놀라는 독자가 있을지 모르겠다. 한국이 자본주의가 아니라니. 게다가 '효율적인' 사회라니.
한국의 정치권은 '자유민주주의'라는 말을 자주 입에 올린다. 한 단어로 되어있지만, 사실 '자유주의'와 '민주주의'는 별 상관이 없는 별개의 개념이다. 한국 정부가 말하는 자유주의란 경제개념으로, 가격이 수요와 공급에 의해 시장에서 자동으로 결정되도록 한다는 것이다. 다시 말해 '시장자본주의'란 말이다. 그러나 이승만 정부 이래로 현재까지 한국의 가격은 시장에서 결정되지 않았다.
매사추세츠공대(MIT) 정치경제학 교수인 앨리스 암스덴은 저서 < 아시아의 다음 거인 > 에서 한국의 산업화를 이해하는 열쇠로 "시장에서 가격이 잘 못 결정되도록 만든" 정부의 개입을 꼽는다. 다시 말해, 가격이 시장기제를 통해 결정된 것이 아니라, 한국정부 입맛에 맞게 조절되어 왔다는 것이다. 이처럼 한국은 자본주의 국가에서 보기 어려운 계획경제체제를 유지해 왔다. '경제개발 5개년 계획'처럼 정부주도 산업화 정책 역시 자본주의보다는 사회주의국가에서 주로 볼 수 있다.
디지털 시대에도 답습되는 '5개년 경제계획'
흥미로운 것은, 이것이 과거의 일만이 아니라는 것이다. 기억하는가? 'MB 물가지수,' '통신요금 인하,' '향후 5년간 189조 원 IT투자,' "국책지원사업"으로 선정되어 19억 지원 받는 < 괴물2 > 등. 물론 22조 원에 이르는 국가주도의 대규모 토목공사나, 경제사범으로 구속된 기업인들을 '투자 많이 하라'며 특사로 풀어주는 독특한 법의식도 빼놓을 수 없을 것이다.
재미있는 사실은, 그 어느 정부보다 조직적으로 시장에 개입하고 대규모 계획경제를 주도하는 정부가 '자유주의 시장경제'와 '작은 정부'를 말한다는 점이다. 정부개입이 무조건 나쁘다고 말하려는 것이 아니다. 한국이 오랫동안 의지해 온 낡은 개입방식이 현재와 미래의 경제환경에는 잘 통하지 않는다는 점을 지적하려는 것이다.
한국정부는 실효성도 없는 '통신요금 인하'를 강제하면서도, 통신업체들의 독과점적 지위는 굳건히 보호해주고 있으며, 이 담합적 수입구조를 위협할 수 있는 아이폰 등의 신기술을 이런 저런 법적 이유를 대며 막아주고 있다. 한국의 계획경제구조는 기업의 이익을 보호하기 위해 소비자를 희생하는 방식으로 작동하며, 통치자의 편익을 위해 국민을 통제하는 방식으로 작동한다.
한국의 국가주도 대규모 투자는 예외 없이 세 가지 특성을 갖는다. '몰아주기,' '단기성과 집착,' 그리고 '밀어붙이기'. 시티폰, 피시에스(PCS), 디지털멀티미디어방송(DMB), 줄기세포, 와이브로(WiBro) 모두 이런 과정을 거쳐 시행되었다. 그리고 결과는 모두가 아는 대로 재앙이었다. (물론 당시 정부기관과 국책연구소는 어김없이 수십조의 '경제효과'와 수만의 '고용창출'을 예언했었다.) 이 모든 실패들을 관통하는 공통점은 '반민주적 효율주의'다.

와이브로의 장밋빛 미래를 '받아쓰는' 한국의 언론. 정부주도로 천문학적 금액을 투자한 이 기술은 시티폰과 같은 애물단지로 전락했다. 한국언론의 고질적인 비전문성과 비판능력 결여는 정부의 비민주적 행정과 결합하여 재앙적 결과를 낳곤 한다.

ⓒ 강인규

민주주의는 비효율적이다
민주주의는 대단히 비효율적 제도다. 몇 사람이 결정해서 밀어붙이면 될 일을, 공청회를 열고, 민의를 수렴하고, 그 결과에 대해서 보고하고 평가받아야 하니 말이다. 가장 효율적인 조직은 군대다. 군대식 '명령체계'로 운영되는 한국 정부는 효율을 위해서라면 무엇이든 희생시켜도 좋다고 믿는 경향이 있다. 한국 인터넷이 하나의 운영체제, 하나의 웹브라우저, 단일화된 '공인 인증' 제도를 지원하게 된 것 역시 '효율성' 맥락에서 이해할 수 있다.
인터넷 본인확인제를 통해 개인의 발언을 통제하려는 것도 한국식 효율주의의 단면으로 볼 수 있다. 고려대 법대의 김기창 교수가 저서 < 한국 웹의 불편한 진실 > 에서 지적했듯, 본인확인제는 '본인확인'의 기능을 제대로 수행하지 못한다. 남의 주민등록증번호와 이름만 손에 넣으면 누구라도 '본인'이 될 수 있기 때문이다. 주민등록번호를 통한 본인확인제는 인터넷상의 신분위조를 부추기는 역할을 해 왔다.
"그럼에도 이 제도가 광범위하게 사용되는 이유는 인터넷 실명제가 애초부터 '본인확인'을 진짜로 철저히 하여 악의적 공격자를 가려내고 그자들의 체포나 처벌을 쉽게 하자는 의도가 아니라, 다수의 시민들에게 막연히 겁을 주고, 인터넷을 통한 자유로운 의견표명을 '전반적으로' 위축시키려는 의도로 도입된 것이기 때문이다." - 김기창, < 한국 웹의 불편한 진실 > 120쪽.
한국정부는 '효율적 집행'을 위해 정책관련 공청회에 반대자들이 참여하지 못하게 방해하기도 하고, '국론분열'을 막기 위해 결정사항을 비밀에 붙이기도 한다. ('국론분열'은 한국정치의 왕조적 특성을 계승하는 독특한 언어다. 정상적인 사회라면 특정 사안에 다양한 견해가 존재하는 것이 당연하다. 국가가 결정한 내용을 일사불란하게 따르는 나라를 '파시스트 국가'라고 부른다.) 그러나 이 비민주적 효율이 성공하던 시대는 이미 오래 전에 지났다.
구글, 페이스북, 트위터, 리눅스, 오페라 등 현재 세계를 휩쓰는 신기술이 어느 곳에서 왔는지 보라. 이 나라들의 공통점은 가장 발달된 민주적 소통양식, 다시 말해 매우 비효율적인 의사소통을 하는 사회라는 점이다. 이것은 결코 우연이 아니다. 소프트웨어 기반 최신 기술은 하루가 멀다 하고 변화한다. 관료 몇 명이 밀실에서 모여 결정하고 밀어붙이는 방식은 '효율적 실패'만을 낳을 뿐이다.

본인확인제와 실명제는 민주주의 국가에서 유례를 찾기 어려운 억압적이고 제도다. 이 정책은 중요한 개인정보가 담긴 주민등록번호를 일상적으로 입력하도록 요구함으로써 아이디 도난과 신장정보 유출을 조장하는 결과를 낳았다. 사진은 한국의 주요포털이 외국인 가입자에게 요구하는 전화인증 안내문.

ⓒ Naver

비효율이 성공하는 시대
관리들의 밀실행정과 규제정책이 위험한 이유는 이들이 꼭 신기술에 무지해서가 아니라 (물론 많은 경우 그렇지만), 새로운 미디어 환경에서는 국민 개개인이 곧 기술과 '콘텐츠'의 생산자이기 때문이다. 국민의 목소리에 귀를 막는 것은 신기술의 발전방향을 놓치는 것이며, 이들의 입을 막는 것은 곧 기술과 콘텐츠의 발전을 막는 것이다.
애플의 아이폰을 세계에서 가장 매력적인 제품으로 만든 것은, 소프트웨어의 확장 가능성 못지않게 모든 이에게 열린 '앱스토어'다. 이곳은 청소년에서 노인에 이르기까지 다양한 사용자들이 창의력과 재치를 발휘하는 공간이 되고 있다. '제 2의 인터넷'을 구성하고 있는 페이스북에 풍요로운 정보를 채워 넣는 것 또한 일반 사용자들이 하는 일이다. 이 제품과 서비스들은 하나같이 시민들의 자유로운 참여를 보장함으로써 성공을 이어가고 있다.
이들이 부러운가? 방법은 의외로 쉽다. 첫째 해야 할 일은 본인확인제를 폐지하는 것이다. 이것은 자유로운 의사소통의 전제조건인 동시에 인터넷 업체들이 한국 밖으로 서비스를 확장하는 토대가 될 것이다.
둘째는 컴퓨터, 모바일 기기, 그리고 웹브라우저의 종류와 상관없이 인터넷을 쓸 수 있도록 하는 것이다. 이는 한국의 인터넷이 특정 컴퓨터 기종이나 소프트웨어에 갇히지 않고 국제적 경쟁력과 다양성을 갖추게 하는 기본요건이다. 낡은 액티브엑스 기반의 인증 제도를 폐지해야 하는 것은 물론이다.
세 번째는 '경쟁'에 대한 발상의 전환이다. 예컨대 한국 통신업체간에 경쟁을 유발함으로써 독과점 체제를 깨는 것은 좋은 일이다. 그러나 초등학생마저 자살로 몰아가는 '국내용 교육경쟁'은 비인간적일 뿐 아니라, 미래의 국가경쟁력에 아무 도움이 되지 않는다. 구글과 애플이 보여주었듯, 이제 경쟁력의 원동력은 창의력이지 줄 세우기식 암기교육이 아니다. 이제 '어떻게 공부시킬까'보다 '어떻게 놀리며 창의력을 길러줄까'를 고민해야 할 때가 왔다.
이 부분은 이어지는 기사 '명텐도는 왜 닌텐도가 될 수 없는가'에서 자세히 다룰 것이다.
[☞ 오마이 블로그]
[☞ 오마이뉴스E 바로가기]
- Copyrights ⓒ 오마이뉴스, 무단 전재 및 재배포 금지 -

 

 

 

원문기사

 

 

인터넷 하면서 이런 개념기사는 처음 봤습니다.