Linux/CentOS2012. 3. 2. 14:08

리눅스 전문가들은 텍스트 모드에서 작업하는 게 그래픽 모드 보다 사용이 편하고 빠르다고 한다. 하지만, 초보자 입장에서는 아무래도 그래픽 모드가 편하고, 텍스트 모드에 익숙하다 해도 몇몇 작업은 그래픽 모드가 편할 수 있다. 그래서, CentOS에 그래픽 모드로 원격 접속하는 방법을 알아보도록 하겠다.

1. 서버에 소프트웨어 설치

일단 CentOS가 설치된 서버에 GUI가 설치되어 있어야 한다. 만약 설치되어 있지 않다면 다음과 같이 명령하여 설치한다.

yum groupinstall "X Window System" "KDE Desktop"

원격 접속은 VNC를 사용한다. 서버에 VNC 소프트웨어를 설치한다.

yum install tigervnc-server

2. 방화벽 설정

방화벽에서 5901 포트를 열어준다.

VNC 기본 포트는 5900이며, 위에 2:root 3:otherID 이 숫자만큼 더한 포트가 각 계정에 할당된 포트임
5902 포트 : root
5903 포트 : otherID 


메뉴 > 시스템 > 관리 > 방화벽
- 그 외의 포트
  . 5900, tcp, vnc-server
  . 5901, tcp
- 포트포워딩
  . 소스: tcp, 5900
  . 수신지: 로컬포트포워딩, 5901


#system-config-securitylevel-gui

또는

#system-config-securitylevel


단지 포트가 막힌 경우, #/etc/init.d/iptables stop

 iptables 설정여부 확인: #iptables -nL

 해지된 경우,

 Chain INPUT (policy ACCEPT)

target     prot opt source               destination        

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

로 표시됨.
 

  • 방화벽에서 해당 사용자의 port를 오픈하여야 한다.
#--- /etc/sysconfig/vncservers에 등록된 1번부터 5901 port를 사용 한다.
  • VNC Client에서 접속 시
VNC Viewer로 접속시 "IP:5901"로 접속 한다.TightVNC Viewer로 접속시 "IP:1"로 접속 한다.
  • 처음 접속이 완료되면 xstartup 파일이 생성된다. 이를 수정하여 예쁜화면을 사용하자.
cdcd .vncvi xstartup    ### twm &                #--- 이 라인을 주석 처리(삭제) 한다.    gnome-session &          #--- 이 라인을 추가 한다.
3. 설정 파일 수정

VNC 설정 파일은 

/etc/sysconfig/vncservers

이다. 설정 파일 마지막에 다음을 추가한다. 

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768"

root이라는 사용자에게 1번을 할당하고 접속 시 해상도를 1024X768로 한다는 뜻이다. 

 //////////////////////////////////////////////////////////////////////////

#vi  /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:apple"
VNCSERVERARGS[1]="-geometry 640x480"
VNCSERVERARGS[2]="-geometry 800x600"

#vncpasswd

#su  -  apple
$vncpasswd
$exit
#

#service  vncserver  restart

리눅스에서 다른 vncserver 로 접속할 때는
#vncviewer 를 입력하면 된다.

 http://wiki.centos.org/HowTos/VNC-Server

////////////////////////////////////////////////////////////////////////// 
 

4. 비밀번호 설정

다음의 명령어로 비밀번호를 설정한다.

vncpasswd root

5. VNC 실행

처음 실행시 다음과 같이 명령한다.

vncserver

비밀번호를 입력하면 다음과 같이 몇가지 파일을 생성했다는 메시지가 나온다.

New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1
Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

이후 다시 시작할 때에는 다음과 같이 명령하면 된다.

service vncserver start

6. VNC Viewer 설치

접속을 하는 컴퓨터에 VNC Viewer 프로그램을 설치한다. 내가 사용하는 것은 TightVNC이다.

http://www.tightvnc.com/download.php

에서 다운로드 받을 수 있다. 설치 옵션에서 Viewer 프로그램만 설치하면 된다.

7. 접속

VNC Viewer를 실행시키고, 접속하려는 서버의 아이피와 ':1'을 입력하고 [Connect]를 클릭한다. 즉, 아이피가 192.168.0.101이라면

192.168.0.101:1

이라고 입력하면 된다. 그리고 비밀번호 입력하면 접속 된다.

8. Starting vncserver at boot

To start vncserver at boot, enter the command /sbin/chkconfig vncserver on.

---> http://wiki.centos.org/HowTos/VNC-Server 



CentOS 5.5 에는 기본적으로 VNC Server가 설치되어 있어 환경설정과 서비스 등록만으로 VNC를 사용할 수 있다.

1. 환경

- CentOS 5.5  : 설치됨
- VNC Viewer : http://www.uvnc.com/download/ 에서 다운로드


2. 설정

# vi /etc/sysconfig/vncservers


3. vncservers 내용 수정

# The VNCSERVERS variable is a list of display:user pairs.

#

# Uncomment the lines below to start a VNC server on display :2

# as my 'myusername' (adjust this to your own).  You will also

# need to set a VNC password; run 'man vncpasswd' to see how

# to do that.

#

# DO NOT RUN THIS SERVICE if your local area network is

# untrusted!  For a secure way of using VNC, see

# <URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html>.


# Use "-nolisten tcp" to prevent X connections to your VNC server via TCP.


# Use "-nohttpd" to prevent web-based VNC clients connecting.


# Use "-localhost" to prevent remote VNC clients connecting except when

# doing so through a secure tunnel.  See the "-via" option in the

# `man vncviewer' manual page.


# VNCSERVERS="2:myusername"

# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"


VNCSERVERS="1:root"

VNCSERVERARGS[1]="-geometry 12800x800"


4. VNC 암호 설정

# vncpasswd
Password:
Verify:


5. Port 확인 및 방화벽 오픈

# netstat -antp
 

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:5801                0.0.0.0:*                   LISTEN      25974/Xvnc

tcp        0      0 0.0.0.0:5901                0.0.0.0:*                   LISTEN      25974/Xvnc

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      2629/portmap

tcp        0      0 0.0.0.0:6001                0.0.0.0:*                   LISTEN      25974/Xvnc



# vi /etc/sysconfig/iptables

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
  (추가)

5-1. iptable restart
# /etc/rc.d/init.d/iptables restart

6. VNC Server 시작

# service vncserver start

 
7. 서버 부팅시 자동 실행 service로 등록

# chkconfig vncserver on

  
8. 윈도우에서 그래픽모드로 보기 위한 설정

# vi /root/.vnc/xstartup



#!/bin/sh


wing two lines for normal desktop:

# unset SESSION_MANAGER (# 제거)

# exec /etc/X11/xinit/xinitrc (# 제거)


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

twm &


# Uncomment the following two lines for normal desktop:

unset SESSION_MANAGER

exec /etc/X11/xinit/xinitrc


[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

twm &



9. VNC Viewer로 접속 확인 


10. 접속화면

11. 참고
http://jonnychoe.egloos.com/5472045


( VNC 서버 실행 시 오류 및 해결 )

xauth:  creating new authority file /root/.Xauthority

xauth: (stdin):1:  bad display name "mycent:1" in "add" command


New 'mycent:1 (root)' desktop is mycent:1

( 해결책 )
/etc/hosts, /etc/sysconfig/network 두 파일안에 호스트명이 제대로 입력되어 있는지 확인해 본다.

  • 실행 파일 : /usr/bin/
  • 환경 설정 : /etc/sysconfig/vncservers
  • 기동 종료 : /etc/init.d/vncserver start, stop, restart 


  • VNC server로 리눅스 화면 보기
        http://newpolaris.springnote.com/pages/1625192

        서버에서 아래와 같이 vnc 서버 준비
          $ vncserver [ -geometry 1280x1024 ] [ :1 ]

        클라이언트에서 아래와 같이 접근
          $ vncviewer server_addr:1

        이렇게 띄우면 서버의 로컬화면과 무관한 X 환경이 뜬다.
        그리고, vncviewer 종료해도 이 환경의 동작상태는 그대로 유지된다.
        즉 vncview가 동작하는 클라이언트 컴이 갑자기 죽거나 재부팅되더라도 서버 동작은 끊기지 않는다.
        다만, twm 기반의 조악한 환경이라서 불편한데 gnome/kde 등의 편리한 기본환경을 쓰고싶으면,
        ~/.vnc/xstartup 파일을 편집하여 아래 두 줄을 주석에서 풀어주면 된다.

          unset SESSION_MANAGER
          exec /etc/X11/xinit/xinitrc

        vnc를 통해 gnome에 로긴한 상태에서 gnone 로그아웃하면 GUI 환경이 죽은것도 산 것도 아닌 메롱상태에 빠진다.
        이 경우 서버에 ssh 접근하여 아래와 같이 해당 vnc 세션을 죽이고 다시 띄워야 했다.
          $ sudo vncserver -kill :1


    원도우에서 리눅스 vnc 원격제어하는 방법
        http://comzil.com/1216

    VNC로 윈도우에서 Linux로 접속하기
        http://kldp.org/node/43670

        vnc를 통해 X윈도우 로컬화면(localhost:0)을 공유하기 위한 vino 사용법이 나온다.
        ( http://kldp.org/node/43670#comment-155851 )

        리눅스박스에서 그놈에 로그인하고 프로그램-기본설정-원격데스크탑 메뉴에 들어가서
        "다른 사용자가 데스크탑을 제어할수 있도록 합니다"에 체크하고,
        클라이언트에서 server_address:0 으로 vnc 접근하는 식이다.

        리눅스박스에서 로그아웃 하거나, VNC 접근한 클라이언트가 로그아웃하게 되면
        공유할 "로컬화면"이 사라지므로 공유가 성립되지 않게 된다.
        리눅스박스에서 그놈에 로긴하는 것이 vino 동작의 전제조건이 되는 것 같다.

        rpmforge에서 설치한 x11vnc도 vino와 비슷하게 동작한다.
        (리눅스박스의 로컬화면에서 x11vnc 서버를 띄우고 간단히 설정하면 로컬화면이 vnc로 공유됨)


    Freenx in Wikipedia
        http://en.wikipedia.org/wiki/Freenx

        NX의 주요 구성요소는 nxproxy와 nxagent인데,
        - nxproxy는 X서버와 X클라이언트 모두에서 동작하며 X 프로토콜을 압축(1:10 ~ 1:100)하는 역할을 하고
        - nxagent는 X클라이언트에서 동작하며 X 프로토콜의 라운드트립지연을 제거하는 역할을 한다고 함.
        - NX 하부의 통신은 ssh를 써서 이루어지므로 프로토콜 전체가 암호화된다.
        - NX 세션은 suspend/resume이 가능하다. 원격접근한 상태에서 로컬PC가 갑자기 죽어도 
          세션은 유지되므로 서버에서는 여전히 작업이 진행된다. 이후 다시 접근하여 GUI 제어권을 되찾을 수 있다.

        주의: X서버/X클라이언트는 흔히 생각하는 서버/클라이언트와는 동작위치가 다르다.
           보통은 사용자PC가 클라이언트가 되고 원격지의 고성능장비가 서버 역할을 하지만,
           "X서버"는 사용자PC에 떠있는 Xming, Cygwin-X, Xmanager같은 X서버(X터미널 에뮬레이터)를 뜻하고,
           "X클라이언트"는 원격지의 장비에서 동작하는 xterm 같은 프로그램을 가리킨다.
           "X클라이언트"는 "X서버"가 제공하는 디스플레이 서비스를 이용해 자신의 GUI를 나타내는 식이다.

    FreeNX 홈페이지
        http://freenx.berlios.de/

    NX server using FreeNX
        http://wiki.centos.org/HowTos/FreeNX

        CentOS5에서는 FreeNX가 extras repo에서 제공된다. 아래와 같이 쓰면 된다.
        $ sudo service freenx-server start

        NX는 X 세션을 최적화하는 기능 말고도 VNC, RDP 등에 대한 proxy기능도 제공한다.
        VNC proxy 기능은 서버박스에서 vncviewer를 띄워 제3의 장비(또는 서버박스 자신.
        이 경우 x11vnc도 쓰임)에 접근하고 그 VNC 세션을 중계해주는 식으로 동작한다.
        RDP proxy 기능은 서버박스에서 rdesktop을 띄워 제3의 장비에 접근하여 RDP 세션을 중계해준다.

        NX를 통해 gnome 환경을 띄웠을때 한글입력기가 제대로 동작하지 않는 문제를 해결하는 방법.
        /etc/profile이나 ~/.bash_profile 정도에 아래 세 줄 추가.
        (참고 : http://withdev.com/entry/Linux-개발-환경-구축하다)

          export XMODIFIERS="@IM=SCIM"
          export GTK_IM_MODULE=scim
          export QT_IM_MODULE=scim

    "Re: NX service unavailable or access is disabled" 오류 해결
        http://ubuntuforums.org/showthread.php?t=1012056

        클라이언트에서 /etc/nxserver/client.id_dsa.key 대신 아래의 키를 쓰게 하니 해결되었다.
        $ cat /var/lib/nxserver/home/.ssh/client.id_dsa.key

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

    vnc 설치 방법

    #yum -y install vnc

    #yum -y install vnc-server

    로 vnc와 서버를 설치한다.

     

    /usr/bin/에 아래의 실행파일들이 설치된다.

     

    Xvnc : vnc서버 실행, vncserver가 Xvnc를 실행한다
    vncconfig : 환경설정 파일인 듯 하다
    vncpasswd : vnc클라이언트에서 접속시 사용하는 비밀번호를 설정할 수 있다 
    vncserver : vnc서버를 실행한다. (pstree | grep Xvnc로 실행확인)
    vncviewer : 클라이언트가 vnc서버에 접속할 때 사용한다
    x0vncserver : 아직 모르겠음


    vnc서버 실행 방법

    #vncserver :포트번호

    포트번호를 적지 않으면 5900번에서부터 1씩 순차적으로 받는다.

    포트번호를 적으면 [5900 + 포트번호 = 실제 포트번호]이런식으로 적용된다.

    위 내용은

    #vi /usr/bin/vncserver

    으로 확인이 가능하다.

    #chkconfig vncserver on (서버 재부팅 시 자동시작)


    #vncserver 를 입력했는데도 Xvnc가 실행이 안되는 경우

    source설치와 yum, rpm설치를 닥치는대로 하다보면 실행파일이 엉키는 경우가 있다.

    path로 설정되어 있는 vncserver가 둘이다 보니 충돌이 나서 실행된 것 처럼 보이지만 실행되지 않는 것.

    둘 중 하나를 삭제하면 제대로 실행된다.


    1. yum, rpm 설치를 했다면 /usr/bin/ 폴더에 vnc관련 파일이 있다면 전부 삭제한다.

    2. 소스 설치를 했다면

    #yum -y remove vnc

    #yum -y remove vnc-server

    로 삭제해준다.


    ※교훈 : 프로그램을 설치와 삭제는 확실히 해줘야 뒷탈이 없다.



    /usr/bin/vncserver 설정

     

     

    vncserverv파일에서는 또한 .vnc/xstartup의 기본적으로 들어가는 내용을 설정할 수 있다.

    또 클라이언트로 접속했을 때 화면의 해상도도 설정할 수 있다.

    36 $geometry = "1024x768";


    vncserver 환경설정

    # vi /etc/sysconfig/vncservers

    # VNCSERVERS="포트번호:유저ID"
    # VNCSERVERARGS[포트번호]="-geometry 1152x864 -nolisten tcp -nohttpd -localhost"
    여기에서도 해상도를 설정할 수 있다.


     

    vncpasswd로 비밀번호 설정

    vncserver를 실행하면 클라이언트로 접속할 시 입력해야하는 비밀번호를 설정한다.

    이것은 나중에 vncpasswd로 재설정 할 수 있다.

     

    #vi .vnc/xstartup 설정

    vncserver를 실행하고 나면 홈폴더에 .vnc/xstartup이라는 파일이 생긴다.

    여기에서는 클라이언트가 접속했을 때 보이는 화면을 설정할 수 있다.

    초기 설정은 twm &으로 되어 있는데 접속하면 회색윈도우에 퍼미널만 떠있다.

    GUI로 보이게 하려면 KDE와 GNOME 둘 중 하나로 설정해준다.


    VNC의 GUI 설정하기

    서버의 GUI와 같은 화면을 보려면

     4 # unset SESSION_MANAGER
     5 # exec /etc/X11/xinit/xinitrc

    이 부분의 주석처리를 제거해도 된다.

     

    KDE로 할 경우

    twm &부분을 지우고 startkde &으로 적어준다.

    GNOME으로 할 경우

    twm &부분을 지우고 gnome-session &으로 적어준다.

     

    혹, 저렇게 해도 GUI로 제대로 안 보이는 경우가 있다.

    그건 KDE나 GNOME이 제대로 설치가 안 되어 있어서 그런 것 같다.

    그럴 때는 다시 설치해준다.

     

    KDE 설치

    #yum groupinstall "KDE (K Desktop Environment)"

     

    GNOME 설치

    #yum groupinstall "GNOME Desktop Environment"


    ※교훈 : 프로그램을 설치와 삭제는 확실히 해줘야 뒷탈이 없다.

    리눅스에서 뭔가가 다른 사람들이 한 방법으로 되지 않으면 반드시 설치가 제대로 됐는지 삭제는 제대로 됐는지 확인해본다.

    [출처] CentOS5 VNC 설치|작성자 금소

    'Linux > CentOS' 카테고리의 다른 글

    CentOS ssh 접속 한글깨짐 수정  (0) 2012.03.02
    CentOS 방화벽 설정  (0) 2012.03.02
    CentOS 명령어  (0) 2012.03.02
    CentOS 단축키  (0) 2012.03.02
    CentOS 관련 사이트  (0) 2012.03.02
    Posted by iWithJoy
    Linux/CentOS2012. 3. 2. 14:01
    CentOS: http://www.centos.org/

    CMS Factoryhttp://www.cmsfactory.net/linux

    Broko tistory: http://broko.tistory.com/category/Linux 

    서버관리: http://develop.ablog.me/category/CentOS.aspx 

    'Linux > CentOS' 카테고리의 다른 글

    CentOS ssh 접속 한글깨짐 수정  (0) 2012.03.02
    CentOS 방화벽 설정  (0) 2012.03.02
    CentOS 명령어  (0) 2012.03.02
    CentOS 단축키  (0) 2012.03.02
    CentOS VNC(Virtual Network Computing)  (0) 2012.03.02
    Posted by iWithJoy
    Web2012. 1. 30. 15:53

    XP 서버에 XAMPP 1.6.4 (Apache + php + mysql) 환경에서 구동하는 경우,

    트래픽이 그다지 없고, 대역폭이 여유로운 상황에서 서버 사양이 P4 3.0 Ghz 에 Ram 1G 환경이라
    웹서버가 느려질 이유가 전혀 없음에도 불구하고, 상당히 느린 반응 속도가 고질 적인 문제 였습니다.

    현재 한참 개발 중인 Zeroboard XE 문제도 아니었던 것이 Zeroboard 4 나 Wordpress 를 사용할 때에도
    상당히 느린 반응 속도를 가지고 있었습니다.

    생각 날때마다 mysql 이나 httpd.conf 설정을 살펴 보긴 했지만 해결이 되지 않았었는대, 문제 해결을 위한
    가장 기본적인 접근 방법을 잊고 있었더군요. (서버를 만지는걸 어느 순간 신경 안쓰게 된 탓이겠지요)

    Apache 의 error 로그를 뒤져 보았습니다.

    [Fri Sep 08 04:02:33 2006] [warn] (OS 121)세마포어 시간 초과 기간이 만료되었습니다. : winnt_accept: Asynchronous AcceptEx failed.
    [Fri Sep 08 04:02:33 2006] [warn] (OS 64)지정된 네트워크 이름을 더 이상 사용할 수 없습니다. : winnt_accept: Asynchronous AcceptEx failed.


     위와 같은 에러가 정말 많더군요. 이상 적인 CPU 점유율과 느린 반응의 원인이 MS 환경 (Win32- xp,2000 서버) 의 멀티 프로세스 모듈과 어우러진 아파치의 버그 더군요.

    해결 방법은 httpd.conf 에 다음과 같은 라인을 추가 하는 것 입니다.

    Win32DisableAcceptEx


    "Win32DisableAcceptEx"  이 라인 핵심 라인 입니다.

    추가 시켜 주시고 아파치를 재구동 하면 됩니다.

    http://www.mydigitallife.info/2006/03/09/winnt_accept-asynchronous-acceptex-failed-error-in-apache-log/  (영문)

    이곳에서 확인하시면 서버 안정성에 문제를 발생 시킬 수도 있다고는 하는대, 서비스가 엄청나게
    느려지는 것 보다는 나아서 httpd.conf 를 바꾸고 반응 속도를 보았더니 속이 다 시원합니다.

    acceptEX 는 MS 가 만든 확장 Network API 라더군요. Linux 나 다른 OS 환경에서는 발생하지 않는 오류입니다.
    개인적인 생각에 확장 API 를 사용하지않는 설정 이기 때문에 안정성과는 큰 관련이 없을 것이라 여겨집니다.

    오류가 나온지 한참 되었는대도 아파치에서 수정되지 않는 걸 보면 MS 쪽 문제 일려나요


    <추가>

    Win32DisableAcceptEx 는 Apache version 2.0.49 부터 이후 버전에만 가능합니다

    Apache 1.X 버전을 사용하고 있는 분들은 다른 해결책을 찾으셔야 합니다.


    참고로 JSP환경에서 톰캣 서블릿 엔진과 아파치를 연동하여 사용할 경우에도 위와 같은 상황은 적용됩니다.
    혹시, 아파치 2.2 버전에서 Win32DisableAcceptEx 구문을 넣었는데 이번에는 다른이유로 웹속도가 느려진다면
    다음과 같이 지정해 주세요. 그러면, 속도가 눈에 띄게 향상될 것입니다.
    참고로 이 설정은 MS에서 만든 확장 Network API 인 AcceptEx를 사용하지 않고 오리지널 Accept를 사용하도록 하는 설정입니다.
    <IFModule mpm_winnt_module>
        Win32DisableAcceptEx
    </IFModule>
     

    Posted by iWithJoy
    카테고리 없음2012. 1. 13. 19:06
    $_SERVER['DOCUMENT_ROOT'] = 현재 사이트가 위치한 서버상의 위치 => /webapp/include

    $_SERVER['HTTP_ACCEPT_ENCODING'] = 인코딩 받식 => gzip, deflate

    $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 언어 => ko

    $_SERVER['HTTP_USER_AGENT'] = 사이트 접속한 사용자 환경 => Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705

    $_SERVER['REMOTE_ADDR'] = 사이트 접속한 사용자 IP => xxx.xxx.xxx.xxx

    $_SERVER['SCRIPT_FILENAME'] = 실행되고 있는 위치와 파일명 => webapp/include/index.php

    $_SERVER['SERVER_NAME'] = 사이트 도메인 => www.eos.pe.kr

    $_SERVER['SERVER_PORT'] = 사이트가 사용하는 포트 => 80

    $_SERVER['SERVER_SOFTWARE'] = 서버의 소프트웨어 환경 => Apache/1.3.23 (Unix) PHP/4.1.2 mod_fastcgi/2.2.10 mod_throttle/3.1.2 mod_ssl/2.8.6 OpenSSL/0.9.6c

    $_SERVER['GATEWAY_INTERFACE'] = cGI 정보 => CGI/1.1

    $_SERVER['SERVER_PROTOCOL'] = 사용된 서버 프로토콜 => HTTP/1.1

    $_SERVER['REQUEST_URI'] = 현재페이지의 주소에서 도메인 제외 =>  /index.php?user=???&name=???

    $_SERVER['PHP_SELF'] = 현재페이지의 주소에서 도메인과 넘겨지는 값 제외 =/ index.php

    $_SERVER['APPL_PHYSICAL_PATH'] = 현재페이지의 실제 파일 주소 => D:\webapp/


    <?
    $a1 = $_SERVER["REQUEST_URI"] ;

    //웹 절대경로(?)
    $a2 = $_SERVER["SCRIPT_NAME"];
    $a3 = $_SERVER["PHP_SELF"] ;

    //서버명
    $a4 = $_SERVER["SERVER_NAME"] ;
    $a5 = $_SERVER["HTTP_HOST"] ;

    //웹서버 document 디렉토리
    $a6 = $_SERVER["DOCUMENT_ROOT"];

    //파일전체경로
    $a7 = $_SERVER["PATH_TRANSLATED"] ;
    $a8 = $_SERVER["SCRIPT_FILENAME"] ;
    $a9 = __FILE__ ; //이건 좀 틀리져. 인클루드한 파일에서도


    echo "
    <br>
     \$_SERVER[\"REQUEST_URI=\"] ->  $a1 , $REQUEST_URI<br>
    <br>
    //웹 절대경로(?) <br>
    \$_SERVER[\"SCRIPT_NAME\"] -> $a2  , $SCRIPT_NAME<br>
    \$_SERVER[\"PHP_SELF\"]  ->$a3 , $PHP_SELF<br>
    <br>
    //서버명 <br>
    \$_SERVER[\"SERVER_NAME\"] ->$a4 ,$SERVER_NAME<br>
    \$_SERVER[\"HTTP_HOST\"] ->$a5 , $HTTP_HOST<br>
    <br>
    //웹서버 document 디렉토리 <br>
    \$_SERVER[\"DOCUMENT_ROOT\"] ->$a6 , $DOCUMENT_ROOT<br>
    <br>
    //파일전체경로 <br>
    \$_SERVER[\"PATH_TRANSLATED\"] ->$a7 , $PATH_TRANSLATED<br>
    \$_SERVER[\"SCRIPT_FILENAME\"] ->$a8 , $SCRIPT_FILENAME<br>
    <br>
    \__FILE__ ; //이건 좀 틀리져. 인클루드한 파일에서도 ->$a9 <br>
    <br>
    ";
    ?>
    Posted by iWithJoy
    Mobile2011. 12. 28. 15:50

    최근 이동전화를 비롯한 다양한 모바일 단말에서 웹 이용에 대한 요구가 점차 늘어가고 이는데, 이는 웹 기술이 유비쿼터스 환경에서의 다양한 유무선 통합 서비스를 실현 가능케 한다는 새로운 가치 발견에 근거하고 있다.

    결국 이것은 유선과 무선의 웹 환경이 하나로 통합되어야한다는 자연스러운 요구로부터 시작된 것이며, 이를 통하여 다양하고 새로운 비즈니스의 기회들이 창출될 것으로 예측된다.

    따라서 본고에서는 현재의 모바일 웹 환경에 대한 고찰과 함께, 모바일과 웹이 결합되는 차세대 모바일 웹 환경을 위한 표준화 동향과 이를 바탕으로 등장하는 모바일 웹의 새로운 가능성들을 조면하며, 나아가 향우 국내 모바일 웹 산업의 국제 경쟁력을 제고하기 위한 우리의 대응 전략에 대해서도 알아본다.

     

    우리나라의 휴대폰을 중심으로 하는 모바일 시장은 최근 몇 년간 급속한 발전과 변화를 이루어 왔으며, 이동전화 보급률도 지난 ‘96년 319만명에서 올해에는 4천만명을 넘어서고 있는 것에서도 알 수 있듯이, 이미 양적인 측면에서는 매우 큰 성장을 해오고 있다. 아울러 국내 모바일 단말 중 인터넷 접속이 가능한 단말의 보급율은 89%로 세계 1위에 해당하며, 모바일 단말을 이용한 무선 인터넷 사용률도 42%로 일본에 이어 세계 2위를 차지하고 있으며, 이러한 수치들은 일본을 제외한 나머지 국가들에 비해 2배 이상인 것으로 압도적인 우위를 보여주고 있다. 또한 최근에 다양한 융복합 모바일 단말이 확산되고, HSDPA를 비롯한 와이브로 등 본격적인 무선 인터넷 서비스가 시작되면서 모바일 단말을 통한 인터넷 이용에 대한 요구가 점차 높아지고 있으며, 실제로 모바일 단말에서도 유선과 같이 자유롭게 인터넷 웹 서핑을 원하는 기대 수준은 매우 높다고 할 수 있다. 

     

     

     

    1. 개요 및 현황


     

    하지만 현실은 그러한 무선인터넷 인프라의 성숙에도 불구하고 모바일 환경에서의 웹 응용과 활용 그리고 이를 통한 신규 비즈니스의 창출 측면에서 상대적으로 상당히 미미한 수준이라고 할 수 있다. 이런 현상의 원인은 모바일 웹 이용에 대한 비표준의 난립, 비싼 요금과 낮은 통신 속도, 불편한 사용자 인터페이스 그리고 사업자 중심의 폐쇄적인 모바일 서비스 환경과 수직적이고 계층화된 비즈니스 모델 등이 주요한 원인으로 꼽힌다.


    이처럼 복합적인 문제를 안고 있는 모바일 웹 서비스 환경을 개선하기 위한 선결사항은 올바른 표준의 개발과 확산으로부터 시작된다고 할 수 있으며, 최근 W3C 등의 국제표준화 기구를 중심으로 관련 표준화가 적극적으로 추진되고 있다. 아울러 웹2.0의 등장과 함께, 웹을 통한 새로운 비즈니스의 기회는 모바일에서 더욱 큰 반향을 불러일으키고 있는 등 모바일 웹의 새로운 변혁기를 맞이하고 있다.

     

     

     

    우선 기존의 모바일 웹 환경이 “모바일 웹 2.0”으로 진화하도록 만드는 몇 가지 배경들은 다음과 같다.


    초고속 무선 인프라의 보급 : 최근 무선 통신 기술의 발전으로 HSDPA, WiBro 등과 같은 초고속 무선 인프라의 보급은 통신속도와 통신비용의 문제를 해결해주고 있으며, 이를 통해 모바일 응용에 대한 인식을 새롭게 해주며, 이동성에 대한 장점을 극대화시키는 핵심 역할을 하고 있음

    모바일 단말의 고성능화 : 최근 모바일 단말은 화면 해상도와 메모리 용량 등이 크게 향상되어 처리할 수 있는 응용의 종류가 많아지고 있으며, 이로 인해 단말 성능의 절대적 한계라는 제약은 상당부분 사라지고 있음

    모바일 단말로의 컨버전스화 : LBS, GPS, RFID, MP3, DMB 등 다양한 기능이 상호 융합됨에 따라 모바일 단말의 기능은 단순 브라우징 방식에서 벗어나, 방송과 융합된 웹(IPTV), RFID나 LBS와 융합된 웹 응용 등과 같은 유비쿼터스 웹 응용들을 가능하게 하고 있음

    웹 표준의 발전과 재인식 : 다양한 단말을 대상으로 하는 웹 표준 기술에 대한 인식 변화인데, 웹 2.0을 중심으로 웹 표준에 기반한 AJAX 같은 새로운 사용자 인터페이스 방식의 복잡한 웹 응용들이 가능하게 됨으로써 웹 표준과 기술의 가치에 대한 재발견이 이루어졌다는 점과 함께, W3C의 MWI, MobileOK 등의 모바일 웹 표준화 활동을 통해 유무선 호환 콘텐츠, 유비쿼터스 웹 환경의 필요성에 대해서도 많은 인식 개선이 이루어지고 있음

    웹 2.0 기반의 새로운 수익모델 창출 : 웹 2.0의 “공유”, “개방”, “협력”, “참여”라는 키워드로 기존의 서비스들을 재평가하고 새로운 수익모델을 찾기 위한 노력들이 시작되고 있으며, 개방형 서비스 모델로 리스크와 중복성을 줄이며, 웹서비스와 매쉬업 등을 통해 새로운 응용과 장점들을 찾기 위한 시도들이 유/무선을 연계하며 시작됨

     

     

    2.2 모바일 웹 2.0의 주요 특징


    모바일 웹 2.0의 특징은 기존의 모바일 웹(모바일 웹 1.0)과 비교하여 <표1>과 같이 정리 할 수 있는데, 이 중에서 모바일 웹 2.0 환경의 가장 큰 특징 6가지는 다음과 같다.

       ① 고속 무선망 환경

       ② XML 기반의 콘텐츠 처리 방식

       ③ 표준 기반의 개방형 환경

       ④ RFID 및 LBS 등과 연계한 유비쿼터스 브라우징

       ⑤ 개방형 API와 모바일 웹서비스

       ⑥ AJAX와 같은 표준 기반의 고급 사용자 인터페이스 제공


    결국 모바일 웹 2.0에서도 웹 2.0과 마찬가지로 기존 1.0과의 가장 큰 차이점은 다양한 모바일 기술과 응용들을 엮는 “플랫폼으로서의 모바일 웹”이 된다는 점이다.


    <표 1> 모바일 웹 1.0과 모바일 웹 2.0의 비교

     

     

    아이폰이나 윈도 모바일 스마트폰 등은 현재까지 나온 제품 중 가장 큰 것이 3.5인치다. 아이폰이 3.5인치며 조만간 나올 삼성의 옴니아2가 3.7인치인 것으로 안다. 즉, 아직까지 넷북이나 UMPC, MID를 제외하고 스마트폰에서는 4인치 이상이 나오지는 않았다. 아니, 앞으로도 옴니아2의 3.7인치가 최고일 듯 싶다. 그 이상의 화면크기라면 스마트폰으로서의 디자인이나 크기, 무게에서 어울리지 않기 때문이다. 그리고 3.7인치라고 하더라도 WVGA(800 x 480)급이 최고일 듯 싶다. 물론 기술향상으로 3.5인치에서 1024 x 768의 해상도를 지닐 수는 있겠지만 그렇게 되면 화면에 비해 글자가 너무 작아서 가독성이 떨어지는 문제가 생기게 된다. 즉, 모바일에 적당한 크기와 해상도는 거의 정해져있으며 분명한 한계를 지니고 있다는 얘기다.

     

    옴니아2,1,아몰레드

    최대 3.7인치로 잡고 해상도를 WVGA(800 x 480)

     

    좌측은 모바일 네이버, 우측은 네이버 메인 화면

     

    트랜스코딩이라는 기술이 있다. 데스크탑용 인터넷 화면을 모바일에 맞게 디자인 등을 수정해서 보여주는 기술이라고 보면 이해가 쉬울 것이다. 트렌스코딩을 이용해서 한 것은 아닌 듯 싶지만 예를 들어 아이팟 터치에서 네이버를 접속할 때 네이버 메인(www.naver.com)으로 들어갈 때와 모바일용 네이버(m.naver.com)로 들어갈 때의 화면은 다르다. 물론 네이버 메인으로 들어갈때도 잘 보여준다. 하지만 모바일용 네이버로 들어갔을 때의 사용자는 좀 더 모바일에 맞는 사용자 경험을 얻을 수 있다. 좌우로의 스크롤이 필요없이 그냥 화면에 보여진 그대로를 이용할 수 있다는 얘기다. 물론 모바일용 네이버 서비스는 네이버 메인에서 제공되는 서비스를 다 제공하지는 못한다. 모바일에 맞춰서 필요한 서비스만 지원한다는 문제는 있다. 하지만 쓸데없이 좌우로 스크롤하면서 쓰는 것보다는 모바일용 네이버 서비스를 이용하는 것이 훨씬 더 편하다는 생각이 든다. 다음도, 파란도 비슷한 모바일용 서비스를 제공한다. 이런 모바일 전용 서비스가 모바일 웹에서는 필요하다는 생각이 든다.

    물론 모바일용으로 따로 만들어야 하는 문제가 있다. 서비스 업체 입장에서는 데스크탑용 서비스와 함께 모바일용도 같이 생각해야 하는 부담이 있는 것이 사실이다. 그렇다고 모바일용으로 서비스를 만들게 되면 데스크탑에서 사용하기에 조금 아니올시다라는 생각을 할 수도 있다. 물론 받아들이는 사람에 따라서 틀리지만 말이다. 여하튼 간에, 이중적인 부담(경제적으로도 그렇다)이 있지만 모바일 웹의 활성화를 위해서는 꼭 필요한 부분이라 생각이 든다. 오페라의 경우 이런 부분에 대한 부담을 줄이는 것으로 모바일에서도 데스크탑의 화면을 그대로 보여주는 풀브라우징을 얘기하고 있는 듯 싶다. 이 부분에 있어서는 나와는 생각이 조금 다르다는 느낌이다.

    모바일 웹에는 모바일에 맞는 구성적인 변화가 필요하다. 그것이 기능적인 변화든 디자인의 변화든 모바일의 환경에 맞는, 그리고 사용자가 편하게 다가설 수 있는 구성으로 가는 것이 옳다고 본다. 풀브라우징은 데스크탑과 모바일의 장벽을 많이 낮춰줬지만 하드웨어적으로 어쩔 수 없이 뛰어넘을 수 없는 벽이 아직까지는 분명히 존재하기 때문에 생각을 꼭 해야 한다고 본다. 미래에 레이저 화면 기술이 발전하여 모바일 디바이스에서도 레이저나 홀로그램 등을 이용하여 큰 화면을 볼 수 있다면 얘기가 틀려지겠지만 아직까지는 이러한 하드웨어적인 한계를 인정하고 그에 맞춰서 모바일 서비스(그것이 웹브라우저가 되었건 웹페이지가 되었건)를 준비할 필요가 있다는 생각이 든다.


     

     

    Mobile Browser & Reference

    국내·외 출시된 브라우저와 브라우저 관련 레퍼런스입니다.

     

    Mobile Web 1.0

    Mobile WEB 2.0

    네트웍

    저속 ( < 0.5MB)

    고속 ( > 0.5MB) – HSDPA, WiBro

    프로토콜

    WAP 프로토콜 기반의 WAP 브라우징

    (w)TCP/IP 기반의 풀 브라우징

    컨텐츠

    HTML & WML 중심의 컨텐츠

    XML&XHTML중심의컨텐츠

    사업모델

    폐쇄적 사업 모델

    개방형 사업 모델, 유무선 통합 모델

    기술모델

    폐쇄적, 독자적

    개방형,표준기반(MobileOK)

    브라우징방법

    WAP 사이트를 브라우징

    RFID 및 LBS등과 연계한 유비쿼터스

    브라우징,실세계태깅,RSS리더기능

    단말

    휴대 전화를 통한 접속

    다양한 모바일 단말을 통한 접속

    서비스

    하이퍼링크만 가능

    REST,SOAP,WSDL기반의

    모바일웹서비스

    인증

    집중화된 인증 방식

    분산 인증, Identity Management

    접속

    초기 URL을

    손으로 입력하는 방식

    자동 접속 방식 (WINC, 모바일 RFID, 2D 바코드 등)

    UI

    한 손 / 두 손 / 핸즈 프리

    멀티모달/유비쿼터스 웹 액세스기술

    (음성,제스처,RFID등)

    API연동

    하나의 서비스와 일부 API

    개방형 API와 매쉬업서비스

    요금

    종량제 (고비용)

    정액제 기반 (저렴한)

    광고

    광고 없음

    모바일 광고에 기반한 새로운 비즈니스 모델

    특징

    브라우징 전용

    플랫폼으로서의모바일웹


    Posted by iWithJoy
    Web2011. 12. 15. 16:48
    = Meta 태그 사용법 =

    == 검색 엔진을 위한 메타 태그 ==

    * 메타 태그 형식
    {{{
    <META NAME="태그이름" CONTENT="태그내용">
    }}}

    * 태그 종류
    ||'''이 름'''||'''설 명'''||
    || Subject     || 주 제 ||
    || Title       || 제 목 ||
    || Author      || 만든 사람 ||
    || Email       || 만든 사람 E-Mail 주소 ||
    || Publisher   || 만든 곳 ( 기업이나 단체, 조직 등 ) ||
    || Other Agent || 웹 책임자 / 관리자 ||
    || Date        || 만든 날짜 ||
    || Description || 페이지에 대한 설명 ||
    || keywords    || 검색 키워드 ||


    * 태그 예
    {{{
    <META NAME="Subject"     CONTENT="">
    <META NAME="Title"       CONTENT="">
    <META NAME="Author"      CONTENT="">
    <META NAME="Email"       CONTENT="">
    <META NAME="Publisher"   CONTENT="">
    <META NAME="Other Agent" CONTENT="">
    <META NAME="Date"        CONTENT="">
    <META NAME="Description" CONTENT="">
    <META NAME="keywords"    CONTENT="">
    }}}

    == 웹 페이지 효과를 위한 메타 태그 ==

    * 메타 태그 형식
    {{{
    <META HTTP-EQUIV="태그이름" CONTENT="태그내용">
    }}}

    * 태그 종류
    ||'''이 름'''||'''설 명'''||
    || Refresh    || 다른 페이지로 전환 ( 이동 ) ||
    || Page-Enter || 페이지로 들어갈때 효과 ||
    || Page-Exit  || 페이지를 떠날때 효과 ||


    * 태그 효과 사용법
    {{{
    <META HTTP-EQUIV="Page-Enter" CONTENT="revealTrans(Duration=시간,Transition=효과번호)">
    }}}
      * Transition - 화면 전환 효과 번호
      * Duration - 효과가 실행되는 시간


    * 태그 효과 종류
    ||'''효과 번호'''||'''설 명'''||'''효과 번호'''||'''설 명'''||
    || 0  || 가운데로 모으기 ( 박스 ) || 12 || 흩어 뿌리기 ||
    || 1  || 밖으로 펼치기 ( 박스 ) || 13 || 수직 안쪽으로 나누기 ||
    || 2  || 가운데로 모으기 ( 원 ) || 14 || 수직 바깥쪽으로 나누기 ||
    || 3  || 밖으로 펼치기 ( 원 ) || 15 || 수평 안쪽으로 나누기 ||
    || 4  || 위로 닦아내기 || 16 || 수평 바깥쪽으로 나누기 ||
    || 5  || 아래로 닦아내기 || 17 || 계단 모양 왼쪽 아래로 ||
    || 6  || 오른쪽으로 닦아내기 || 18 || 계단 모양 왼쪽 위로 ||
    || 7  || 왼쪽으로 닦아내기 || 19 || 계단 모양 오른쪽 아래로 ||
    || 8  || 세로 블라인드 || 20 || 계단 모양 오른쪽 위로 ||
    || 9  || 가로 블라인드 || 21 || 가로 실선 무늬 ||
    || 10 || 가로 체크 무늬 || 22 || 세로 실선 무늬 ||
    || 11 || 세로 체크 무늬 || 23 || 순서없이 전환 ||


    * 태그 예
    {{{
    <META HTTP-EQUIV="Refresh"    CONTENT="20; URL=http://kr.yahoo.com">
    <META HTTP-EQUIV="Page-Enter" CONTENT="blendTrans(Duration=0.5)">
    <META HTTP-EQUIV="Page-Exit"  CONTENT="blendTrans(Duration=0.5)">
    }}}


    = CSS Tips =

    == 배경에 이미지를 넣고 싶을때 ==

    글 아래에 이미지를 넣고 싶을때 CSS 코드에 다음과 같이 추가한다.

    {{{
    background-image: url("back.jpg"); // 이미지 주소
    background-repeat: no-repeat; // 반복하지 않고 한번만 출력
    background-position: 50% 50%; // 이미지 위치
    }}}

    {{{참고>}}} http://www.trio.co.kr/webrefer/css2/colors.html#background-properties
    Posted by iWithJoy
    Mobile2011. 12. 15. 15:01
    [아이폰용 모바일웹 제작 팁]

    1. HTML5 의 input 태그를 이용한 상황에 맞는 아이폰 자판 레이이웃 호출하기

    <input type="text" />
    <input type="search" />
    <input type="tel" />
    <input type="url" />
    <input type="email" />
    <input type="time" />
    <input type="number" />
    <input type="datetime" />
    <input type="week" />
    <input type="date" />

    2. 툴바숨기기

    <script type="text/javascript">
     window.addEventListener("load",function(){
      setTimeout(scrollTo,0,0,1);
     },false);
    </script>

    3. 화면 회전시 폰트사이즈 고정

    auto : 기본값, 화면회전후 비율에 맞게 폰트크기가 자동으로 조정됨.
    none : 회전시에도 폰크기 고정.
    n% : 폰트크기를 정한 크기로 변경.
     
     html {

          -webkit-text-size-adjust:none;

      }

    4. 모바일웹페이지를 가로 크기에 딱 맞추기

    user-scalable=no : 사용자의 확대보기 허용 여부(no/yes)
    initial-scale=1.0  : 페이지 로딩시 확대비율
    maximum-scale=1.0  : 최대확대비율
    minimum-scale=1.0  : 최소축소비율
    width=device-width : 플랫폼 가로 크기에 맞춤, 수치를넣으면 그수치에 맞게 맞춰짐.


    <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width" />

     5. 회전에 따라 다른 css 적용하기

     <script type="text/javascript">
     function orient()
     {
      switch(window.orientation){
       case 0: document.getElementById("orient_css").href = "css/iphone_portrait.css";
        break;
       case -90: document.getElementById("orient_css").href = "css/iphone_landscape.css";
        break;
       case 90: document.getElementById("orient_css").href = "css/iphone_landscape.css";
        break;
      }
     }
     window.onload = orient();
      </script>

     <body onorientationchange="orient();">
     </body>

     6. 기본 어플 호출하기

     - 전화걸기 : <a href="tel:1588-2120 ">블루웹 고객센터</a>

     - 문자보내기 : <a href="sms:010-0000-0000">문자보내기</a>
     - 문자보내기실행 : <a href="sms:">문자보내기</a>

     - 메일보내기실행 : <a href="mailto:">메일보내기</a>
     - 메일보내기 : <a href="mailto:echos@blueweb.co.kr">메일보내기</a>
     - 내용채워서 메일보내기 : <a href="mailto:echos@blueweb.co.kr?cc=echos@blueweb.co.kr&bcc=echos@blueweb.co.kr&subject=test subjct&body=test body"">메일보내기</a>


    'Mobile' 카테고리의 다른 글

    모바일웹의 모든 것  (0) 2011.12.28
    JS와 jQuery의 window,document 위치/크기관련 프로퍼티 비교  (0) 2011.12.15
    이동 태그 모음  (0) 2011.12.15
    Posted by iWithJoy
    Mobile2011. 12. 15. 14:36
    내용 :
    - JS와 jQuery의 window,document 위치/크기관련된 프로퍼티를 비교 해봤습니다.


    소스 :
    1. <!DOCTYPE HTML>
    2. <html>
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    5. <title>Untitled Document</title>
    6.     <style>
    7.         body
    8.         {
    9.             margin:0;
    10.             padding:0;
    11.         }
    12.        
    13.         #main
    14.         {
    15.             border:1px dotted #ff0000;
    16.             width:500px;
    17.             margin:50px;
    18.         }
    19.         #rect
    20.         {          
    21.             border:10px solid #ff0000;         
    22.             position:fixed;
    23.             left:120px;
    24.             top:100px;
    25.         }
    26.        
    27.     </style>
    28.        
    29.       <script  type="text/javascript"  
    30.     src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js">
    31.     </script>
    32.  
    33.     <script>
    34.     //http://www.w3.org/TR/cssom-view/#the-screen-interface
    35.     //http://www.quirksmode.org/dom/w3c_cssom.html
    36.     //http://debugjung.tistory.com/292
    37.     $(function()
    38.       {
    39.         var rect;
    40.         var main;
    41.         var nSW=5;
    42.        
    43.         rect        =$("#rect");
    44.         main        =$("#main");
    45.        
    46.         showInfo();
    47.        
    48.         createData();
    49.         startMove();
    50.        
    51.         function createData()
    52.         {
    53.             var strInfo="";
    54.             for(var i=0;i<100;i++)
    55.             {
    56.                 strInfo+=i+"<br>";
    57.             }
    58.            
    59.             main.html(strInfo);
    60.         }
    61.        
    62.         function showInfo()
    63.         {
    64.             var         strInfo="";
    65.             strInfo     ="$(window).width(), window.innerWidth = "+window.innerWidth+"<br>";
    66.             strInfo     +="$(window).height(), window.innerHeigh = "+window.innerHeight+"<br>";
    67.             strInfo     +="window.outerWidth = "+window.outerWidth+"<br>";
    68.             strInfo     +="window.outerHeight = "+window.outerHeight+"<br>";
    69.             strInfo     +="window.pageXOffset = "+window.pageXOffset+"<br>";
    70.             strInfo     +="window.pageYOffset = "+window.pageYOffset+"<br>";
    71.             strInfo     +="window.screenLeft = "+window.screenLeft+"<br>";
    72.             strInfo     +="window.screenTop = "+window.screenTop+"<br>";
    73.             strInfo     +="window.screenX = "+window.screenX+"<br>";
    74.             strInfo     +="window.screenY = "+window.screenY+"<br>";
    75.  
    76.            
    77.             strInfo     +="$(document).width(), document.body.scrollWidth = "+$(document).width()+"<br>";
    78.             strInfo     +="$(document).height(), document.body.scrollHeight = "+$(document).height()+"<br>";
    79.        
    80.             rect.html(strInfo);
    81.         }
    82.        
    83.         function on_Change()
    84.         {
    85.             showInfo();
    86.         }
    87.        
    88.        
    89.         function startMove()
    90.         {
    91.             setInterval(moveX, 20);
    92.         }
    93.        
    94.         function moveX()
    95.         {
    96.             autoScroll();
    97.             showInfo();    
    98.         }
    99.    
    100.         function autoScroll()
    101.         {
    102.             var nY      = window.pageYOffset;
    103.             var nMaxTop = $(document).height()-window.innerHeight;
    104.            
    105.             if(nY+nSW>nMaxTop)
    106.             {
    107.                 nSW     =-5;
    108.             }
    109.            
    110.             if(nY+nSW<0)
    111.             {
    112.                 nSW     =5;
    113.             }
    114.            
    115.             nY+=nSW;
    116.             window.scrollTo(0,nY);
    117.         }
    118.        
    119.       });
    120.     </script>
    121. </head>
    122.  
    123. <body>
    124.     <div id="main">            
    125.     </div>
    126.     <div id="rect">                  
    127.     </div>
    128. </body>
    129. </html>

    'Mobile' 카테고리의 다른 글

    모바일웹의 모든 것  (0) 2011.12.28
    아이폰용 모바일웹 제작 팁  (0) 2011.12.15
    이동 태그 모음  (0) 2011.12.15
    Posted by iWithJoy
    Mobile2011. 12. 15. 13:49

    <a href="javascript:window.scrollTo(0,100000);">맨 아래로</a> 
    <a href="javascript:window.scrollTo(0,0);">맨 위로</a>
    <a href="javascript:history.back()">BACKWARD</a>
    <a href="javascript:history.forward()">FORWARD</a>

    Posted by iWithJoy
    JavaScript2011. 12. 2. 14:22
    scrollWidth,scrollHeight 는 창의 크기가 아니라 문서의 크기입니다.
    브라우저의 "보이는 영역" 과 "보이지 않는 영역"(스크롤해야 볼 수 있는) 을 합한 것으로
    스크롤바를 움직여 볼 수 있는 모든 영역의 크기입니다.

    "보이는 영역" 만 구하려면 clientWidth,clientHeight 를 사용합니다.
    이들은 padding은 포함하고, margin, border, scrollbar는 포함하지 않는 크기입니다.

    offsetWidth, offsetHeight 는 padding, border, scrollbar 를 포함한 크기죠

    이들의 대소 관계는 이렇게 됩니다
    offsetWidth >= clientWidth
    scrollWidth >= clientWidth
    offsetWidth >=< scrollWidth

    [ test it ! ]
    <div style='width:150%;height:150%;'>
    <span onClick="window.resizeTo(500,500)">resizeTo(500,500)</a>
    <span onClick="alert(document.body.clientWidth)">clientWidth</a>
    <span onClick="alert(document.body.offsetWidth)">offsetWidth</a>
    <span onClick="alert(document.body.scrollWidth)">scrollWidth</a>
    </div>


    모바일웹에서의 HTML5의 기능: http://blog.daum.net/kkjjww1027/750

    'JavaScript' 카테고리의 다른 글

    ModalDialog 사용 시의 주의점  (0) 2011.04.25
    Posted by iWithJoy