728x90
# Web2.0의 적용?

Web2.0의 개념에서 말씀 드렸다시피 Web 2.0은 ‘사용자의 참여와 활용’ 이라고 말 할 수 있습니다.

그렇다면 ‘Web2.0의 적용’이란, ‘사용자의 참여와 활용의 적용’ 이 됩니다.

그런데, ‘사용자의 참여와 활용’의 주체는 ‘사용자’. 즉, 타인이기 때문에 타인의 행동을 ‘적용’한다라는 것은 문제가 있다고 생각합니다. 그래서, ‘Web2.0의 적용’이란 말은 모순인 것 같습니다.

때문에 ‘Web2.0의 적용’은 ‘Web2.0 환경의 도입’ 이라고 정정되어야 할 것이란 생각이 듭니다.

 

# Web2.0 환경

Web2.0 환경은 대단히 놀라운 기술들과 컨텐츠 들로 구성되어 있는 차세대적 시스템 일까요?

꼭 그렇지만은 않습니다. Web2.0 환경이 해주는 역할은 사용자가 컨텐츠에 참여를 할 수 있도록, 회사가 제공하는 컨텐츠를 활용할 수 있도록, 사용자가 컨텐츠를 타인과 공유(간접광고가 되겠죠)할 수 있도록 가능성을 부여해 주는 것입니다.

그렇기 때문에 Web2.0 환경의 시스템은 사용자의 참여를 어떻게 유도할 것인가를 항상 고민해야 하며, 그렇기에 Web2.0 환경의 도입은 시스템 마케팅 구상의 시작 이라고 할 수 있겠습니다.

Web2.0 도입의 성공사례들로 꼽히는 기업들도 결과적으로는 시스템 마케팅에 성공한 기업들 입니다.

 

# 외국 Web2.0 기업

구글(Google) -- http://www.google.com

구글은 지금까지 그 어느 기업도 하지 못했던, 최단 기간에 초고속 성장을 이룬 기업으로 꼽힙니다. 구글은 미국 용어사전에 Googling(인터넷에서 검색하다) 이라는 단어를 추가시킬 정도로 높은 영향력을 보이고 있으며, MS(Microsoft)을 물리칠 수 있는 가장 유력한 기업으로 손꼽히고 있습니다.

구글은 사용자의 일상이 곧 플랫폼이 된다고 생각하여, 이를 바탕으로 세계적인 지식서비스를 만들고 있습니다. 페이지랭크로 연결을 분석하여 API로 스며들고 Gmail, Google Reader, Google Doc & Spreadsheets 등 비공개 플랫폼을 확장 시켜 끝없이 컨텐츠 서비스를 제공하고 있습니다.

구글은 검색이라는 키워드를 중심으로 지식을 교환하고 연결하며 끝없는 공유와 참여를 유도하고 있습니다. 사용자 자신이 Web을 개발하는 형태라는 것에서 기존 기업과 차이가 있다고 할 수 있겠군요. 개인 개발자가 구글의 API를 이용하고 그 안에서 자기의 프로그램을 만들고 공유함으로써 자발적인 생산이 끝없이 이루어지며, 그것이 곧 구글의 성장 동력원으로 작용하게 되는 것 입니다.

 

야후(Yahoo) -- http://www.yahoo.com

Web 초창기 검색시장의 양대 산맥이라면 Yahoo와 Altavista를 꼽을 수 있었습니다.

화려한 전성기를 누리던 야후는 점차 쇠퇴하다가 Web2.0 환경으로 전환되면서 회사 조직뿐만 아니라 웹사이트 또한 대대적인 개편을 하게 되었습니다. 인터넷 검색포털 사이트들 중에서 최초로 전 세계의 야후에 Ajax를 도입하고 Web2.0 사이트를 오픈했습니다. 일본Yahoo(http://www.yahoo.co.jp) 처럼 아직 예전 야후의 모습을 한곳도 있습니다만, 대부분의 야후 들은 새 옷으로 갈아 입었습니다.

구글이 검색영역에 집중하고 있다면 야후는 검색의 보조수단인 수집과 공유에 힘을 쏟으며 사용자 서비스에 노력하고 있습니다.

Yahoo Toolbar, Yahoo Mini, Yahoo Widget등이 그것이며, Widget의 경우 Google이나 MS의 Gadget보다 먼저 서비스를 시작해서 Side Bar Object 부분에서는 Yahoo가 많은 영역을 확보하고 있습니다.

 

이베이(e-Bay) -- http://www.ebay.com 와 아마존(Amazon) -- http://www.amazon.com

e-Bay는 미국 최대의 온라인 쇼핑몰입니다. 한국에 G-Market이 있다면 미국에는 e-Bay가 있죠.

Amazon또한 도서 전문 쇼핑몰로 세계적으로 유명한 사이트 입니다.

이들은 인터넷 쇼핑몰 중에서 Web2.0을 도입한 대표적인 기업으로 꼽힙니다.

이들은 위의 기업들과 비교했을 때 놀라운 기술들을 가지고 있진 않습니다.

두 기업의 핵심은 상품에 대한 평가와 추천을 통해 사용자 참여를 유도한다는 것입니다.

국내 쇼핑몰의 제품 이용후기와 비슷하다고 생각하면 될 것 같습니다.

국내 Web 사용자들의 입장에서 보면 그리 특별한 것은 없다고 할 수 있습니다.

한편으론, ‘Web2.0 이라는 말이 지극히 외국 중심적이다.’ 라는 말의 좋은 예가 될 수 있겠군요.

단, 우리가 여기서 기억해야 할 것은 아마존의 진정한 가치는 20%의 베스트셀러에 있는 것이 아니라 매출은 적지만 구색을 갖추어 주는 80%의 책들에게 존재하는 Long Tail 환경에 있다는 것입니다.

 

# 국내 Web2.0 기업

국내 Web2.0 기업을 소개하기란 망설여 지는 것이 사실입니다.

일반적으로 UCC와 Blog, 검색과 커뮤니티라는 항목으로만 본다면 국내에는 수많은 Web2.0 기업들이 존재합니다.

포털사이트인 네이버, 다음, 엠파스, 야후, 네이트, 프리첼, 싸이월드 등

블로그 전문 서비스의 온블로그, 이글루스, 테터툴즈, 블로그코리아, 올블로그, 티스토리 등

동영상 UCC전문 사이트인 판도라TV, 엠군, 엠엔케스트, 아프리카, 태그스토리, 미디어몹 등

쇼핑몰 사이트인 G마켓, 옥션, 인터파크, D&Shop, 다나와 등등 너무 많습니다.

하지만, ‘이들이 정말 Web2.0 사이트인가?’ 라고 묻는다면 대답하기가 쉽지 않은 것도 사실입니다.

Daum과 Naver가 자신들의 API를 공개하였고, Mash Up 경진대회를 통해 개발자와 사용자들의 참여를 유도 하고 있지만 미미한 수준입니다.

IT강국이면서 세계 최고 수준의 인터넷 보급 율의 환경을 생각했을 때 국내의 Web2.0 움직임은 소극적이라고 할 수 있습니다.

 

# 국내 Web의 문제점

국내의 Web환경이 외국보다 뛰어남에도 불구하고 Web2.0의 도입이 쉽지 않은 것은 국내 기업문화의 특성상 외국만큼 공유와 개방에 적극적일 수 없기 때문입니다.

또한 그 동안 만연되어 있던 Internet Explorer(이하 IE)중심의 개발 환경으로 인해 국내 사이트들은 Web2.0의 기본인 웹 표준과 거리가 멀어져 있습니다. (해외의 경우 IE 점유율이 40~50% 인데 반해 국내는 IE가 웹 브라우저 시장의 80~90% 를 차지하고 있다.)

때문에 국내에서는 IE가 아닌 다른 브라우저를 통해서는 정상적인 웹 서핑을 하기가 어렵습니다.

특히, 금융사이트는 IE외의 브라우저는 거부하기 까지 합니다.

세계적으로 가장 많이 사용하는 브라우저인 Firefox, IE, 오페라, 사파리 들 중에서 웹 표준을 가장 준수하지 않는 것은 아이러니 하게도 우라기 가장 많이 쓰는 IE 입니다.

그렇기 때문에 국내 사이트는 자연스럽게 웹표준과 멀어지게 되었습니다.

이는 Web2.0의 시작을 외국 보다 먼저 했던 국내시장의 발목을 잡고 상대적으로 외국에게 뒤쳐지게 만드는 현상을 야기하고 있습니다.

아래는 Daum Communication의 윤석찬 팀장이 ‘Web2.0 컨퍼런스’에서 발표한 ‘기획자들이 알아야 할 10가지 기술 요소’ 입니다.

 

# 기획자들이 알아야 할 10가지 기술 요소

1.     Web 표준- Web2.0의 표준은 개발 속도 및 효율성 증대를 위해, 또 Web 서버 및 네트웍 트래픽 감소를 위해, Web Page 재 사용성 강화와 글로벌 비즈니스를 위한 글로벌 스탠다드 준수를 위해 필요하다.

2.     브라우저 지원- Web Browser의 지원은 고객의 기업 인지도를 향상하고 소수 사용자는 오피니언 리더가 되기 때문에 필요하다.

3.     유니코드- 국내 대부분 Web Site는 비 유니코드(EUC-KR)로 돼 있어 일본어 및 중국어 등 외국어 입력이 어렵다. 또 타 언어OS 및 브라우저 사용자의 정보 접근성이 제약됐다. 이러한 인코딩 문제가 해결되면 국제적인 서비스를 제공할 수 있게 되고 세계적인 Web 2.0 서비스를 만들 수 있는 기본 바탕이 되므로 과감하게 UTF-8으로 바꿔야 한다.

4.     논리적 주소체계- URL이 시멘틱해야 하는 이유는 url은 정보를 표현하는 기본 단위로서 영원해야 하기 때문. 따라서 Web 2.0 기반 주소 체계에서 url은 구조적이고, 예측 가능, 해석 가능해야 한다.
5.     컨텐츠 신디케이션- RSS는 RDF킬러 애플리케이션으로 데이터를 교환하는 방식을 전환한다. 모든 Web Page에 RSS를 제공하고, 멀티미디어, 광고, 검색 결과 등 모든 자료 전달의 방식을 변환해야 한다.

6.     오픈 API 모델- 오픈 API의 기본 원칙은 Web Page가 아닌 데이터를 디자인하라. 가능한 간단히 만들어라. 사람이 보기 좋고, 읽기 좋게 하라. 또 광범위한 표준을 재사용하고, 모듈화와 임베딩을 가능하게 하라.

7.     집단지성- 참여를 통한 사용자의 태깅 데이터를 항상 계산해, 관련 태그를 추천하고 분류하라. 탑 10 같은 것을 제공하지 마라. 사용자에 의해 만들어진 항상 최신의 인기있는 모든 것을 제공하라.

8.     가벼운 서비스 프레임웍- 가벼운 개발 플랫폼을 채용하라. 가벼운 개발 플랫폼은 개발 환경 세팅이 편리하고 개발 라이브러리의 풍족함, 빠른 프로토 타입을 가능하게 한다.

9.     풍부한 Web 애플리케이션- AJAX(Asychronous Javascript And Xml)는 XML 및 XSLT를 통한 데이터 교환 및 이용, DOM 을 함께 사용해 다이나믹 표현 제공하는 특징이 있다. Ajax기술은 블로그를 통해 기술 오피니언 리더들을 통해 전파되는 경향이 있다.

 10.   확장기능- 파이어폭스 익스텐션, 사파리 위젯, 야후 위젯 등 Web을 더욱 다이나믹하게 하는 엡플리케이션이 대세 기술이다.

 
"Web 2.0이란 아무도 소유하지 않고(no one owns it), 모두가 사용할 수 있고(everyone can use it), 누구나 개선할 수 있는(anyone improve it) 것이다"


 

# [참고] Web2.0 키워드

[Web2.0의 소비자문화 관련]

1.    UCC (User Created Contents)
대표적인 UCC사이트는 유튜브(http://www.youtube.com)이다.
회원수 7200만명, 구글에 16억5천달러에 인수합병

2.    Folksonomy
폭소노미는 대중에 의한 분류법
전통적인 디렉토리 방식의 텍소노미(Texonomy)보다 체계적이지는 않지만 형식에 얽매이지 않아 자유롭다.
디렉토리 방식은 포털의 사이트별 카테고리를 연상하면 되고,,
폭소노미가 잘 적용된 사이트은 플리커(http://www.flickr.com) 이다.
http://www.flickr.com/tags 에 들어가면 태그클라우드가 뜨는데, 우리나라처럼 태그를 그냥 검색수단으로만 사용하는게 아니라 하나의 디렉토리 혹은 메뉴인 것처럼 활용되고 있다.
플리커는 야후에 3500만달러에 인수합병되었다.

3.    Collective Intelligence
집단지성은 소수의 엘리트집단이 아니라 다수의 군중이 더 지혜롭다는 이론.
잘 알려진 제임스 서로위키의 저서 'Wisdom of Crowds'에서 대중이 얼마나 현명한지를 말해주고 있다. (국내 번역판 있음)
대표적인 집단지성 사이트는 위키피디아(http://www.wikipedia.org)
사용자가 마음껏 작성하고 수정할 수 있는 백과사전 이다.

4.    Long Tail
크리스앤더슨이 처음 소개, 잘 알려진 80/20법칙인 파레토법칙을 부정하는 경제 개념.
대표적인 사례는 아마존(http://www.amazon.com), 57%가 1년에 한번 팔릴까 말까한 희귀 도서들의 매출의 합이 아마존 전체 매출의 57%였다는 통계가 나옴에 따라 꼬리의 경제가 무시할 수 없는 수준 이었다는걸 많은 사람들이 깨닫게 되었다.
예를 하나 더 들자면 구글애드센스(http://adsense.google.com)가 있다.
네이버의 광고주는 주로 대기업이지만, 구글의 광고주는 대부분 꽃가게, 음식점, 명함인쇄소 같은 자영업자들. 돈이 될까 싶지만 20만여명의 광고주로부터 벌어들인 돈은 2005년 한해만 무려 27억달러.

 

[Web2.0 User지원 서비스 관련]

1.    Social Network
국내의 대표적 소셜 네트워크는 싸이월드가 있고, 미국에는 마이스페이스(http://www.myspace.com)와 페이스북(http://www.facebook.com) 이 있다. 미국 최대의 소셜네트워크 마이스페이스는 루퍼트 머독의 뉴스코프가 인수.
제2의 빌게이츠라 불리는 페이스북의 마크주커버그는 대기업들의 잇따른 인수제의를 모두 거절하고 있으며, 얼마전 야후가 10억달러를 제시했지만 ‘페이스북의 가치는 20억달러다!’ 라면서 제의를 거절했다.
이 외에도 소셜 북마크라는 개념이 뜨고 있다.
즐겨찾기를 웹에서 공유하는 것으로, 라이브닷컴 즐겨찾기(http://favorites.live.com) 이 대표적인 예. 국내에선 네이버와 다음이 서비스 검토중이다.
소셜 북마크의 원조는 딜리셔스(http://del.icio.us)로, 딜리셔스는 플리커와 동시에 야후에 3500만달러에 인수되었다.

 

2.    Individual Service
개인화 서비스는 최근 국내에서도 활발하게 이루어 지고 있다.
국내엔 위자드닷컴이나 마이야후, 마이네이트 등 이 있고, 해외에는 구글(http://www.google.com/ig)과 라이브닷컴(http://www.live.com/?wa=wsignin1.0)의 개인화 페이지가 대표적인 예 이다.

3.    Wikis
위키는 사용자들이 직접 웹 페이지를 작성할 수 있게 하는 시스템.
잘 알려진 사이트는 위키피디아.
개발하는 업체중 유명한 곳은 잣스팟(http://www.jotspot.com) 이 있다.
잣스팟은 구글에 인수. 인수가와 조건은 미공개 되었다.

 

4.    Tag, RSS, TrackBack
태그는 잘 아시다시피 게시물을 표현하는 꼬리표이고,
RSS는 블로그나 뉴스사이트를 게시판 보듯이 구독할 수 있도록 지원하는 시스템.
트랙백은 블로그간 소통을 위한 기능 중 하나이다.
이 세가지는 국내에도 모두 잘 적용되어 있어 친근한 용어들이다.
태그를 잘 활용한 사이트는 위에서 말한 플리커와 국내의 블로그 사이트 들이 있고,
블로고스피어인 테크노라티(http://www.technorati.com)가 있다.

 

[Web2.0의 비즈니스 & 테크놀러지 관련]

1.    X-internet
X인터넷의 역사는 오래된 편이다.
최근 각광받고 있는 이유는 Web2.0에 적합한 요소를 매칭하기 위해 Adobe와 MS가 발벗고 나서고 있기 때문. Adobe는 이 분야에 거의 연관성이 없었는데, 드림위버와 플래시로 유명한 Macromedia를 인수하고는 상황이 달라졌다. 매크로미디어는 X인터넷사업을 RIA(Rich Internet Application)라 명명하고 오래전부터 철저하게 준비해왔다.
(RIA에 대한 것은 다음에 따로 정리하도록 해보도록 하죠..)

2.    Flex
매크로미디어의 기술로 탄생한 플렉스는 국내외 여러 사이트에 적용되어 있다.
이해하기 쉬운 예로는 국내의 CGV사이트가 있다. 한 화면에서 처리 가능한 예매시스템. 아무것도 아닌 것 같지만 Flex의 꼼꼼한 기술이 적용되어 있다.
고도의 기술이라는 표현을 쓰지 않은 건 이미 기존의 테크닉들을 활용한 것이기 때문.
Flex에 대응되는 기술로 MS의 WCF, WPF/E 가있다.

 

3.    Ajax (Asynchronous JavaScript and XML)
우연인지는 모르겠지만, 그리스신화의 용사 Ajax〔〕와 명칭이 같아서 읽을 때 애이잭스 라고 읽기도 하고 아작스 라고 읽기도 한다.
Ajax열풍의 대표적인 적용사례는 구글.
구글 맵스 (http://maps.google.com), 구글 G메일 (http://mail.google.com), 구글 에이잭스서치 (http://code.google.com/apis/ajaxsearch/) 등이 대표적이다.
국내사이트에도 Ajax기술은 활발하게 적용되고 있어서 굳이 설명하지 않아도 될 듯..

728x90

'Etc' 카테고리의 다른 글

머그컵 획득  (0) 2007.05.22
web2.0 개념  (0) 2007.04.11
국가대표시범단 540도발차기!  (0) 2007.03.18
728x90
" 2.0이란 어떤 기술인가!"

라고 누군가 묻는 다면, "잘못 알고 있다" 라고 말해주고 싶습니다.

"틀렸다" 라고 말하기에는 그 흐름과 함께하는 기술들이 너무나 많이 있기 때문에, "틀렸다" 가 아닌 "잘못 알고 있다" 라는 표현을 쓰는 것입니다.

2.0은 기술이 아닙니다.

2.0은 개념이자 트랜드 입니다.

 

기존 웹 1.0은 포털 서비스의 개념이었고, 포털 서비스는 사용자가 마음대로 추가, 수정, 제거를 할 수 없는 단순히 찾아보는 서비스였습니다. 과거 포털 사이트의 대명사로 불렸던 야후, 알타비스타, 네이버, 심마니 등이 대표적인 사례입니다.

 

하지만 사용자들은 기존 포털 업체들의 서비스에 만족하지 못하고 나름대로의 컨텐츠와 자료들을 생성해서 자신의 홈페이지나 블로그(Blog) 또는 위키위키(WikiWiki)에 게시하기 시작했습니다.

이것이 UCC의 시작이라고 할 수 있습니다. (이때, 국내의 인터넷 스타로 부상한 대표적 인물로 인터넷소설 작가 '귀여니' 가 있습니다.)

웹에 사용자의 참여가 점점 많아지는 분위기가 형성되자 "웹이 진화했다. 이제는 웹 2.0이다" 라는 말이 나왔습니다.

 

2.0이라는 말은 '오라일리'사와 컴덱스 쇼를 주최했던 '미디어라이브(MediaLive)'사가 2004년 초 IT관련 컨퍼런스 개최에 대한 아이디어를 협의하는 과정에서 생겨났으며, 오라일리사의 데일 도허티(Dale Dougherty) 부사장이 과거 닷컴 버블에서 살아남은 닷컴 기업들에서 발견되는 특별한 특징들을 다른 기업들과 대비하는 의미에서 '2.0'으로 명명하였습니다.

 

하지만, 미 군사용 네트웍인 알파넷(Arpanet)이 대중으로 나오면서 시작된 웹(Web)에 처음에는 Version의 개념이 존재하지 않았습니다.

웹은 그냥 Web 이었죠.

그런데, 2.0이라는 말이 생기고 그 표현이 확산되자 이런 얘기들이 나왔습니다.

"2.0이 나왔다는데, 그럼 지금 우리가 쓰는 웹은 뭐지?"

그러자, 사람들이 웹2.0의 구 버전이라는 의미로 기존의 Web을 웹1.0으로 명명하게 되었습니다.

 

2.0이라는 말과 함께 새로운 기능을 가진 기술들이 때맞춰 나오게 되었습니다.

지능형 웹이라 불리는 '시멘텍 웹', 인터넷의 새로운 표준인 'XML', 비동기 방식을 이용한 '에이젝스(Ajax)', Microsoft의 비젼인 '.NET', 사이드바 컨텐츠 '위젯(Widget)', RIA(Rich Internet Application)기술의 양대 산맥인 MS진영의 'WCF, WPF/E' Adobe진영의 'Flex'. 이 밖에도 더 많은 기술들이 지금도 끊임없이 세상에 쏟아지고 있습니다.

 

상황이 이렇다 보니 사람들은 ' 2.0은 신기술이다!' 라는 생각을 가지게 되어 버렸습니다.

하지만, 2.0은 기술이 아닙니다.

2.0은 정적이고 고정된 컨텐츠만 제공했던 환경에서 사용자의 적극적인 참여와 생산이 첨가되었다는 웹의 개념이자 트랜드 입니다.

 

물론, 2.0의 개념이 많은 기술적 발달을 가져다 줄 것은 사실이지만, 정확하게 말하자면 기술이 발달하게 되는 것은 웹 2.0의 시대가 왔기 때문이 아닌, 사용자들의 요구에 시장이 맞춰가기 위한 발전이며 이런 흐름에 웹 2.0이라는 이름표를 달아준 것에 불과합니다.

더욱이 웹 2.0 이라는 개념은 외국의 Web 환경을 바탕으로 등장했으며, 2.0이 등장한 시기에 한국은 이미 웹 2.0을 경험하고 있었습니다.

바로, 미니홈피와 블로그를 통해서 말이죠.

그런데, 난데없이 웹 2.0이라는 말이 나오자 한국의 웹 사용자들은 어리둥절해 하며 웅성대기 시작했습니다.

혹자는 당시에 "한국의 웹은 웹 1.5 이다." 라고도 했습니다.

하지만, 개인적인 생각으론 당시의 한국은 웹 2.0의 초기단계를 넘어서고 있었습니다.

 

1.0과 웹 2.0 '기술의 발달'로 구분 지어 지는 것이 아닙니다.

1.0과 웹 2.0의 구분은 '사용자들의 웹에 대한 참여도와 활용도' 에 의해 구분되는 것입니다.

2.0이 나온 여세를 몰아 " 3.0은 언제가 될 것인가?" 에 대한 관심 또한 뜨겁지만, 당분간은 웹 2.0 뜨거운 감자로 자리를 지킬 것 같습니다.

728x90

'Etc' 카테고리의 다른 글

web2.0 적용  (0) 2007.04.11
국가대표시범단 540도발차기!  (0) 2007.03.18
최선을 다해서...  (0) 2006.07.08
728x90
아래 글은 http://podcast.co.kr/2511377 에서 퍼왔으며 관련 댓글도 같이 포함되었습니다.


1. 10,000개 이상의 무료 폰트를 다운로드할 수 있는 better fonts
10,000 종류 이상의 무료 폰트를 샘플 테스트 후 다운로드할 수 있는 better fonts
왼쪽 사이드바에 샘플의 폰트가 표시되고 있고, 클릭하면 그 폰트의 문자 샘플이 오른쪽 사이드바에 표시됩니다.
간단하게 프리뷰를 보고 사이트 디자인에 필요한 폰트를 찾는데 편리합니다.

2. 1,3000개 이상의 무료 폰트를 검색할 수 있는 Search Free Fonts
25 개의 카테고리로 분류되고 있고 이외에도 폰트명이나 머리 글자로 검색이 가능.
무료 폰트 뿐만이 아니라 상용 폰트도 2만 3000개 이상 준비되어  검색이 가능하다.

3. 9800개의 프리 폰트 배포 사이트 Creamundo
9800개의 폰트를 무료로 다운로드할 수 있습니다. 프리뷰도 표시되므로 다운로드 전 어떤 폰트인지 확인할 수 있습니다. 다운로드 하려면 'DOWNLOAD THE FONT' 아래에 있는 플로피 디스크의 아이콘을 클릭하면 됩니다.

4. Download Free Fonts @ 1001 Fonts .com

5. Download fonts | dafont.com
자작 폰트를 사용자가 등록할 수 있는 기능이 있으며 때때로 상용 폰트가 올라오는 경우도 있습니다.

6. Download Free Fonts here at TypeNow.net

7. Typographic Collaboration | Typophile

8. Abstract Fonts

9. designfont
일본어 폰트도 함께 있으며 저작권이 있는 폰트도 있으니 사용에 유의하시기 바랍니다.

10. 기호, 그림 등의 폰트 DINGBATS을 무료로 다운로드할 수 있는 Dingbatdepot
무료 폰트로서 무료 다운로드할 수 있는 DINGBATS를 모은 사이트입니다.
동물의 실루엣, 음식의 일러스트, 공포영화의 분위기의 일러스트, 유명 기업 로고, 바코드등의 재미있는 폰트가 다수 다운로드할 수 있습니다. 추천합니다.

폰트 관련 보너스 팁
폰트 관리 툴 Linotype Font Explore X
맥과 PC에서 사용가능하다.

폰트를 무료 다운로드할 수 있는 1001 FREE FONT
맥과 PC에서 사용할 수 있는 폰트 모음

폰트 typography를 위한 뉴스 사이트 fontshop
독일, 베를린에 있는 폰트 판매 사이트 fontshop에서 제공하는 뉴스 블로그입니다.
typography, 폰트, 서적 등의 정보가 올라오고 있습니다. 고품질의 디자인, 타이포디자인을 소개하고 있습니다. 타이포그래퍼, 그래픽 디자이너, 웹디자이너에게 추천합니다.

  1.   monger님 댓글

    항상 좋은 정보 주시네요^^
    아래 사이트도 참고하세요~
    http://www.fontgarden.com/
    http://www.wazu.jp/
    http://www.freemacfonts.com/ Mac용..


출처 : http://blueb.net/blog/818
728x90
728x90

출처 : http://www.smashingmagazine.com/2007/04/10/online-converters/


Online converters always come in handy. Once you need to perform some operation with your files, they can save your time achieving the same results online, without installing some specific software. In fact, there are many online tools, which convert formats, files and code snippets for free. Some of them are quite specific tools aimed for developers, but some are common “all-rounders”, which manage to convert almost every format to a more popular one. Using them, you can generate .pdf-documents out of images, images out of texts or RSS-feeds out of web-sites. You can also convert any audio- and video-files immediately - the results can be received via e-mail.

So what can you use? What should you use?

This overview of online-converters for users and developers might give you some useful starting points and improve your productivity.

“All-Rounders”

  • Media-Convert
    Media-Convert can deal with many formats. Most important are Text, HTML, XHTML, Microsoft Word, RTF, PDF, PS, Open Office, Star Writer, CSV, dBase, Microsoft Excel, Pocket Excel, Lotus 123, Quattro Pro, Star Calc, Open Office, MathML, Open Office Formeln, Powerpoint. Besides: Video and Audio-formats.
  • txt2tags
    This tool generates HTML, XHTML, SGML, LaTeX, Lout, Man Page, MoinMoin, MagicPoint and PageMaker-documents out of a single plain text-file with minimal markup.
  • Zamzar
    Zamzar supports conversion between a wide variety of different file formats. Many conversion options, among them 11 document formats, 8 image formats, 9 audio formats and 12 video formats.

Development

HTML & CSS

  • Text to JavaScript
    If you’ve ever tried to make some normal text containing characters like ‘ into a JavaScript variable, you will know how frustrating it can be when you miss one, or you miss a \ or a line break or a tag. Well, let this script do it for you.
  • CSS HTML
    Converts CSS-code to HTML and HTML to CSS-Code.
  • HTML2TXT
    Converts HTML in plain text.
  • HTML2Wiki
    Converts HTML to Wiki-Markup
  • HTML -> PHP, JavaScript, ASP
    This program let you convert your HTML in various scripting languages such as: HTML to PHP, HTML to Javascript and HTML to ASP
  • Draac.Com’s Html To Javascript
    Type or paste your Html codes into the text box below, then press the button and convert your Html coding to Javascript.
  • HTML to JavaScript Convertor
    This tool takes your markup and converts it to a series of document.write() statements that you can use in a block of JavaScript.

Graphics

Color

PDF

  • HTML 2 PDF
    Converts HTML and whole sites to PDF
  • Online PDF Converter
    You can generate plain text, .jpg-, .png-, .gif- or .tiff-images out of .pdf-files.
  • PDF Conversion
    PDF -> Text.
  • Show PDF
    PDF -> HTML.
  • PDF Online
    Converts MS Word (DOC), MS Publisher (PUB), MS Word (RTF), MS Excel (XLS), MS PowerPoint (PPT), HTML (MHT), MS PowerPoint (PPS), Text (TXT) and JPG, PNG, BMP, TIFF, WMF, EMF, GIF to PDF online. The .pdf-file is sent via e-mail.

RSS

  • Feed43
    Generates RSS-feeds out of web-sites
  • RSS2GIF
    This tool converts RSS-feeds to images.
  • RSS/RDF
    RSS -> JavaScript.
  • RSSxl
    Converts web-sites to RSS 2.0.

Further converters



728x90

'Developer' 카테고리의 다른 글

정규표현  (0) 2008.01.29
14 Tab-Based Interface Techniques  (0) 2007.04.18
HTTP Status Code  (0) 2007.04.08
728x90
728x90

'Software' 카테고리의 다른 글

새 하드디스크를 구입했다면, CopyHandler  (0) 2007.04.26
Foxit Reader  (0) 2007.04.07
htmlarg 1.2 버전  (0) 2007.03.03
728x90

http://www.w3.org/Protocols/rfc2616/rfc2616.html

1. Informational
100 : Continue
101 : Switching Protocols

2. Successful
200 : OK
201 : Created
202 : Accepted
203 : Non-Authoritative Information
204 : No Content
205 : Reset Content
206 : Partial Content

3. Redirection
300 : Multiple Choices
301 : Moved Permanently
302 : Found
303 : See Other
304 : Not Modified
305 : Use Proxy
306 : (Unused)
307 : Temporary Redirect

4. Client Error
400 : Bad Request
401 : Unauthorized
402 : Payment Required
403 : Forbidden(접근권한 제어)
404 : Not Found(파일 없음)
405 : Method Not Allowed
406 : Not Acceptable
407 : Proxy authentication Required
408 : Request Timeout
409 : Conflict
410 : Gone
411 : Length Required
412 : Precondition Failed
413 : Request Entity Too Large
414 : Request URI Too Long
415 : Unsupported Media Type
416 : Requested Range Not Satisfiable
417 : Expectation Failed

5. Server Error
500 : Internal Server Error
501 : Not Implemented
502 : Bad Gateway
503 : Service Unavailable
504 : Gateway Timeout
505 : HTTP Version Not Supported



728x90

'Developer' 카테고리의 다른 글

정규표현  (0) 2008.01.29
14 Tab-Based Interface Techniques  (0) 2007.04.18
Online Converters  (0) 2007.04.10
728x90

PDF Reader라면 대부분 Abobe사를 생각하게 된다.
하지만, Acrobat Reader가 갈수록 무거워져 가고 있고, Optional 이기는 하지만 각종 툴바설치를 기본으로 하고 있어 사용자들의 불만을 자아내고 있기도 하다.


Foxit Reader 는 Acrobat Reader 보다 UI가 좀 떨어질 수는 있지만, 빠른 로딩속도와 스크롤링을 경험한다면 Acrobat Reader를 사용하는 횟수가 줄어들지 않을까 생각된다.
(무엇보다 PDF Reader는 문서를 보기위함이 목적이기 때문에..)

홈페이지 : http://www.foxitsoftware.com
다운로드 : http://www.foxitsoftware.com/foxitreader/foxitreader.zip
CJK언어팩 : http://www.foxitsoftware.com/pdf/fpdfcjk.bin
* 중국어/일본어/한국어 지원을 위한 CJK 언어팩. 다운로드하여 프로그램 폴더에 복사하면 된다.

728x90

'Software' 카테고리의 다른 글

각종 Viewer  (0) 2007.04.10
htmlarg 1.2 버전  (0) 2007.03.03
[FreeMind V0.8.0]생각을 정리하는 마인드맵  (0) 2007.02.11
728x90
John-David Dalton씨는 Prototype.js를 압축하여 용량을 1/3 이하로 줄였습니다. 그의 패키지에는 1.4버전부터 1.5.1_rc2까지(1.5 파이널 포함) 버전별 압축파일이 각각 들어있습니다. 특히, 최근 배포된 1.5.1_rc2의 용량은 94kb로 무시못할 크기가 되어버렸습니다. 1.5.1_rc2의 압축된 버전(ultraCompressed) 용량은 26kb입니다. 압축된 파일을 인클루드하려면 아래와 같이 캐릭터셋을 "iso-8859-1"로 설정해야 합니다.

예제:
<script type="text/javascript" charset="iso-8859-1" src="prototype.js"></script>

패키지 다운로드는 구글 그룹스에서 하세요. 특정 브라우저에서 문제가 있을수 있다고 하는데, 무시하고 1.5.1_rc2의 ultraCompressed버전을 인클루드 해 보았습니다. 보시다시피 오류없이 잘 돌아갑니다.

출처 : http://firejune.com/1061
728x90

'Information' 카테고리의 다른 글

무료로 사용 가능한 오픈 폰트 사이트 모음 TOP 10  (0) 2007.04.10
인터넷 메일 MIME 규격  (0) 2007.04.03
자바스크립트 정리  (0) 2007.04.02
728x90

원문 : http://www.iwiz.pe.kr/bbs/zboard.php?id=java&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=38

 

. MIME

MIME(Multipurpose Internet Message Extension)은 말 그대로 Internet Message를 통해서 여러 가지 내용을 보낼 수 있도록 확장한 규격입니다.

한 글같은 2바이트 Non-ASCII 문자가 여러 메일 서버를 무사히 통과하기 위해서는 7비트 ASCII 문자로 일단 변환되어야 합니다. 물론, 요즘의 대부분의 메일 시스템은 보통 8비트의 Non-ASCII 문자들도 손상시키지 않고 통과시키만 (8bit clean이라 하죠...), 그렇지 않은 경우도 아직 꽤 많습니다. 때문에, 그냥 8비트인 상태로 보내면, 메시지가 올바로 간다고 보장할 수 없게 됩니다. 게다가 단순한 텍스트 뿐만이 아니라, 요즘에는 바이너리 파일도 메일에 첨부하는 경우가 많죠?

그런 것들을 위해서 MIME에서는 Message Body에 있는 내용의 형태, Encoding 방식, 각 부분의 연관 관계 등을 지정할 수 있는 규약을 정하고 있습니다.



2. MIME Header

MIME 형태를 지정하기 위해서 RFC822에서 정의된 Header Field 외에 몇 가지 Header Field가 새로 정의되었습니다. 이 Header들은 message의 Top Level Header 혹은 Message Body Part의 Header에 들어갑니다.

MIME-Version Header Field
Content-Type Header Field
Content-Transfer-Encoding Header Field
Content-Disposition Header Field
Content-ID Header Field
Content-Description Header Field

MIME-Version Header Field는 Message의 주 Header에 있게 됩니다.
Content-Type, Content-Transfer-Encoding Header Field는 Top Level Header에 있을 수도 있고, Body Part의 Header에 있을 수도 있습니다.
Content-Disposition Header Field는 Top Level Header에 쓰일 수도 있지만, 대부분의 경우에는 Body Part의 Header에 있게 됩니다.


1. MIME-Version 헤더 필드

MIME 규약에 따르는 Message는 이 Header를 반드시 가지고 있어야만 합니다. 필수라고 RFC에서는 강조하고 있지만, 이 Header FIeld를 가지고 처리할 수 있는 건 아무 것도 없습니다. 그래서 실제로는 이 Header Field가 빠진 메시지도 상당히 많습니다.

MIME-Version: 1.0

지금 현재 MIME 버전은 현재까지는 무조건 1.0 입니다. 이 헤더를 가지고 있으면, 이후의 모든 내용은 MIME의 규격을 준수한다는 것을 의미하게 됩니다. 물론 실제로 보장되지는 않습니다.
EBNF Form으로 구성하면 아래와 같이 됩니다.

version := "MIME-Version" ":" 1Digit "." 1Digit

아래의 세 가지 예 모두 동일하며, 문제 없는 형식입니다.

MIME-Version: 1.0 (prodeced by MetaSend Vx.x)
MIME-Version: (prodeced by MetaSend Vx.x) 1.0
MIME-Version: 1.(prodeced by MetaSend Vx.x)0



2. Content-Type 헤더 필드

메시지 본문 혹은 본문의 각 부분의 내용의 종류를 지정하는 헤더 필드입니다. 보통 MIME Type이라고 부르는 것들은 바로 이걸 말하죠. 이 헤더 필드의 문법은 아래와 같습니다.

content := "Content-Type" ":" type "/" subtype *(";" parameter)

"Content-Type:" 이라는 헤더 이름 다음에, "타입/서브타입"과 같은 형태로 지정합니다.
그리고 여기에 parameter를 붙이고 싶으면 세미콜론으로 구분하면서 계속 적어나가면 됩니다.

타입은 크게 두 가지로 나뉩니다.
첫번째는 Discrete-Type인데, 이 것은 그 자체로 어떤 의미를 가지고 있는 Content-Type이 됩니다. 예를 들어, Text라든지, Image 같은 것들이 여기에 해당됩니다.
각각의 Type은 여러 가지 Subtype을 가질 수 있습니다. 예를 들어서, Text의 경우에는, 일반 ASCII 텍스트를 나타내는, text/plain, text/html 등의 Subtype을 가집니다.
Discrete-Type에 해당되는 것들은 아래와 같습니다.

"text" / "image" / "audio" / "video" / "application" / extension-token

두 번째는 Composite-Type입니다. 이것은 Discrete-Type 혹은 Composite-Type의 개체 여러 개가 복합되어 만들어진 타입입니다. 이런... 재귀적인 설명이 되어 버렸군요. Composite-Type은 일단은 두 가지 입니다. 그 외에 확장된 타입을 둘 수 있다고 되어 있습니다. 이 중에서 MIME 규약이 점점 커지면서 다양한 서브 타입이 생겨나고 있는 것은 multipart 타입입니다.

"message" / "multipart"

Content-Type 헤더 필드가 없는 메시지도 많습니다. 이런 경우에는 어떻게 처리해야 할까요?
이 헤더가 없는 메시지는 MIME 규약이 생기기 전에 만들어진 메시지로 취급하면 됩니다. 즉, 단순한 ASCII 텍스트로만 이루어진 메시지로 처리하는 거죠...
아래가 Content-Type 헤더 필드가 없는 경우의 기본 Content-Type이 됩니다.

Content-Type: text/plain; charset=us-ascii

각 Content-Type에 대한 좀 더 자세한 내용은 다음에 설명하도록 하겠습니다.



3. Content-Transfer-Encoding 헤더 필드

이 헤더 필드는 메시지의 본문이나 본문의 각 부분이 어떤 방식으로 Encoding되었는지를 나타냅니다. 이 헤더 필드의 문법은 아래와 같습니다.

encoding := "Content-Transfer-Encoding" ":" mechanism

mechanism에는 다섯 가지가 있습니다.

"7bit" / "8bit" / "binary" / "quoted-printable" / "base64"

7bit, 8bit, binary를 먼저 보자면... 이 경우는 Encoding을 하지 않았다는 얘깁니다.

   7bit는 원래 ASCII 문자만 있다는 것을 의미하고,
   8bit는 8비트 문자들도 그래도 들어 있다는 것을 의미하고,
   binary는 8bit와 같은데, 한 줄의 길이의 제한이 없다는 것을 의미합니다. (안 쓰인다고 보면 됩니다).

물론, 한글을 7비트로 Encoding한 경우는 물론 Decoding이 필요합니다.
이 방식은 사라지고 있고, 요즘에는 한글은 base64로 Encoding하는 경우가 절대 다수이니까요.

그 다음에 특정한 알고리즘을 필요로 하는 두 개의 Encoding 방식이 있습니다.
Quoted-Printable하고 base64 Encoding이죠.

   Base64 Encoding은 간단히 말해서 3바이트의 데이타를 4바이트에 저장하는 겁니다. 24비트를 6비트씩 4개로 나누어서 따로 저장하고 각 바이트의 위쪽 두 비트를 0으로 하니까 무조건 ASCII 문자라는게 보장이 되는 거죠.
따라서 8비트 중에서 6비트만 사용하므로, 인코딩 결과로 나온 메시지는 모두 64가지의 Octet만을 가질 수 있게 됩니다. 그래서 Base64라고 부릅니다.
이 64개의 Octet는 ASCII와 같은 코드셋에도 독립적으로 설계되었습니다.
이 Encoding 방식의 장점이라고 하면, 원래의 데이타가 Encoding 후에 크기가 얼마가 될지 거의 정확하게 예측할 수 있다는 거죠. 약 33%정도가 늘어나죠. 또 다른 인코딩 방식에 비해 공간을 덜 차지하기 때문에, 효율적이라고 할 수 있습니다. 반면, Encoding을 하고 나면 원래 내용이 뭔지 도저히 알아볼 수 없다는 단점이 있죠.

   Quoted-Printable 방식은 ASCII 문자가 아닌 놈들만 "=XX" (X : 0...9, A...F)와 같은 모양으로 Encoding 하는 방식을 말합니다. 따라서 7Bit ASCII로 표현할 수 없는 문자는 한 바이트가 3바이트로 늘어나게 됩니다. 따라서, 이 방식은 크기가 최대 3배로 늘어날 수 있으니까 효율성 면에서는 거의 최악이라고 할 수 있습니다.

이 Encoding 방식은 영어 문화권에서 보면 나쁜 Encoding이 아닐 수 있습니다. 영어 문화권에서 만들어지는 텍스트는, 대부분의 문자가 7비트 ASCII 문자로 되어 있고, 그렇지 않은 문자가 훨씬 적습니다. 따라서, 이 방식으로 Encoding을 하면, 대부분의 글자가 Encoding이 되지 않고 일부분만이 Encoding이 됩니다.
그러니까, 일단 오히려 효율적일 수도 있고, 다양한 Decoding을 수행하지 못하는 MUA에서 메일을 보더라도, 대략적으로 내용을 파악할 수 있다는 거죠. 반면 한글 같이 거의가 Non-ASCII 문자인 Message나 바이너리 파일 같은 경우는 이 방식으로 Encoding 해봤자 좋은 점이 없습니다. 괜히 메모리나 디스크, 네트워크만 더 잡아먹을 뿐이지요.

정리하자면 Quoted-Printable Encoding은 Decoding이 안 되더라도 내용을 대략적으로 알아볼 수 있지만, 효율이 안 좋고, base64 Encoding은 효율이 좋지만, Decoding하기 전까지는 내용을 전혀 못 알아볼 수 없다는 겁니다.

그래서, 대부분의 ASCII 문자가 많은 텍스트나 HTML의 경우에는 Quoted-Printable로 Encoding 하는 경우가 많고, 한글이나 바이너리 파일은 거의 무조건 base64로 Encoding합니다.
이것은 그냥 그런 경우가 많이 있다는 것이고, 실제로 각 Body Part의 Encoding의 MUA 맘대로 (혹은 사용자의 선택으로) 하게 되겠죠.


4. Content-Disposition 헤더 필드

이 헤더 필드는 각각의 본문의 부분이 화면에 바로 보여야 하는지, 아니면 첨부된 파일로 보여서, 사용자가 따로 처리해야 하는지를 명시하기 위해서 사용됩니다. 문법은 아래와 같습니다.

disposition := "Content-Disposition" ":" disposition-type *(";" disposition-param)

disposition-type이 붙고 parameter가 붙을 수 있습니다.
disposition-type에는 두 가지가 있을 수 있습니다.

"inline" / "attachment"

inline 은 사용자가 메시지를 보려고 할 때, 무조건 화면에 나타나야 한다는 걸 말하고, attachment는 메시지의 주 본문과는 별도로 처리될 수 있다는 걸 표시합니다. 물론 요즘 Windows용 MUA같은 경우에는 첨부된 그림 파일 같은 건 바로 화면에 보여주죠? attachment는 반드시 따로 처리해야 하는게 아니라, 반드시 화면에 바로 나타낼 필요는 없다는 걸 알려주는 겁니다.

parameter는 아래와 같은 형식으로 만들 수 있습니다. attachment같은 경우에는 "filename" parameter를 지정하는 것이 일반적입니다.

disposition-param := "filename" "=" value
    / "creation-date" "=" quoted-date-time
    / "modification-date" "=" quoted-date-time
    / "read-date" "=" quoted-date-time
    / "size" "=" 1*Digit

이 헤더가 필요한 이유는 Content-Type만을 보고 이 메시지 덩어리가 inline인지, attachment 인지 판단하기 힘든 경우가 많기 때문입니다.
예 를 들어서, 어떤 사람이 텍스트로 메일을 열심히 쓴 다음에 참고할 만한 텍스트 파일을 첨부해서 메일로 보냈다고 합시다. 그러면 이 사람이 작성한 주 본문의 Content-Type은 text/plain이겠죠? 이 사람이 첨부한 파일의 Content-Type도 text/plain이겠죠?
그러면 메일을 받았을 때, 어느 부분이 진짜 주 본문인지 판단하기 힘들죠. 보통은 주 본문을 앞에 두니까, 별 상관없다고 할 수 있지만, 받은 메시지만 보고 판단할 방법은 없다는 겁니다.
어쨌든 보통의 MUA에서는 주 본문에 해당되는 부분에는 이 헤더를 굳이 설정하지 않고, attach에 해당되는 부분에는 이 헤더를 표기해 주는 경우가 많습니다.
MTA와는 전혀 관계없고, 순전히 MUA를 위해서 사용되는 Header Field라고 할 수 있습니다.



5. Content-ID, Content-Description 헤더 필드

이 두 헤더 필드의 문법은 아래와 같습니다.

id = "Content-ID" ":" "<" localpart @ domain ">"
description := "Content-Description" ":" *text

이 중 Content-ID와 같은 경우에는 평소에는 별로 중요하게 쓰이지 않지만, HTML Message 중 Embedded Image가 있는 경우에는 반드시 사용되는 중요한 Field입니다.
1. Content-Type의 종류들...

MIME 의 Content-Type으로 공식적으로 등록된 것들은 얼마나 될까요? 엄청나게 많겠죠? Windows 탐색기의 파일 타입만 보더라도, 매우 많은 타입을 볼 수 있지만, 많은 응용 프로그램들이 생겨나고 있으니, 갈수록 더 늘어나겠죠.

"Text" 타입

인터넷 텍스트 메시지의 기본적인 타입입니다. 여기에 포함되는 서브 타입들을 보면...

text/plain, text/html 등등...

"Text" 타입은 charset이라고 부르는 문자 집합을 지정하는 parameter를 가질 수 있습니다.
기본 값은 앞에서도 말씀드렸듯이 US-ASCII죠.
Content-Type이 지정되지 않은 메시지 본문은 text/plain으로 처리합니다. 모든 메시지 본문의 기본 Content-Type은...

text/plain; charset=US-ASCII

요 렇게 되는 거죠. charset에는 그밖에도 iso-8859-X (X : 1~10) 이라는 것이 있습니다. 한글을 비롯한 여러 국가에서 쓰이는 EUC (Extended Unix Characterset) 라는 것도 있죠. 한글 메세지의 실제로 많이 사용되는 표준 문자 집합은 EUC-KR라고 생각되네요.

"Image" 타입

이 타입은 GIF, JPEG 등의 이미지를 지원하기 위해서 처음 만들어졌습니다. 물론 Image에 해당되는 서브 타입도 아주 많지만, 거의 모든 곳에서 지원되는 타입이라면,
image/jpeg, image/gif

이 두 가지라고 할 수있겠네요.

"Audio" 타입

이 타입은 MUA가 동작하는 환경에서 이를 얼마나 지원하느냐가 문제겠죠? 그리고 Audio에 대해서는 특별한 표준이... 없습니다. MP3, Real Media 등과 같은 Audio 소스가 요즘에는 많지만, MIME에서는 공식적으로 사용하는 기본 규격은 8비트 PCM, 8KHz 규격입니다. -_-;

audio/basic

"Video" 타입

Vidoe 서브 타입도 Audio와 마찬가지로 MUA의 환경이 문제가 됩니다. 이 타입의 기본 서브타입은 MPEG으로 되어 있습니다.

video/mpeg

"Application" 타입

Application 타입은 다른 응용 프로그램이 이걸 처리해야 한다는 걸 의미합니다. 그래서 이 타입의 기본 동작은 사용자의 디스크에 저장하는게 되는 거죠. 여러 MUA에서 바로 이런 타입의 Content를 열 수 있는 기능을 지원하지만, 사실은 임시 공간에 파일을 저장하고 응용 프로그램을 부르는 방식이죠.

넘쳐나는 응용프로그램의 MIME Content-Type을 모두 인식하기란 사실상 힘들다고 볼 수 있습니다. 따라서 알 수 없는 파일의 기본 Content-Type은,

application/octet-stream

로 정의되고, 이 Content-Type에 대한 기본 동작은, "로컬 디스크에 저장"이 됩니다.

RFC에 언급되기로는 application/Postscript과 같은 서브타입이 있고, 보안 관련 이슈가 상당히 많지만, 별로 흥미가 없네요. ^^;

1. 기본 구조

"Multipart" 타입의 기본 구조를 보기 전에, Multipart 타입의 기본 서브 타입에 대해서 이야기를 해야겠네요.

Multipart Content-Type의 기본 Subtype은 "multipart/mixed"라는 서브 타입입니다. 각각의 부분은 연관관계가 없으며, 각 부분의 순서만 미미하게(?) 의미가 있는 거죠. 꼭 하나의 (특히 첫번째) 본문 부분이 inline 메시지고, 나머지는 attachment라는 보장은 없습니다. 또, 각각의 본문 부분도 multipart로 구성될 수 있습니다. 따라서 이론적으로 무한대의 중첩이 가능합니다. 실제로는 최대 세 단계 정도로 mulitpart가 구성되는 것이 일반적입니다. 어째서 세 단계까지인지는 이후에 설명하겠습니다.

맨 앞에서 메시지는 헤더와 본문으로 구성되고 둘의 구분은 NULL 라인으로 한다고 말씀드렸죠?
메 시지 본문은 단순히 라인의 집합의 형태로 평면적인 구성을 하고 있기 때문에, 여러 부분으로 나누기 위해서는 각 부분의 경계를 표시할 수 있는 표식이 필요하고, 이것이 Multipart Content-Type의 기본 Parameter가 됩니다. 이 Parameter를 그걸 boundary라 부릅니다.

기본 구조를 보면 아래와 같습니다.

Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08j34c0p

boundary 로 쓰일 수 있는 문자는 ASCII 문자 중에서 일부에 속합니다. 아래의 예는 올바른 boundary 구성이라고 볼 수 없습니다. 콜론이 들어가 있기 때문입니다. 콜론은 헤더 필드 이름과 필드 본문을 구분하기 위해서 사용되는 문자니까요.

Content-Type: multipart/mixed; boundary=gc0p4Jq0M:2Yt08j34c0p

그렇다고 완전히 틀린 건 아니고, 아래처럼 따옴표로 묶으면 적법한 boundary가 됩니다. 좀 애매한 기준이긴 합니다만, 실제로는 boundary를 Uniqueue하게 만들기 위해서 이런 식으로 쓰이는 경우도 많습니다.

Content-Type: multipart/mixed; "boundary=gc0p4Jq0M:2Yt08j34c0p"

boundary 는 메시지 안에 이런 형태가 나타나지 않도록 신중하게 만들어져야 합니다. 특히, 다음에 설명할 "message" Content-Type과 같이 메시지를 가지고 있는 본문 부분의 경우에 문제가 발생할 소지가 많기 때문이죠.

multipart로 구성된 메시지의 예를 하나 보죠.

From: Nathaniel Borenstein
To: Ned Freed
Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)
Subject: Sample message
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="simple boundary"

This is the preamble. It is to be ignored, though it
is a handy place for composition agents to include an
explanatory note to non-MIME conformant readers.

--simple boundary

This is implicitly typed plain US-ASCII text.
It does NOT end with a linebreak.
--simple boundary
Content-type: text/plain; charset=us-ascii

This is explicitly typed plain US-ASCII text.
It DOES end with a linebreak.

--simple boundary--

This is the epilogue. It is also to be ignored.

보 면, 인자로 주어진 boundary에 두 가지 변형을 해서 boundary로 사용하고 있습니다. 첫번째는 앞에 "--"를 붙인 것입니다. 이것을 메시지 부분간의 실제 경계로 사용합니다. 그 담엔 앞 뒤에 "--"를 붙인 것이 있지요? 이건 multipart의 끝을 의미합니다.

일단 Content-Type이 multipart로 선언되면 첫번째 경계가 나타나기 전까지의 메시지는 "반드시" 무시해야 합니다. 그리고 경계가 나타나면 다음 경계가 나타나기 전까지의 부분을 하나의 본문 파트로 처리하면 됩니다. 그러다가 multipart의 끝을 나타내는 표식이 나타나면 실제 mulitpart 메시지가 끝난 걸로 처리합니다. 이후에 나타나는 모든 문자는 역시 "반드시" 무시해야 합니다.
뭐 생각보다 간단하다고 생각할 수도 있겠지만, 이 기본적인 구조를 지키지 않는 메일 시스템이 참 많습니다. boundary를 단순히 "mail-boundary"와 같이 표시하는 것들은 좀 문제를 많이 일으키죠. 또한 에필로그에 해당되는 경계를 제대로 넣어주지 않는 경우도 많이 있습니다.



2. "multipart" 타입의 각 서브 타입

이게 각각의 서브 타입들을 살펴보도록 하죠. 앞에서 본 기본 구조를 머리 속에 두고 각각의 서브 타입의 차이점들을 살펴보도록 하죠.

"Mixed" 서브 타입

앞 서 말씀드린 것과 같이 mulitpart 타입의 기본 서브타입입니다. 내용은 앞과 마찬가지고, 중요한 것은, 알 수 없는 multipart의 어떤 서브 타입이 나타나더라도 처리를 못해서는 안 된다는 겁니다. 알 수 없는 multipart 서브 타입는 이 multipart/mixed 서브 타입으로 처리하도록 되어 있습니다.

"Alternative" 서브 타입

이 타입은 형식상으로는 multipart/mixed 타입과 완전히 동일합니다. 다른 점은, 이 타입은 같은 내용에 대한 서로 다른 버전을 담고 있다는 것이죠. 이 메시지를 처리하는 쪽 즉, MUA에서는 자신의 환경에 맞는 가장 좋은 버전 하나만을 선택하면 됩니다.
보통은 가장 훌륭한 버전을 맨 뒤에 놓습니다. 어떤 생각해 보면, 가장 좋은 버전이 맨 앞에 있어야 하는 것 같기도 하지만, 이런 타입을 제대로 처리하지 못하는 MUA 환경을 생각할 때, 가장 단순하고 일반적인 타입이 맨 앞에 있어야 그나마 처리가 쉬워집니다.

예를 하나 보죠.

From: Nathaniel Borenstein
To: Ned Freed
Date: Mon, 22 Mar 1993 09:41:09 -0800 (PST)
Subject: Formatted text mail
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=boundary42

--boundary42
Content-Type: text/plain; charset=us-ascii

... plain text version of message goes here ...

--boundary42
Content-Type: text/enriched

... RFC 1896 text/enriched version of same message goes here ...

--boundary42
Content-Type: application/x-whatever

... fanciest version of same message goes here ...

--boundary42--

각 각의 내용은 모두 같지만, 서로 다른 포맷을 가지는 내용을 이렇게 구분할 수 있겠죠. 이 타입을 사용하는 중요한 예는 바로 HTML 문서를 메일로 보내는 경우가 됩니다. MUA마다 HTML를 처리할 수 있는지 없는지가 달라지기 때문에, 앞부분에는 그냥 일반적인 텍스트 즉, text/plain을 넣고 그 뒤에 text/html을 넣는 겁니다.

"Digest" 서브 타입

이 서브 타입의 기본 문법은 "multipart/mixed"와 동일합니다. 다른 점은 multipart/mixed 타입에서, 각 부분의 기본 Content-Type이 text/plain인 것과는 달리 이 타입의 기본 Content-Type은 "message/rfc822"라는 겁니다.

message/rfc822라는 타입은 헤더를 포함한 메시지 자체를 나타냅니다.
즉, 메일 메시지를 캡슐화하고 있는 거라고 보면 됩니다. 보통 되돌아온 메일에 attach로 달려 있는 원래 메시지가 이 타입을 가지고 있습니다.

실제로 아직 Multipart-Digest 타입으로 된 메시지는 보지 못했습니다. 이 형태를 Multipart-Mixed 타입으로 처리해도 큰 문제는 없습니다.

예를 한 번 보죠.

From: Moderator-Address
To: Recipient-List
Date: Mon, 22 Mar 1994 13:34:51 +0000
Subject: Internet Digest, volume 42
MIME-Version: 1.0
Content-Type: multipart/digest; boundary="---- main boundary ----"

------ main boundary ----

...Introductory text or table of contents...

------ main boundary ----
Content-Type: multipart/digest;
boundary="---- next message ----"

------ next message ----

From: someone-else
Date: Fri, 26 Mar 1993 11:13:32 +0200
Subject: my opinion

...body goes here ...

------ next message ----

From: someone-else-again
Date: Fri, 26 Mar 1993 10:07:13 -0500
Subject: my different opinion

... another body goes here ...

------ next message ------

------ main boundary ------


"Parallel" 서브 타입

"multipart/mixed" 와 다른 점이라고 하자면, 이 타입에서는 각각의 본문 파트가, 하드웨어에 의하든 소프트웨어에 의하든 간에 병렬적으로 디스플레이가 가능해야 한다는 거죠. 예를 들어 프리젠테이션과 같이 텍스트와 이미지와 오디오가 동시에 나타나야 하는 경우를 들 수 있겠네요. 하지만, 상당히 플랫폼의 제약을 많이 받기 때문에, 실제로 사용되는 일은 거의 없다고 보면 되겠습니다.

"Report" 서브 타입

이 타입은 현재로는 메시지의 상태를 알리기 위한 것으로 사용되고 있습니다. 즉 되돌아오는 메일 등을 이 형태로 처리하게 됩니다. 좀 더 자세한 내용은 Notification Message에서 다루도록 하겠습니다.

이 타입은 어떤 본문 파트의 일부분으로는 사용될 수 없으며, "반드시" Top Level의 Content- Type으로만 쓰이도록 되어 있습니다. 그리고 이 메시지의 전체는 반드시 7비트 ASCII 문자로만 이루어져 있어야 합니다. (실제로는 8bit로 된 경우도 존재합니다.)

이 타입의 서브 파트는 크게 두 개 혹은 세 개이고, 이 순서로 나타나야 합니다. 세번째 Part는 없을 수도 있습니다.

첫번째 부분은 사람이 알아볼 수 있는 상태 설명 부분입니다. 보통 Content-Type이 지정되어 있지 않기 때문에, Content-Type을 text/plain으로 설정해서 보게 됩니다.

두번째 부분은 기계가 파싱해서 사용할 수 있는 상태 설명입니다. Content-Type은 "message/delivery-status"와 같은 형태로 나타납니다. 이 부분도 반드시 나타나야 합니다.

세 번째 부분은 선택 사항으로 원래 메시지 전체 혹은 일부분을 가지고 있습니다. 보통은 헤더에 문제가 있어서 메시지가 되돌아 오는 경우가 많기 때문에, RFC에서는 메시지 헤더만을 가지는 "text/rfc822" (실제로는 message/rfc822-headers가 더 많습니다) 타입을 권장하고 있습니다. 하지만, 요즘 같이 네트워크 용량이 풍부한 세상에서는 앞서 말씀드린 "message/rfc822" 타입으로 메시지 전체가 포함되는 것이 일반적입니다.


"Related" 서브 타입

이 타입이 multipart 타입 중에서 가장 어려운 타입이라고 볼 수 있겠네요. 이 타입은 각 본문 파트가 연관을 가지고 있다는 것을 말합니다. 그런데, 각 부분을 연결하는 방식이 응용 프로그램마다 천차만별일 수밖에 없기 때문에, 이 타입은 뭐라고 설명하기가 어렵네요.

하지만, 역시 이 타입이 중요한 이유는 HTML 문서를 메시지로 전달하기 위한 것입니다. HTML 문서에는 단순히 텍스트 뿐만이 아니라, 이미지 등의 많은 객체가 포함되어야 하는데, 거기에 바로 각 Content들을 Content-ID로 연결해서 사용하는 겁니다. 자세한 내용은 HTML 메시지에서 알아보도록 하죠.
1. "Message" 타입의 각 서브 타입

"RFC822" Subtype

앞서서 말씀드렸듯이 가장 간단하게 메일 메시지를 포함하고 있는 타입을 뜻합니다.
되돌아온 메시지에 가장 많이 포함된다고 말씀드렸죠?
"Partial" 서브 타입

메 일 시스템 용량이 아무리 빠방하다 하더라도, 어떤 큰 메시지라도 끄떡없이 보낼 수 있는 건 아닙니다. 한 번에 통과할 수 있는 메시지의 크기가 여러 가지 이유로 제한이 생기기 마련이죠. 그래서, 뭔가 큰 메시지를 보내기 위해서는 여러 개의 메시지로 잘라서 보내고 받는 쪽에서 합쳐서 봐어 합니다. 그것을 위한 타입입니다.

그래서, 각각의 메시지에 몇 번째 조각이며, 전체는 몇 조각으로 되어 있는지를 표시합니다. 물론 같은 메시지의 조각임을 나타내기 위해서 id라는 parameter를 사용합니다. 아래의 예를 보죠.

3조각 메시지의 두번째 조각
Content-Type: Message/Partial; number=2; total=3;
    id="oc=jpbe0M2Yt4s@thumper.bellcore.com"
혹은,
Content-Type: Message/Partial;
    id="oc=jpbe0M2Yt4s@thumper.bellcore.com";
    number=2

3조각 메시지의 세번째 조각 - 반드시 전체 조각수를 가지고 있어서, 자신이 마지막 조각임을 알려야 합니다.
Content-Type: Message/Partial; number=3; total=3;
    id="oc=jpbe0M2Yt4s@thumper.bellcore.com"

그렇다고 메시지를 조각낼 때, 아무렇게나 조각낼 수 있는 건 아니고, 몇 가지 원칙이 있습니다.

   일단 메시지는 "반드시" 라인이 끝나는 지점에서만 잘려야 합니다.
   각 메시지 마다 Content-*, Subject, Message-ID, Encrypted, MIME-Version를 제외한 모든 헤더 필드가 덧붙여져야 합니다.
   메시지가 합쳐질 때는, 헤더 중 Content-*, Subject, Message-ID, Encrypted, MIME-Version만이 살아남고, 나머지는 무시됩니다.
   두번째 조각 이후의 헤더 필드는 깡그리 무시됩니다.

어쨌든 쉽지 않은 모양이네요...


"External-Body" 서브 타입

이 타입은 실제 내용이 메시지 내부에 있는게 아니라 외부에 있다고 알리는 건데요. 그 외부 소스의 형태가 메일, FTP, HTTP, 로칼 디스크 등 워낙 다양하기 때문에, 사용하기도 어렵고, 설명하긴 더 힘드네요. ^^;
1. 헤더 필드의 확장

일단, 문법을 좀 보죠.

encoded-word := "=?" charset "?" encoding "?" encoded-text "?="

좀 복잡하죠? 간단히 쓰자면
=? (문자집합) ? (Encoding 방식) ? (인코딩된 문자열) ?=

이 렇게 되는 거죠. 여기서 문자집합은 앞서서 말씀드린 US-ASCII, ISO-8859-1, EUC-KR 등이 되는 겁니다. Encoding 방식은 그 문자들을 어떻게 Encoding했는가를 나타내구요. 각각의 지정된 내용을 ?로 구분하고 양쪽에 =?, ?=로 덮어 싸는 거죠. 물론, 여기서 문자 집합이나 Encoding에 대한 지정 방식은 대소문자를 구분하지 않습니다.



2. Encoding

여기에 사용되는 Encoding 방식은 두 가지가 있습니다.

"B" Encoding
이 방식은 말 그대로 base64 Encoding을 이용하는 겁니다. (RFC2045)

"Q" Encoding
이 방식은 Quoted-Printable과 유사한 Encoding입니다. 물론, 기본적으로는 Quoted-Printable과 같지만 몇 가지가 다르죠. 차이점을 보자면...

   "="은 "=3D"으로 SPACE는 "=20"으로 처리합니다. (16진수의 A~F는 대문자여야 합니다)
   16진수로 20은 반드시 "_"로 대치합니다. EBCDIC 코드에서는 20이 스페이스가 아니지만, 역시 무조건 "_"로 대치해야 합니다.



3. 실제 Encoding 예

아래의 예들을 보면서 실제로 사용시에 주의해야 될 점들을 살펴보죠.

Encoding된 형태 나타날 형태
(=?ISO-8849-1?Q?a?=)
     -> 당연하죠?
(a)
(=?ISO-8849-1?Q?a?= b)
     -> 역시...
(a b)
(=?ISO-8849-1?Q?a?= =?ISO-8849-1?Q?b?=)
     -> Encoding된 부분 사이의 LWSP는 없는 걸로 처리합니다.
(ab)
(=?ISO-8849-1?Q?a?=    =?ISO-8849-1?Q?a?=)
     -> LWSP가 몇 개이든 상관없습니다.
(ab)
(=?ISO-8849-1?Q?a?=
   =?ISO-8849-1?Q?a?=)
     -> CRLF도 마찬가지로 LWSP의 일부분으로 처리합니다.
(ab)
(=?ISO-8849-1?Q?a_b?=)
     -> "_"는 16진수로 20이고 ASCII 코드에서는 SPACE죠.
(a b)
(=?ISO-8849-1?Q?a?= =?ISO-8849-1?Q?_b?=)
     -> 역시 앞서 설명과 같습니다. 재확인...
(a b)
728x90

'Information' 카테고리의 다른 글

1/3로 크기로 압축된 Prototype.js  (0) 2007.04.05
자바스크립트 정리  (0) 2007.04.02
세컨드라이프 사용 용어  (0) 2007.03.31
728x90
window-------------frame    ---form-----------texarea      navigator-----plugin
           --------document-----------layer       ---test                  -----mimetype
           --------location        ---link        ---fileupload
           --------history         ---image       ---password
                                   ---area        ---hidden
                                   ---anchor      ---submit
                                   ---applet      ---reset
                                   ---plugin      ---radio
                                                  ---checkbox
                                                  ---button
                                                  ---select--------------option

#########################
개체(Object) : 개체라는 말은 상당히 추상적이다. 이 개념을 알려면 "객체지향"을 공부해야 한다. 이 과에서 의미한 개체는 HTML 문서, 브라우저 윈도우, 날짜/시간과 같은 것을 의미하며 일반적으로 개체는 그 개체가 할 수 있는 일을 정의한 메소드와 그 개체의 특징을 나타내는 속성으로 구성된다.
###  date : Date는 시스템의 날짜와 시간을 얻기 위한 개체이다. 이 개체를 생성하는 방법은 다음과 같다 :

Nameofobject = new Date();
###  document : 이것은 해당 자바스크립트를 포함하고 있는 HTML 문서를 참조할 수 있는 개체를 의미한다.
###  location : Location은 특정 URL을 지징하는 개체이다. 다음과 같은 형식으로 사용된다:

parent.location='index.html'
(location이란 속성도 있는데 사용법이 서로 틀리다는 것을 기억하기 바란다.)
###  window : window는 브라우저 화면을 참조할 수 있는 개체이다.

#########################
메소드(Method) : 메소드는 어떤 개체로 하여금 어떻게 행동할지를 알려주는 하나의 명령을 의미한다.
alert() : alert는 window 개체 또는 하이퍼텍스트 링크내에서 대화 상자를 만들기 위해 사용되는 메소드이다. alert문의 괄호 안에 있는 텍스트를 대화 상자에 보여주고 OK 버튼이 함께 제공되며 사용자가 계속 진행하기 위해서는 이 버튼을 눌러야만 한다.
getMonth() : Date 개체의 메소드로 현재 월을 0~11 사이의 숫자로 반환한다.
getDate() : Date 개체의 메소드로 현재 날짜를 1~31 사이의 숫자로 반환한다.
getYear() : Date 개체의 메소드로 현재 연도를 0~99 사이의 숫자로 반환한다. (인터넷 익스플로러 5 이상에서는 4자리 숫자를 반환한다)
getFullYear() : Date 개체의 메소드로 현재 연도를 네자리 숫자로 반환한다. (넷스케이프 4.0 이상, 인터넷 익스플로러 3.x 이상에서 사용할 수 있다)
getDay() : Date 개체의 메소드로 현재 요일을 1~7 사이의 숫자로 반환한다.
getHours() : Date 개체의 메소드로 현재 시간을 0~23 사이의 숫자로 반환한다.
getMinutes() : Date 개체의 메소드로 현재 분을 0~59 사이의 숫자로 반환한다.
getSeconds() : Date 개체의 메소드로 현재 시간을 0~59 사이의 숫자로 반환한다.

Write() : Write 메소드는 Document 개체가 웹 페이지 상에 텍스트를 표시할 수 있도록 해주는 메소드이다.


#########################
속성(Properties) : 속성은 개체의 한 특징 또는 그 개체의 일부를 의미한다. 예를 들어 브라우저 윈도우의 상태 표시줄은 window 개체의 속성이며 windows.status로 참조된다. (표시형식 : 개체이름.속성이름)

bgColor : bgColor는 document 개체의 속성으로 HTML 문서의 배경색을 의미한다.
parent : parent는 특별히 프레임과 함께 자주 사용되는 속성으로 특정 프레임을 가리킬 때 사용된다. 만일 프레임 밖에서 사용된다면 브라우저 전체 윈도우를 가리키게 된다.
status : status는 window 개체의 속성으로 브라우저 화면의 왼쪽 하단에 위치한 상태 표시줄을 의미한다.


#########################
에러(Error) : 에러 또는 오류 메시지 창은 스크립트 안에 뭔가 문제가 있을 경우 발생한다. 크게 두 가지 종류가 있는데 구문(Syntax) 오류와 런타임(RunTIme) 오류이다.
구문 오류(Syntax Error) : 스크립트 안에 잘못된 철자가 있거나 컴퓨터가 인식하기 어려운 텍스트가 있을 경우, 자바스크립트 문법에 어긋난 경우 발생한다.
런타임 오류(Run-Time Error) : 런타임 오류는 잘못된 자바스크립트 명령어를 사용했을 때 발생한다.


#########################
이벤트 핸들러(Event Handlers) : 이벤트 핸들러는 HTML 코드에 내장되는 자바스크립트 명령어다. 사용자와 웹 페이지 사이의 상호 작용을 위해 HTML 코드와 함께 사용된다.
onBlur : onBlur는 사용자가 select, text, textarea 폼 요소에 있다가 그 요소에서 벗어나게 될 때 발생하는 이벤트 핸들러이다. 즉, 사용자가 그 아이템에 대한 포커스를 잃을 때 발생한다.
onChange : onChange는 사용자가 select, text, textarea 폼 요소에 있는 텍스트를 변경한 후 그 요소를 떠날 때 발생하게 된다.
onClick : onClick은 사용자가 링크와 같은 오브젝트를 클릭할 때 발생한다.
onFocus : onFocus는 사용자가 select, text, textarea 폼 요소를 선택할 때 발생한다. 즉 사용자가 그 폼 요소에 포커스를 맞출 때 발생한다.
onLoad : onLoad는 웹 페이지가 열릴 때 발생하는 이벤트로 HTML의 BODY 태그 안에서 사용된다.
onMouseOver : onMouseOver는 사용자가 링크 위에 마우스를 올려 놓았을 때 발생하는 이벤트 핸들러이다.
onSelect : onSelect는 사용자가 text, textarea 폼 요소에 있는 텍스트의 일부 또는 전체를 선택할 때 발생한다.
onSubmit : onSubmit은 submit 버튼 폼 요소를 사용자가 틀릭할 때 발생한다.
onUnLoad : onUnload는 사용자가 웹 페이지를 떠날 때 발생하는 이벤트로 HTML의 BODY 태그 안에서 사용된다.

#########################
주석(Comment) : 주석은 더블 슬래쉬(//)로 표시한다. 주석 처리하고 싶은 텍스트의 왼쪽 옆에 "//" 표시를 해주면 된다. "//"는 // 표시의 오른 쪽에 있는 라인 전체를 주석 처리하는 것이다. 만일 주석 처리하고 싶은 줄이 여러 줄이라면 // 대신 시작을 "/*"로 끝을 "*/"로 막아 주면 된다. 즉, /*와 */ 사이에 있는 모든 내용이 주석 처리 된다는 것이다.

#########################
컴마(comma : ",") : 자바스크립트 이벤트 핸들러를 동시에 여러 개 사용하고자 할 때 컴마(,)를 사용한다.



###################################################################################
window.alert('내용');//경고창
prompt('내용',초기값);//입력값 받기
confirm('내용');//확인,취소
print();//현 윈도우를 인쇄하고자 할 때


parseInt(변수); 소수점자리 그냥 버림
parseFloat(변수);
Math.ceil(변수); 소수점자리없앤정수(소수점자리 값 올림)
Math.floor(변수); 소수점자리없앤정수(소수점자리 값 내림)
Math.round(변수); 소수점자리없앤정수(소수점자리 값 반올림)


var test;
var myArray = new Array();
var myArray = new Array(5);
var myArray = new Array('1','2','5','4','3');
myArray[0] = '1';
myArray[0][0] = '1';


if(비교값1){처리내용1}elseif(비교값2){처리내용2}else{비교값3};
논리연산자 && (AND), || (OR), ! (NOT)
연산기호 ==,<,>,<=,>=,!=
switch (비교내용) {
 case '1':
  처리내용1; break;
 case '2':
  처리내용2; break;
 default:
  처리내용3; break;
}



function 함수명(초기값){ 처리내용; 리턴값; }
return 반환값;


for(i=0;i<5;i++){처리내용}
while(i<5){처리내용};


isNaN(변수); -> 숫자 false 문자 true


length -> 문자열의 길이
myArray.length; -> 변수길이
myArray.sort();
var myString = new String("나는 String 개체입니다");
var lengthOfString = myString.length;
charAt(위치값) -> 문자열에서 한문자 선택
charCodeAt(위치값) -> 문자열에 한문자 코드값
myString = String.fromCharCode(65,66,67); -> 문자 코드를 문자열로 변환 (ABC)
indexOf('앞부분 부터 찾을문자');
lastIndexOf('뒷부분 부터 찾을 문자') -> 문자열의 위치를 반환, 없을 경우 -1반환
substr(시작위치,복사할문자수); -> 문자열의 일부분 복사하기
substring(시작위치,끝위치);
myDate.toString(); -> 숫자를 문자열로 반환
myString.toLowerCase(); -> 문자열의 소문자 변환
myString.toUpperCase(); -> 문자열의 대문자 변환


Math.PI 파이값
Math.floor((Math.random() *  6) + 1); -> 1~6사이에 난수를 발생한다.
Math.pow(제곱근, 변수) -> 제곱 Math.pow(4,2) = 16
Math.abs(변수); -> 절대값


concat() -> var TestArray = TestA.concat(TestB); TesTA와 TestB에 배열을 결합
slice() -> var slicedArray = TestA.slice(1,3); TestA에 인덱스1에서 부터 인덱스 3까지를 가져온다.
join() -> var TestString = TestA.join("<br>"); TestA를 문자열로 변환 1<br>2<br>5<br>4<br>3...
sort() -> TestA.sort(); 배열을 순서대로 정렬
reverse() -> TestA.reverse(); 배열을 역순으로 정렬



var myDate = new Date();
var myDate = new Date(949278000000);
var myDate = new Date("1 jan 2003");
var myDate = new Date(2000,0,31,15,35,20,20); 2000년 1월 31일 35분 20초 20밀리
getDate() -> myDate.getDate(); 날짜를 반환
getDay() -> myDate.getDay(); 요일을 정수로 반환
getMonth() -> myDate.getMonth(); 월을 정수로 반환
getFullYear() -> myDate.getFullYear; 년을 네 자리 수로 반환
setDate() -> myDate.setDate(27); 날짜를 설정
setMonth() -> myDate.Month(1); 월을 설정
setFullYear() -> myDate.setFullYear(2003); 년을 설정
myDate.getHours(); 시간
myDate.getMinutes(); 분
myDate.getSeconds(); 초
myDate.getMilliseconds; 밀리



window.location;
window.location.replace(URL);
window.location.href(URL);
window.location.reload();

window.history; window.history.go(-1); window.history.go(1); window.history.go(3);

window.navigator

window.screen;
window.screen.height;//화면 높이
window.screen.width; //화면 너비
window.screen.colorDepth;//사용가능한 색상수
window.screen.pixelDepth;//한 픽셀당 비트수


window.document;
window.document.bgColor = "skyblue";
window.document.write('내용');
window.document.forms[인덱스]
window.document.form1.length;
window.document.images[이름명]
window.document.images[이름명].src = "값.gif"
window.document.images[이름명].value = "처리이름"
window.document.links[인덱스]
window.document.links[인덱스].onclick = "이름명";

window.defaultStatus = '하이' -> 상태 표시줄 메시지-항상 보여주기 위한 상태표시줄 메시지

window.status = '하이' -> 상태 표시줄 메시지


onLoad="처리내용";//웹페이지 열때//body,frameset(여러개의 프레임의 경우)
onunload="처리내용";//웹페이지 닫을때//body,frameset
onresize="처리내용";//윈도우나 프레임의 크기를 바꾸었을 때

onclick="처리내용";//클릭했을 때
onmouseup="처리내용";//마우스 버튼을 눌렀다 놓았을 때
onmousedown="처리내용";//마우스 버튼을 눌렀을 때
onmouseover="처리내용";//링크 위로 마우스가 지나갔을 때
onmouseout="처리내용";//마우스가 링크나 특정 영역 안에 있다가 나갔을 때
onmousemove="처리내용";//마우스를 움직였을 때
onmouseup="처리내용";//마우스 버튼을 눌렀다 놓았을 때

onfocus="처리내용";//포커스를 맞출 때 발생한다.
onblur="처리내용";//포커스를 잃을 때
onreset="처리내용";//입력 양식에서 취소reset시켰을 때
onsubmit="처리내용";//submit버튼을 누를 때
onselect="처리내용";//텍스트를 블럭 지정할때
onchange="처리내용";//내용이 바뀔때

onkeydown="처리내용";//키를 입력했을 때
onkeypress="처리내용";//키를 눌렀을 때
onkeyup="처리내용";//키를 눌렀다 놓았을 때


window 객체의 메소드
blur();//특정 객체의 포커스 없애기
click();//입력 양식이나 링크를 마우스로 클릭했을 때
focus(); -> txtAge.focus();//특정 개체에 포커스가 가도록 만들기
select(); -> txtAge.select();//입력 양식의 한 필드 블록 지정했을 때

onabort -> 이미지의 로딩을 취소할 때 발생한다.
onerror -> 페이지를 로딩하면서 오류가 생길 때 발생한다.
//이미지나 문서가 전송되는 도중에 네트웍이 끊어지거나 시스템이 다운되는 등의 여러가지 이유로 에러가 생겼을 때


**********************************************************************************************
**********************************************************************************************
Button 개체
이벤트 - onblur, onclick, onfocus, onmousedown, onmouseup
프로퍼티 - form, name, type, value
메서드 - blur(), click(), focus()

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CheckBox 개체
이벤트 - onblur, onclick, onfocus
프로퍼티 - checked, defaultChecked, form, name, type, value

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
document 개체//body,head,title태그 안
이벤트 - onclick, ondblclick, onkeydown, onkeypress, onkeyup, onmousedown, onmouseup
프로퍼티
- alinkColor(링크를 클릭했을 때 나타나는 색), vlinkColor(이전에 방문했던 링크를 표시하는 색),linkColor(문서에서 링크를 표시하는 색), links(문서에 있는 링크들의 배열)
-anchors (문서에 있는 표식들의 배열), applets(문서에 있는 자바애플릿의 배열),embeds(문서에 있는 플러그인들의 배열), form_name, forms(문서에 있는 입력양식들의 배열), images(문서에 있는 이미지들의 배열) ->.length로 배열 [0]...
-bgColor, fgColor(문서의 전경색),cookie(클라이언트의 pc에 저장된 정보), domain(현재 문서의 도메인 이름), lastModified(문서가 마지막으로 수정된 날짜), referrer(링크로 현재 문서에 왔을 때 이전 문서의 url위치), title(문서의 제목), URL(문서의 URL주소)
메서드 - close()(문서에 데이타를 출력하는 것을 마무리), open()(문서에 데이타를 출력하기 위해 준비시키는 것), write()(문서에 데이타 출력), writeln()(문서에 데이터 출력(줄바꾸기 포함))

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
history 개체
프로퍼티 - length
메서드 - back(), forward(), go()

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
img 개체
이벤트 - onabort, onerror, onload
프로퍼티 - border, complete, height , hspace, lowsrc, name, src, vspace, width
**********************************************************************************************
**********************************************************************************************
window.document.form1.textarea1.value;
window.document.form1.radio1[인덱스].checked = true;
window.document.form1.radio1[인덱스].checked = false;
window.document.form1[인덱스].type == "checkbox"; -> form1에 checkbox형인 체크박스

var myNewOption = new Option("TheText","TheValue","TheTest");
document.form1.selectObject.option[0] = myNewOption; -> 항목설정
document.form1.selectObject.option[0] = null; -> 항목제거
document.form1.selectObject.options[2].text == 수요일;
document.form1.selectObject.options[2] == null;
form1.secondDay.options[form1.secondDay.selectedIndex].value
form1.firstDay.options[nowDate.getDate() - 1].selected = true;

secondDate.valueOf(); -> 1970년 1월 1일부터 date개체에 저장한 시각까지의 시간을 밀리초 단위로 반환

window.name -> 프레임의 윈도우 객체 이름
window.parent; -> 프레임의 부모의 윈도우가 가지고 있는 window개체에 접근//프레임에서 현재프레임의 상위 프레임
window.parent.location.href -> 현재윈도우의 부모의 주소
var formobject = window.parent.parent.fraMenu.document.form1;
formobject.choosePage.selectedIndex = linkIndex;

window.top; -> 최상위 프레임에 접근(현재 프레임의)
window.parent.parent.fraMenu.document.form1.choosePage.selectedIndex = linkIndex;
window.top.fraMenu.document.form1.choosePage.selectedIndex = linkIndex;
window.top.location.relace("myPagename.htm"); -> 최상위 페이지 수정
return window.top.addPage(window.location.href);

window.self; -> 현재 window 개체의 참조를 반환

window.open("파일명","target","width=크기,height=크기,left=위치,top=위치, directories=yn,copyHistory=yn,location=yn,resizable=yn,scrollbars=yn,status=yn,toolbar=yn"); -> 새창열기
width=크기 -> 새윈도우의 폭
height=크기 -> 새윈도우의 높이
left=위치 -> 윈도우의 위치를 왼쪽 끝을 기준
top=위치 -> 윈도우의 위치를 위쪽 끝을 기준
directories=yn -> 디렉토리 버튼을 보여준다. (연결)익스플로러 연결도구모음, 익스플로러 전용yew||no
copyHistory=yn -> 윈도우의 히스토리를 복사
location=yn -> 주소 입력창
resizable=yn -> 사용자가 윈도우의 크기를 조정 유무
scrollbars=yn -> 스크롤바 사용 유무
status=yn -> 상태 표시줄
toolbar=yn -> 툴바

window.close; -> 창닫기

window.opener; -> 기존 윈도우의 window 개체의 참조를 반환한다.//open()메소드로 윈도우를 열였을 때 호출한 윈도우
window.opener.document.bgcolor = "RED";
window.opener.document.form1.text1.value;

newWindow.resizeTo(350,200);
newWindow.moveTo(100,400);

newWindow.resizeBy(100,200);
newWindow.moveBy(20,50);

var myString = "A,B,C";
var myTextArray = myString.split(','); -> myTextArray[0]="A",myTextArray[1]="B",myTextArray[2]="C"

var myString = "본 행사는 5월 21일에 개최합니다";
var myCleanedUpString = myString.replace("5월","6월"); -> 본 행사는 6월 21일에 개최합니다

var myString = "1234567890";
alert (myString.search("7")); -> 6을 출력;

var myString = "1997, 1998, 1999, 2000, 2001, 2002";
myMatchArray = myString.match("2000");
alert(mymatchArray.length); -> myMatchArray = ('2000','2000','2001','2002')

RegExp() -> 정규식 생성자
var myRegExp =new RegExp("\\b'|'\\b");
/검색내용/gi -> g 전체를 검색, i 대소문자 구분하지 않음
\d -> 0부터 9사이의 숫자
\D -> 숫자가 아닌 모든 문자
\w -> A-Z,a-z,0-9,언더스코어 문자_와 같은 모든 단어문자
\W -> 단어 문자가 아닌 모든 문자
\s -> 탭,개행문자,캐리지 리턴, 폼 피드,수직 탭등 모든 공백 문자
\S -> 공백 문자가 아닌 모든 문자
.  -> 모든 단일 문자
[...] -> 중괄호 안에 있는 모든 문자중의 하나
[^...] -> 중괄호 안의 문자를 제외한 모든 문자
1-880-888-5474와 일치하는 정규식 -> /\d-\d\d\d-\d\d\d-\d\d\d\d/

{n} -> n개의 앞 요소와 일치한다.
{n,} -> n개 이상의 앞 요소와 일치한다.
{n,m} -> n개 이상 m개 이하의 앞 요소와 일치한다.
? -> 0개나 1개의 앞 요소와 일치한다.
+ -> 1개 이상의 앞 요소와 일치한다.
* -> 0개 이상의 앞 요소와 일치한다.
1-880-888-5474와 일치하는 정규식 -> /\d-\d{3}-\d{3}-\d{4}/

처음 /와 마지막 /는 이 사이에 있는 문자가 정규식임을 자바스크립트에게 알려준다.

/Paula?/ -> a가 있을수도 있고 없을 수도 있다.

^ -> 맨처음
$ -> 마지막
\b -> 단어 경계에 일치
\B -> 단어 경계가 아닌 위치에 일치

var myRegExp = /(\d{4}/g;
myString = myString.replace(myRegExp,"the year $1") -> the year 1999, the year 2000,...

한번실행후 끝
window.setTimeout("처리내용",시간); -> myTimerID = window.setTimeout("alert('시간 끝')",3000); 3초후 실행,고유한 식별아이디 반환
clearTimeout(myTimerID);

일정 시간 간격을 두고 연속적으로 실행
myTimerID = setInterval("myFunction()",5000);
clearInterval(myTimerID);

document.body.scrollWidth / 10; -> 윈도우의 내부 폭을 픽셀 단위로 알아내기

document.cookie = "UserName=홍길동;expires=Tue, 28 Dec 2010 00:00:00;";
var expireDate =new Date();
expdate.setTime(expireDate.getTime() + 1000 * 3600 * 24 * 30); // 30일
expireDate.setMonth(expireDate.getMonth()+6); -> 만기일 설정
document.cookie = "UserName=홍홍홍;expires=" + expireDate.toGMTString() + ";";
document.cookie = "UserName=홍홍홍;expires=" + expireDate.toGMTString() + ";path=/mystore;"; <- /mystore 디렉토리에서도 접근 가능

escape(변수);
unescape(변수);

setCookie("Name","Bob","","");
setCookie("Age","101","","");
alert(document.cookie);

var expireDate =new Date();
expireDate.setMonth(expireDate.getMonth()+12); -> 만기일 설정
setCookie("Name","Bob","/mystore",expireDate.toGMTString());


--동적 HTML--
<div id="div1">내용</div>
<p id="mypara">단락</p>
document.all["mypara"];
mypara.innerText="hi~~~~~~~~~~";
mypara.style.color='red';

mypara.style.left = 값+"px";
mypara.innerHTML; -> 인라인수준
div1.outerHTML; -> 블록수준

beforeBegin -> 시작 태그 바로 앞
afterBegin  -> 태그 바로 다음
beforeEnd   -> 종료 태그 바로 앞
afterEnd    -> 종료 태그 바로 다음
div1.insertAdjacentHTML("beforeBegin","<BR>");

이벤트
event.screenX
event.screenY
event.button -> 0 안누름 1 왼쪽누름 2 오른쪽누름 3 왼쪽오른쪽누름 4 가운데 누름 5왼쪽가운데누름 6오른쪽가운데누름 7 버튼3개다누름

fromElement, srcElement, toElement

var xPos = parseInt( srcElement.offsetLeft );
var yPos = parseInt( srcElement.offsetTop );
srcElement.width;
srcElement.tagName;
srcElement.RollOver; -> <TD ID="WoodOak" RollOver Rollout CLASS="TDMenu"....>
srcElement.backgroundColor = "blue";
menuToHide.contains(event.toElement)

<LAYER> -> 페이지 내 레이어에 포함되지 않은 컨텐츠 '앞'에 보이지 않는 사각형의 화면 공간을 만든다.
<ILAYER> -> 상대 위치로 지정하며 위치를 바꿀 수 있는 인라인 레이어를 생성한다.

<LAYER ID="myLayer1" LEFT="100" TOP="250">
 <H3>Layer에 있는 컨텐츠</H3>
 <P>Layer에 있는 단락</P>
</LAYER>

<ILAYER ID="myLayer1" LEFT="100" TOP="250">
 <H3>ILayer에 있는 컨텐츠</H3>
 <P>ILayer에 있는 단락</P>
</ILAYER>

자바스크립트에서의 참조법은 document 개체를 통해서 레이어의 ID를 쓰면된다.
document.myLayer1.left = 200;
document.myLayer1.top = 200;
document.myILayer1.bgColor = "red";
myLayer1.MoveTo(200,150); -> 인자에서 지정한 화면의 한 지점으로 태그를 이동
myLayer1.Moveby(200,150); -> 넘겨받은 인자만큼 태그를 이동

<LAYER ID="myLayer1" LEFT="100" TOP="250" Z-INDEX="1"> -> 레이어의 순서는 각자의 Z-INDEX 속성에서 결정한다. 기본값 0
myLayer1.zIndex=1;//레이어의 순서 지정
myLayer1.moveAbove(myLayer2);  //레이어를 위로 이동
myLayer2.moveBelow(myLayer1);  //레이어를 아래로 이동

DOM개체
Node -> 도큐먼트 내의 모든 노드는 자신만의 Node개체를 가지고 있다.
NodeList -> 이 개체는 모든 Node개체의 목록이다.
NamedNodepMap -> 이 개체는 인덱스가 아니라 이름으로 모든 Node개체에 접근할 수 있도록 한다.

document.getElementById(idvalue) -> 요소의 ID속성의 값을 넘겨받았을 때 요소의 참조(노드)를 반환한다.
<h1 id="heading1">제목입니다</h1>
<script language="javascript">
 var H1Element = document.getElementById("heading1");
 H1Element.style.fontFamily="궁서체";
</script>
 -> 제목의 폰트가 궁서체로 변경됨

<script language="javascript">
 var TDElement0 = document.getElementByTagName("TD").item(0);
 var TDElement1 = document.getElementByTagName("TD").item(1);
 TDElement0.style.fontFamily="바탕체";
 TDElement1.style.fontFamily="바탕체";
</script>
 -> 따옴표 안에 "< >" 없이 쓴다. <TD>

document.documentElement.tagName; -> 요소의 태그명을 설정하거나 반환 (최상위 HTML>

Node 개체의 프로퍼티
firstChild -> 요소의 첫번째 자식 노드를 반환
lastChild -> 요소의 마지막 자식 노드를 반환
previousSibling ->
어떤 요소에서 현재 자식 노드와 같은 수준에 있는 이전 자식 노드를 반환
nextSibling -> 어떤 요소에서 현재 자식 노드와 같은 수준에 있는 다음 자식 노드를 반환
ownerDocument -> 노드를 포함하고 있는 도큐먼트의 루트 노드를 반환
parentNode -> 트리 구조에서 현재 노드를 포함하고 있는 요소를 반환
nodeName -> 노드의 이름을 반환
nodeType -> 노드의 형식을 숫자로 반환
nodeValue -> 노드의 값을 평범한 텍스트의 형태로 설정
<script language="javascript">
 var H1Element = document.getElementById("heading1");
 H1Element.style.fontFamily="궁서체";
 var PElement = H1Element.nextSibling;
 PElement.style.fontFamily="궁서체";
</script>

Node 개체의 메서드
appendChild(new node) -> 자식 노드의 목록의 끝에 새로운 node 개체를 추가한다.
cloneNode(child option) -> 인자로 제공한 node 개체와 똑같은 새로운 node 개체를 만든다. 이때 선택 사항으로 모든 자식 노드를 포함할 수도 있다.
hasChildNodes() -> 어떤 노드가 자식 노드를 가지고 있을 경우 true를 반환한다.
insertBefore(new node, current node) -> 자식 노드의 목록에서 현재 노드로 지정한 노드 앞에 새로운 node 개체를 추가한다.
removeChild(child node) -> node 개체의 자식 노드 목록에서 하나의 자식 노드를 제거한다.
replaceChild(new child, old child) -> 예전 자식 node 개체를 새로운 자식 node 개체로 바꾼다.

document 개체의 메서드
createElement(element name) -> 지정한 이름으로 요소 노드를 만든다.
createTextNode(text) -> 지정한 이름으로 텍스트 노드를 만든다.
CreateAttribute(attribute name) -> 지정한 이름으로 속성 노드를 만든다.

var newText;
var newElem;

newText = document.createTextNode("제목입니다")
newElem = document.createElement("H1")
newElem.appendChild(newText)
document.body.appendChild(newElem)

newText = document.createTextNode("단락에 있는 텍스트입니다")
newElem = document.createElement("P")
newElem.appendChild(newText)
document.body.appendChild(newElem)

Element 개체의 메서드(속성을 얻고 설정하기)
getAttribute(attribute name) -> 속성의 값을 반환한다.
setAttribute(attribute name, value) -> 속성의 값을 설정한다.
removeAttribute(attribute name) -> 속성의 값을 삭제하고 기본값으로 수정한다.

newElem.setAttribute("align","center");
newElem.getAttribute("align");

event 개체의 프로퍼티
bubbles -> 이벤트가 하나의 요소에서 다른 요소로 제어권을 넘겨줄 수 있는지의 여부를 알려준다.
cancelable -> 이벤트가 자신의 기본 작업을 취소할 수 있는지의 여부를 알려준다.
currentTarget -> 이벤트가 현재 이벤트 흐름의 어떤 단계에 있는지 알려준다.
eventPhase -> 이벤트가 현재 이벤트 흐름의 어떤 단계에 있는지 알려준다.
type -> 이벤트의 이름을 알려준다.

mouse 이벤트 개체의 프로퍼티
altKey -> 이벤트가 발생했을 때 Alt키가 눌렸는지의 여부를 알려준다.
button -> 어떤 마우스 버튼이 눌렸는지를 알려준다.
clientX -> 이벤트가 발생했을 때 브라우저 윈도우에서 마우스 포인터가 위치한 지점의 수평 좌표를 알려준다.
clientY -> 이벤트가 발생했을 때 브라우저 윈도우에서 마우스 포인터가 위치한 지점의 수직 좌표를 알려준다.
ctrlKey -> 이벤트가 발생했을 때 Ctrl키가 눌렸는지의 여부를 알려준다.
metaKey -> 이벤트가 발생했을 때 메타키가 눌렸는지의 여부를 알려준다.
screenX -> 이벤트가 발생했을 때 브라우저 윈도우에서 마우스 포인터의 화면 좌표의 원점에 상대적인 수평 좌표 위치를 알려준다.
screenY -> 이벤트가 발생했을 때 브라우저 윈도우에서 마우스 포인터의 화면 좌표의 원점에 상대적인 수직 좌표 위치를 알려준다.
shiftKey -> 이벤트가 발생했을 때 Shift키가 눌렸는지의 여부를 알려준다.


페이지에 AtiveX 컨트롤을 추가할려면 <OBJECT>태그를 써야 한다. <OBJECT> 태그에는 모든 컨트롤에 공통적인 2가지 중요한 속성이 있는데, 이는 CLASSID와 CODEBASE이다. CLASSID 속성은 컨트롤의 제작자가 컴파일 할 때 부여한 고유한 식별자이며, CODEBASE 속성은 ActiveX컨트롤을 찾을수 있는 URL을 가지고 있다.


바로 이러한 문제점 들 때문에 상속된 하위객체에 접근을 하기
위해서는 상속정의된 프로퍼티로 접근을 하는게 애러를 방지 한다는 것입니다.
즉, test_form.children[0] 혹은 test_form.lastChild 로 접근을 하면 콘트롤 할 수 있다는 것이죠...
이때 모든 윈도우 하위객체는 대부분 collection 에 all 프로퍼티와 element 객체에 하위구성요소에 대한 인서턴스 참조값들을
저장하게 되는데 이것으로 액세스 하면 문제 발생을 줄일 수
있다는 것입니다. 물론 글로벌 참조프로퍼티인 id 는 되도록이면
하위객체에 잘 사용하지 말고 window 객체 바로 밑 일 경우
this 로 접근이 가능하도록 사용을 하면 문제 해결에 도움이
될 듯 합니다.
그럼...


function debug(testNode) {
 var aa;
     for(key in testNode)
     {
         inputValue = testNode[key];
  aa += key + " : " + inputValue + "\r\n";
     }
 window.clipboardData.setData('Text', aa);
 alert('복사완료');
}

function debug2(testNode) {
 window.clipboardData.setData('Text', eval("document.all."+testNode+".outerHTML"));
 alert('복사완료');
}




-----------------------
 모든 마우스 이벤트 
-----------------------
onkeydown처럼 마우스를 눌렀을때는 onMouseDown이벤트가 발생합니다.
그외의 이벤트로는

onClick - 클릭했을때
onMouseOver - 마우스 포인터를 객체 위로 옮겼을 때 (꼭 누르지 않아도 됩니다)
onMouseOut - 마우스 포인터를 객체에서 다른곳으로 옮길때
onmouseup
oncontextmenu
onrowexit
onbeforepaste
onactivate
onmousemove
onmove
onselectstart
oncontrolselect
onkeypress
oncut
onrowenter
onmousedown
onpaste
onreadystatechange
onbeforedeactivate
onkeydown
onlosecapture
ondrag
ondragstart
oncellchange
onfilterchange
onrowsinserted
ondatasetcomplete
onmousewheel
ondragenter
onblur
onresizeend
onerrorupdate
onbeforecopy
ondblclick
onkeyup
onresizestart
onmouseover
onmouseleave
onmoveend
onresize
ondrop
onpage
onrowsdelete
onfocusout
ondatasetchanged
ondeactivate
onpropertychange
ondragover
onhelp
ondragend
onbeforeeditfocus
onfocus
onscroll
onbeforeactivate
onbeforecut
onclick
oncopy
onfocusin
onbeforeupdate
ondataavailable
onmovestart
onmouseout
onmouseenter
onlayoutcomplete
onafterupdate
ondragleave
onbeforeunload
onafterprint
onbeforeprint
onload
onselect
onunload


등등이 있습니다. 이것들 중 몇개는 모질라에서는 되지 않고 또 모질라에서만 되는 것들도 있습니다.

출처 : http://blog.naver.com/swtgm?Redirect=Log&logNo=140034422537

728x90

'Information' 카테고리의 다른 글

인터넷 메일 MIME 규격  (0) 2007.04.03
세컨드라이프 사용 용어  (0) 2007.03.31
세컨드 라이프 기본 조작(1)  (0) 2007.03.31
728x90
세컨드 라이프내에서 만나는 사용자들은 이름이나 외양에 명시되어 있지 않은 한 어떤 나라에서 액세스 했는지 알 수 없다. 그 때문에 채팅이나 IM에서는 영어를 사용하는 경우가 많다.
 
세컨드 라이프내에서 자주 사용되고 있는 말을 아래에 정리해 보았다. 다만 이러한 말의 일부에는 영어권의 젊은이가 채팅 등에서 사용하는 은어적인 것도 포함. 그 때문에 그 내용이나 용법은 항상 변화한다. 그러나 상대가 말하는 것의 이해를 보조하는 역할 참조는 될 것이다.


출처 : ZDNet
728x90

'Information' 카테고리의 다른 글

자바스크립트 정리  (0) 2007.04.02
세컨드 라이프 기본 조작(1)  (0) 2007.03.31
세컨드라이프 주요(?)장소  (0) 2007.03.31
728x90
계정 생성  
세컨드 라이프는 이 서비스의 공식 사이트에서 계정 등록을 하고 아바타(Avatar)를 제작하는 것부터 시작된다. 계정 등록은 무료이며 필요 사항을 입력하기만 하면 된다.
 
사용자 등록이 끝나면 세컨드 라이프 클라이언트를 다운로드할 수 있다. 다운로드한 클라이언트를 인스톨하여 기동시키면 드디어 세컨드 라이프의 3D세계로 들어가게 된다.

사용자 인터페이스  
세컨드 라이프 클라이언트를 최초로 기동시키면 아래의 그림과 같은 사용자 인터페이스에 오리엔테이션 섬 공화국(Orientation Island Public)이라 불리는 섬에 도착한 자신의 아바타(Avatar)가 표시된다.



이 섬에서는 아바타의 기본적인 조작 방법이 오리엔테이션 된다. 지면에 그려진 화살표에 따라 아바타를 이동시키면 조작 방법을 배울 수 있는 포인트가 나온다. 각 포인트에「클릭하시오(Click Me)」라고 쓰여진 부분을 클릭하면 조작에 대한 설명이 표시된다(유감스럽게도 영어로 쓰여져 있다).

보행  
이 섬에서 오리엔테이션 되는 순으로 조작 방법을 설명하겠다. 우선은 아바타를 걷게 할 필요가 있다. 아바타의 보행에는 다음의 키를 사용한다.



주의:WASD 키를 사용하는 경우, 화면 아래 Chat 버튼을 눌러 채팅 기능을 일시적으로 정지해야 한다.

외양의 변경  
아바타의 외양은 용이하게 변경할 수 있다. 오리엔테이션 섬의 최초 포인트에서는 외양의 변경 방법이 소개되고 있다.


현재의 아바타를 위 사진에서 보이는 남성이나 여성의 외양으로 변경한다. 어느 쪽인지 인물을 클릭하면 화면 오른쪽 상단에 메시지가 표시된다

메시지내의 Keep 버튼을 클릭한다. 그리고 화면 왼쪽 하단에 있는 Inventory 버튼을 클릭한다. Inventory(목록)란 각 사용자가 취득한 아이템이 보존되고 있는 장소.

방 금전 Keep 버튼을 클릭해 취득한 것은 선택한 인물의 체형(shape)이나 피부(skin), 그리고 복장 등의 외양이다. 이렇게 취득한 외양은 Inventory의 My Inventory 폴더 안에 생성되는「Male Outfit 3」(남성) 또는「Female Outfit 3」(여성)이라는 폴더에 넣을 수 있다.


이 외양으로 아바타를 변경하기 전에 현재의 외양이 들어있는 폴더가 Inventory의 My Inventory 폴더 안에 있는 Clothing 폴더에 보존되고 있는지를 확인한다. 만약 보존되어 있지 않은 경우나 현재의 외양을 보존하고 싶은 경우에는 다음의「외양 보존, 수정, 갈아 입기」를 먼저 읽어 보면 된다.
 


현재 외양의 보존에 대해 확인했다면 취득한 외양으로 아바타를 변경한다. 변경은「Male Outfit 3」(또는「Female Outfit 3」) 폴더를 아바타에 드롭하기만 하면 된다. 원래의 외양으로 되돌리려면 Inventory의 My Inventory 폴더 안에 있는 Clothing 폴더내 원모양의 폴더를 아바타에 드롭하면 된다.

Inventory의 Library 폴더(My Inventory 폴더가 아니란 점에 주의) 안에 있는 Clothing 폴더에는 사용자 등록시에 선택이 가능했던 다른 외양이 보존되고 있다. 이러한 외양을 시험해 보는 것이 가능. 또 폴더 안에 있는 체형 및 피부, 그리고 옷만 드롭해주면 개별적으로 변경할 수도 있다.

외양의 보존, 수정, 갈아 입기  
다음은 아바타의 외양을 수정하는 방법.

자신의 아바타상에서 마우스를 오른쪽 클릭(Mac의 경우는 코맨드 키를 누르면서 클릭)하면 둥근 메뉴가 표시된다. 이 메뉴는 파이 메뉴(Pie Menu)라고 불린다. 메뉴에서 Appearance를 클릭하면 외양을 수정하는 모드.
 
Appearance 모드와 Make Outfit 버튼
외양을 수정하기 전에 현재의 외양을 보존하는 것을 추천한다. 외양의 보존에는 Make Outfit 버튼을 클릭한다.
 


Make Outfit 버튼을 클릭하면 Make New Outfit 대화창이 열린다. 이 박스에 있는 Body Parts, Clothes, Attachment로 선택할 수 있는 항목을 클릭해 체크한다. Folder name 필드에 적당한 이름을 입력해 Save 버튼을 누른다.

이것으로 현재의 외양은 Folder name 필드에 입력한 이름의 폴더 안에 보존되었다. 이 폴더는 전항 같이 Inventory의 My Inventory 폴더 안에 있는 Clothing 폴더 안에 생성.
 
Appearance에서는 아바타의 체형이나 얼굴 등을 수정할 수 있다. 만약 수정에 실패해도 보존되어 있는 외양이 들어있는 폴더를 아바타에 드롭하면 원래대로 되돌릴 수 있다.
 
다만 외양의 수정에 대해서는 세컨드 라이프내에서 아바타를 유료 또는 무료로 손에 넣는 것이 가능하기 때문에 처음부터 그다지 정교하게 수정할 필요는 없다.

Make Outfit에는 외양의 보존 이외에도 편리한 사용법이 있다. Make New Outfit 대화창의 Clothes와 Attachment로 선택할 수 있는 항목을 체크해 폴더를 생성하면 현재의 복장이 보존된다.
 


이와 같이 복장의 정보를 폴더 안에 정리해 보존해 두면 갈아 입기가 용이하게 된다. 어느A 복장으로부터 다른 복장에 상황에 따라 갈아 입는 경우, 각각의 복장의 폴더를 아바타에 드롭 하는 것만으로 끝난다.

채팅과 IM
다른 사용자와 대화하는 방법으로서 문자에 의한 채팅이 있다. 채팅을 하려면 화면 왼쪽 하단에 있는 텍스트 필드에 문자를 입력하고 Enter 키를 누른다. 텍스트 필드가 표시 안 된 경우는 Chat 버튼을 클릭.
 
채팅으로 수신된 문자는 화면 왼쪽 하단에 표시된다. 채팅으로 발신한 문자는 주위에 있는 사용자가 읽을 수 있다. 채팅으로 수신된 문자는 잠시 후에 화면 왼쪽 하단에서부터 없어진다. 없어진 문자를 다시 읽고 싶은 경우, 텍스트 필드의 옆에 있는 History 버튼을 클릭. 그러면 대화창이 표시되고 지금까지 수신된 문자를 읽을 수 있다.
 
채팅으로 발신한 문자는 20 m이내에 있는 사용자라면 누구나 읽을 수 있다. 만약 특정 상대만 읽게 하고 싶다면 IM을 사용하는 것이 좋다.

IM을 보내려면 수신 상대의 아바타상에서 파이 메뉴가 표시되도록 한다. 파이 메뉴에서 Send IM을 클릭하면 IM발신용 대화창이 표시된다. 여기에 입력하여 발신한 메시지는 상대의 사용자 인터페이스상에서만 표시된다.

시점 조정과 마우스 룩 모드  
멀리 있는 것을 확대 표시하는 등의 카메라(시점) 컨트롤이 가능하다.
 
확대 표시할 대상물 위에서 Alt 키(Mac의 경우는 Option 키)를 누르면 커서가 화살표에서 확대경으로 변한다. 이대로 마우스를 클릭해 앞으로 움직여주면 확대, 뒤로 움직여주면 대상물이 축소된다.

또 이 상태에서 마우스를 좌우로 움직이면 대상물을 중심으로 시점이 좌우로 선회한다. 예를 들면 자신의 아바타 대상물에서 시점을 좌우로 선회시키면 언제나 등밖에 볼 수 없었던 자신의 아바타 정면을 볼 수 있다.

Alt 키와 Ctrl 키(Mac의 경우는 Option 키와 Control 키)를 누르면서 마우스를 좌우로 움직여도 같은 효과를 얻을 수 있다. 이 상태에서 마우스를 앞뒤로 움직이면 시점을 위아래로 선회시킬 수 있다. 사진에서는 마우스를 뒤로 움직여 시점을 아바타 위로 이동시키고 있다.
 
Alt 키와 Ctrl 키, 그리고 Shift 키(Mac의 경우는 Option 키와 Control 키, 그리고 Shift 키)를 누른 상태에서 마우스를 상하 좌우로 움직이면 시점 또한 상하 좌우로 이동할 수 있다.

왼쪽이 보통 시점 모드. 오른쪽이 마우스 룩 모드

시점을 보통 위치로 되돌리려면 Esc 키를 누르거나 아바타를 걷게 해주면 된다. 보통 시점이란 아바타의 배후에 놓여 있는 3인칭 시점. 그리고 아바타의 시점에 카메라 둔 상태(1인칭 시점)를 마우스 룩 모드(Mouse Look Mode)라고 한다.

마우스 룩 모드로 전환하려면 채팅 기능을 정지한 상태에서 M키를 누른다. 또 스크롤 휠이 첨부된 일부 마우스에서는 휠을 돌려 계속 확대하면 자동으로 바뀐다. 보통 시점 위치로 되돌리려면 Esc 키를 누른다.

사물의 이동  


커서를 이동시키고 싶은 사물(object) 위에 두고 마우스를 누른 채 움직이면 물건을 이동할 수 있다. 이 상태에서 Ctrl 키(Mac의 경우는 Control 키)를 누르고 마우스를 이용하여 물건을 들어 올릴 수도 있다.

비행  
걷는 것보다 빨리 먼 곳으로 이동하고 싶은 경우, 아바타는 날 수 있다. PgUp 키 또는 E키를 누르면 된다. 그리고 PgDn 키 또는 C키를 누르면 비행을 멈춘다. 비행중 방향 전환 방법은 보행중 것과 같다.

텔레포트와 검색 기능
더 멀리 이동하고 싶은 경우는 텔레포트(순간이동). 예를 들면 오리엔테이션 섬에서 세컨드 라이프내에 있는 CNET Networks의 오피스로 이동하는 경 텔레포트를 사용하면 한순간 이동이 가능하다.

왼쪽 상단에 입력 텍스트 필드가 있고 왼쪽 하단에 Teleport 버튼이 있다.

화면 아래에 있는 Search 버튼을 클릭하면 검색 화면이 표시된다. Places 탭을 선택해「CNET」을 입력하고 Search 버튼을 클릭한다. 검색 결과「CNet Networks Office」가 표시된다. 검색 화면 오른쪽 하단의 Teleport 버튼을 클릭하면 CNET Networks의 오피스로 텔레포트.

미니 맵 & 맵
앞서 설명한 Search 기능과 함께 세컨드 라이프내 이동에 필요한 툴로서 미니 맵(Mini-Map)과 맵(Map)이 있다.

화 면 오른쪽 상단에 표시되는 미니 맵은 현재 주위의 모습을 나타낸다. 노란 점이 자신의 아바타. 노란 점을 정점으로 하는 얇은 회색 삼각형은 시야. 녹색 점은 자신의 아바타와 같은 고도에 있는 다른 아바타. 녹색의 T자는 자신의 아바타보다 높은 고도에 있는 아바타이며 녹색의 역T자는 낮은 고도에 있는 아바타를 나타낸다.
 
맵은 미니 맵을 더블 클릭 하든지 화면 아래의 맵 버튼을 클릭하면 표시되는데 미니 맵보다 광범위하게 장소를 표시한다. 맵을 사용해 텔레포트도 가능.
 
Reasion을 입력해 Search 버튼을 클릭하는 부분(위의 동그라미), Location을 입력하는 부분(아래의 동그라미)

예를 들면 세컨드 라이프내에 있는 CNET Networks의 오피스(Millions of Us 227, 30, 38)에 텔레포트 하는 경우, 우선, Region로서 Millions of Us를 입력해 Search 버튼을 클릭한다. Location에 227, 30, 38이라는 좌표를 입력해 Teleport 버튼을 클릭하면 목적의 장소에 텔레포트 할 수 있다.

그 외 조작  
앉기

CNET Networks의 오피스에 있는 의자에 앉으려면 의자상에서 파이 메뉴를 표시시킨다. 메뉴에 있는 Sit Here를 클릭하면 앉을 수 있다. 의자에서 일어서려면 화면 아래에 표시되는 Stand Up버튼을 클릭.

친구 리스트의 추가
세 컨드 라이프안에서 뜻이 맞는 사용자를 찾아내면 그 사용자를 친구 리스트에 추가할 수 있다. 추가하고 싶은 사용자의 아바타상에서 파이 메뉴를 표시시킨다. Add Friend를 클릭하면 친구 리스트의 추가 수락을 얻기 위한 메시지가 상대에게 발신된다. 만약 상대가 추가를 수락하면 친구 리스트에 추가.

친구 리스트를 표시하고 화면 아래의 Friends 버튼을 클릭한다. Friends 대화창에서 사용자명을 클릭한 후 IM버튼을 클릭하면 그 사용자에게 IM을 발신할 수 있다.

경계 표지의 제작
마 음에 드는 장소를 찾아내면 그 장소에 언제라도 돌아올 수 있도록 경계표지를 제작해 둔다. 화면상에 있는 메뉴에서 World>Create Landmark Here를 선택하면 이 장소의 정보가 Inventory의 My Inventory 폴더 안에 있는 Landmarks 폴더에 경계표지로서 보존된다. 다른 장소에서 이 장소로 텔레포트 하려면 Landmark 폴더 안에 있는 경계표지를 더블 클릭 해 표시되는 메시지에서 Teleport 버튼을 클릭.
 
태양 상태도 변경할 수 있다. 태양 상태는 일출부터 일몰까지 시시각각 변한다. 밤이 되어 화면이 어두운 경우, 태양 상태를 강제로 변경할 수 있다. 화면상에 있는 메뉴에서 World>Force Sun을 선택한다. 상태의 종류는 Sunrise(일출), Noon(낮), Sunset(일몰), Midnight(밤).

물건의 입수
물건을 자신의 Inventory에 넣으려면 우선 대상물 위에서 파이 메뉴를 표시시킨다. 금액의 지불(0 린덴달러도 포함)이 필요한 경우에는 Buy, 그 이외의 경우에는 Take가 표시되는데 그것을 클릭한다.

Buy가 표시되었을 경우, 금액의 지불을 확인하는 대화창이 표시된다. 그 대화창에서 Buy 버튼을 클릭하면 금액이 지불되고(0 린덴달러의 경우는 지불이 발생하지 않는다) 물건이 Inventory에 들어간다. Inventory에 새롭게 추가된 것이 어디에 들어갔는지 모르는 경우는 Inventory의 Recent Items 탭을 보면 확인할 수 있다.
 
몇 벌의 양복이 패키지화 된 것 등을 개봉할 경우, 파이 메뉴의 Open을 사용. 만약 패키지를 Inventory에 입수했다면 한 번 그 패키지를 Inventory에서부터 지면에 드래그하여 꺼낸다. 꺼낸 패키지상에서 파이 메뉴를 표시해 Open을 클릭하면 패키지내의 물건이 Inventory에 추가된다. 지면에 꺼낸 패키지는 Take 하여 Inventory에 되돌리는 것도 잊지 말아야 한다.

출처 : ZDNet
728x90
728x90
세컨드 라이프(Second Life)에서는 각 사용자가 자유롭게 목적지를 찾아내고 가고 싶은 장소를 선택할 수 있다. 반대로 말하면 세컨드 라이프를 이용하기 시작한 잠시 후에 어디로 가면 좋을지 어찌할 바를 모르는 일도 있을 수 있다.

그러한 초보 사용자를 위해 공통 통화 린덴 달러를 사용하지 않아도 즐길 수 있는 장소를 선택해보았다.

Search나 Map 대화상자를 사용해 이동할 수 있도록 장소의 이름과 함께 괄호안에는 지역명과 좌표도 나타내었다.




우선은 NAGAYA(Juho 89, 165, 62). 일본인 사용자 대부분이 모이는 장소로서 알려져 있다. 여기서 정보교환을 해보면 어떨까.



The Bazaar(Stillman 148, 87, 23). 아바타(Avatar)에 변화를 주기 위해 옷 등의 무료 아이템을 찾아 보자. 화면에 보이는 입방체 등에 아이템이 패키지화. 이 패키지 위에서 파이 메뉴를 표시시켜(무료 아이템이지만) Buy등을 선택해 얻을 수 있다.



FREEBIE WAREHOUSE(Burns 95, 148, 79). 여기도 무료 아이템이 많이 있다. 여기에서는 총기도 얻을 수 있지만 세컨드 라이프안에서는 특정 장소(다음 설명을 참조)를 제외하고 총기 사용을 금지하고 있다.



Linden Combat Sandbox Rausch(Rausch 101, 107, 101). 여기에서는 총기의 사용이 허가되고 있다. 화면상에는 하트 아이콘과 함께 숫자로 라이프 포인트가 표시. 이 값이 0이 되면 Home으로 지정되어 있는 장소로 텔레포트 돼버린다. 화면의 노란 기둥으로 둘러싸여 있는 장소는 세이프 존(비전투 지역).



SANCTUARY ROCK(Sanctuary Rock 156, 55, 55). 하드록•헤비메탈계 클럽. 텔레포트 후 도착한 장소는 화면과 같다. 화면 중앙에 있는 신호위에서 파이 메뉴를 표시시켜 Teleport를 선택하면•••(다음 설명에 계속)



•••클럽안에 들어갈 수 있다. 무대에서 춤추려면 댄스용 애니메이션을 로딩해야 한다. 화면 안쪽 스테이지 양쪽 측면에 나무모양의 원형 물체가 보이는가. 이 물체상에서 파이 메뉴를 표시시켜 Touch를 클릭하면 로딩된다(엑세스량이 많을 때는 시간이 걸린다).

춤추는 것을 멈추려면 같은 물체상에서 Touch를 재차 클릭한다. 음악이 들리지 않는 경우에는 Edit>Preferences에서 Preferences 창을 열어 Audio & Video 탭의 Play Streaming Music When Available에 체크한다. 화면아래에 Play 버튼이 표시되는데 클릭하면 음악이 들린다.



Bad Girls(Badlands 2, 2, 0). 이쪽은 힙합계 클럽. 텔레포트 후 도착한 장소에서 조금 걸어가면 입구가 있다. 춤추려면 무대 위에 있는「69」라고 쓰여진 부분에서 파이 메뉴를 표시해 Touch를 선택한다. 앞서 설명한 SANCTUARY ROCK도 그렇지만 춤추는 것보다 춤추면서 주변 사용자와 채팅하는 것을 주로 즐긴다.



Nakiska Ski Club(Nakiska 216, 50, 131). 판과 스톡을 입수하려면 텔레포트 후 도착한 장소의 뒷편에 있는「Touch desk to get free skis」라고 쓰여진 보드를 클릭해 화면 오른쪽 위에 표시되는 메시지에서 Keep 버튼을 클릭한다.



Abbotts Aerodrome(Abbotts 160, 152, 71). 텔레포트 후 도착한 장소에 놓여 있는 지도를 사용해 스카이 다이빙용 데크로 이동한다. 데크에서 무료 낙하산을 얻을 수 있다. 입수한 낙하산을 아바타(Avatar)에 장착시켜 스카이 다이빙용 포드(화면 오른쪽 아래에 있는 의자)에 앉아 표시되는 메시지에 따라 조작하고 하늘로 향한다. 특정 고도까지 낙하하면 낙하산이 자동으로 펼쳐진다.



NISSAN(Nissan 26, 131, 27).「자동차 자동 판매기」에서부터「니산 센트라(Nissan Sentra)」를 입수하여 시승해볼 수 있다. 입수하려면 암호화된 패스워드를 자판기에 입력해야 하는데•••(다음 설명에 계속)



•••자판기 정면에 있는 사진의 화장실이 힌트.



Reuters(Reuters 127, 99, 25). 로히터통신(Reuters)의 세컨드 라이프 지국. 건물 입구에 있는「Click here to receive your own free persona news HUD」라고 쓰여진 보드(화면에서는 로히터의 기가 내려진 걸 볼 수 있다)에서 얻을 수 있는 디바이스를 사용하면 로히터가 전달하는 뉴스를 화면상에 표시시킬 수 있다.



디바이스를 화면에 가져와 보았다.



CNET Network Office(Millions of Us 227, 30, 38). 씨넷(CNET)의 세컨드 라이프 오피스. 여기에서는 정기적으로 IT업계의 유명인에 대한 공개 인터뷰를 실시한다. 인터뷰 내용은 씨넷의 인터뷰 기사로서 게재된다. 일반 독자도 오피스를 방문해 질문할 수 있다는 점이 특징.

출처 : ZDNet
728x90

'Information' 카테고리의 다른 글

세컨드 라이프 기본 조작(1)  (0) 2007.03.31
세컨드 라이프 초보일지(Second Life) 뭘하지??  (0) 2007.03.31
office2007 메뉴찾기  (0) 2007.03.31
728x90

세컨드라이프에 접속했을 때, 사람들이 느끼는 당혹감은 가지각색일 것이다.


게임도 아닌 것이.. 미니홈피도 아닌 것이..

그렇다고 정보교환을 위한 Comm의 창구도 아닌 것이..

이전까지 나왔던 컨텐츠의 형태와는 꽤나 다른 독특한 형태의 것이 세컨드 라이프인 것이다.


 그냥.. 세컨드 라이프는 세컨드 라이프다.. 라는 생각으로 느껴야 할 것이다.

새로운 것이기 때문이다. 자신의 틀에 맞출려고 할 때마다 당신의 세컨드 라이프는 작아질 것이다. (사실.. 접속할 때 마다.. 내가 느끼는 부분이다..ㅡㅜ 이걸 내가 계속 해야 하나..하는..)


각설하고, 일단 홈페이지 회원가입을 하고, 접속을 하게 되면 오리엔테이션 아일랜드 일 것이다.

내가 갔던 곳은 네가지 테마로 이뤄진 곳이었는데, 이상하게 다시 찾아 갈려니 은근 어렵다..

원래는 그곳을 수료해야지 본토로 갈 수 있는 패스포트를 준다고 안내를 받았으나,

수료했는지 아닌지는 모르겠다..ㅡㅡ;;

뭐, 일단 돌아다니고 살아가는데 어려움이 없으니 그냥..


기본적인 과정을 수려하고 나면, 여기저기 기웃거리게 된다. Map기능을 사용하기도 하고, Search 기능을 사용하기 한다. 여기서부터 고민이 시작된다.


과연 어디를 갈 것인가????


세컨드라이프는 갈 곳도 많고 할 일도 많다.

하지만 이 '많다'라는 것이 발목을 붙잡는다. 너무 많아서 헤매게 된다. 방황을 하다보면 다시 같은 생각이 들 것이다. (이걸 내가 계속 해야 하나????)

자유도가 높다는 것은 장점이 되지만, 가이드라인조차 없는 환경은 초보자에게 매우 가혹한 환경으로 다가온다. 조금만 더 인내심을 가지고 버텨보자.

Web 2.0 환경의 기본적인 특성상 많은 자유도를 부여하지만, 이 자유도로 부터 혜택 받기 위해서는 상당한 수준의 '능동성'이 있어야 한다는 것을 명심해야 한다.

능동적인 사용을 위해서 '배워야' 할 것이다. 학습만이 살길~!

성공적인 세컨드 라이프를 위해. ^^;;


오리엔테이션을 수료한 초보자들에게 추천할 곳이 몇 군데 있다. (물론 필자도 초보자이다.)


첫번째 장소는 바로 이곳 New Citizen Incoporated(NCI)내의 New Citizen Plaza이다.


http://slurl.com/secondlife/Kuula/57/181/29

위의 링크를 통해 쉽게 접근할 수 있다.



 
 
이곳에서는 물건을 만들 수 있는 Sandbox와 이를 위한 몇가지 강좌와 정보게시판 등이 있고,
또한 Snapshot뒤로 보이듯이 무료로 가질 수 있는 물건들이 진열되어 있다. 필자의 선그라스도 여기서 얻은 것이다. (잘 찾아보면 자전거도 있다.. 멋지지 않은가??? 자전거라니.. )
초반에 의상이라든지 또한 Appearance의 bodypart에 대한 고민을 한번에 해결할 수 있다.
 
초기에 사람들이 많다는 이유로 mature(?)된 동네에 가서 세컨드 라이프에 대한 회의감을 느꼈던 필자로서는 상당히 신선한 느낌을 받았었다. (음.. 아직 희망은 있군.. 정도의)
꼭 한번 가보시길~!
 
* mature에 대해서는 따로 설명을 할 것이다. 음.. 좀 난감한 곳이다.
 
두번째는 Hanja Welcome Area이다.
그냥 지도 상에서 어디를 갈까 보다가, Hangeul이라는 동네가 있길래 가봤는데, 친절한 Brand를 만난 곳이다.
 

 
(사진 속 날개 달고 있는 사람이 Brand Trilam)
 
 
아무래도 시차의 문제로 인해서 꼭 이 사람을 볼 수 있을지는 모르겠지만, Brand는 Second life Guide라는 Tag를 달고 있었다. 관찰해보니 나처럼 헤매는 초보자들에게 이런 저런 설명을 해주는 일을 하고 있었다. (이런 사람이 다 있었군.. 호오~)
가볼 만한 곳의 리스트와 한국 사람에게 소개할 수 있는 뭔가를 달라고 하니 세컨드 라이프 FAQ를 주었다. (notecard의 형태로.. notecard는 그 자체로 저장할 수 있는 문서로 설명이나 안내, 광고 등을 담고 있는 그 용도가 광범위한 text저장형태다.)
 
혹시 관심이 있으신 분은 꼭 brand를 만나보기 바란다. 그가 주는 가볼만한 곳 목록은 꽤 유용한다. (링크를 걸수 없어서 올릴수가 없다..ㅡㅜ)
 
그리고 이 장소는 brand뿐 아니라 꽤 많은 사람들이 어슬렁대는 곳이다. 그리고 대화가 빈번하게 일어난다. 대화를 통해 친구를 만드는 것도 꽤 의미있는 일일 것이다.
 
^^
 
What's your Second Life?

출처 : http://blog.naver.com/cshan96?Redirect=Log&logNo=80035266099
728x90

'Information' 카테고리의 다른 글

세컨드라이프 주요(?)장소  (0) 2007.03.31
office2007 메뉴찾기  (0) 2007.03.31
청약 가점제  (0) 2007.03.30
728x90
“예전에 Word, Excel, PowerPoint 2003에서 편하게 잘 쓰던 메뉴랑 툴바 아이콘들을,

Word, Excel, PowerPoint 2007에서는 대체 어디에 가야 쓸 수 있는 거야?”


아래 링크에서 플래시 애니메이션으로 그 답을 볼 수 있습니다.

2003에서의 메뉴를 마우스로 찍으면 2007에서의 위치를 알려줍니다.



웹에서 바로 보기


Interactive: Word 2003 to Word 2007 command reference guide

http://office.microsoft.com/en-us/word/HA100744321033.aspx


Interactive: Excel 2003 to Excel 2007 command reference guide

http://office.microsoft.com/en-us/excel/HA101491511033.aspx


Interactive: PowerPoint 2003 to PowerPoint 2007 command reference guide

http://office.microsoft.com/en-us/powerpoint/HA101490761033.aspx




로컬로 다운로드하여 보기


Word 2007 Guide: Word 2003 to Word 2007 interactive command reference guide

http://www.microsoft.com/downloads/details.aspx?familyid=9044790B-4E24-4277-B714-66D7B18D0AA1&displaylang=en


Excel 2007 Guide: Excel 2003 to Excel 2007 interactive command reference guide

http://www.microsoft.com/downloads/details.aspx?familyid=89718ABD-2758-47B3-9F90-93788112B985&displaylang=en


PowerPoint 2007 Guide: PowerPoint 2003 to PowerPoint 2007 interactive command reference guide

http://www.microsoft.com/downloads/details.aspx?familyid=BEF41DC3-8E28-4282-82D4-CEC2F416CD40&displaylang=en
728x90

'Information' 카테고리의 다른 글

세컨드 라이프 초보일지(Second Life) 뭘하지??  (0) 2007.03.31
청약 가점제  (0) 2007.03.30
border-collapse  (0) 2007.03.27
728x90
한국일보 2007-03-29 18:06:00

무주택 기간 + 가족 수 + 청약 가입기간 30~ 35점이면 인기지역外 당첨 가능

청약가점제 계산법은 간단하다. 무주택기간, 부양가족수, 청약통장 가입기간 등 3가지 가점항목을 차례로 더하면 내 점수를 알 수 있다. 각 항목마다 최고치를 얻으면 84점 만점이 된다.

무주택기간은 1년 미만을 최하 2점으로 계산, 1년이 지날 때마다 2점씩을 추가한다. 15년 무주택자는 최고 32점을 얻는다.

부 양가족에 따른 가점은 최고 35점. 부양가족이 없는 경우를 5점으로 하고, 1명씩 늘어날 때마다 5점이 추가된다. 부양가족은 주민등록등본에 등재된 직계 존속(부모 조부모) 및 비속(자녀 손자)에 한하며, 존속은 3년 이상 계속 부양해야 한다.

청약가입기간은 6개월 미만을 1점, 6개월~1년미만 2점으로 하고 이후 1년이 늘어날 때마다 1점씩 가점된다. 최고 17점까지 받을 수 있다.

한 번도 내집을 가져본 적이 없는 A(45)씨의 예를 들어보자. 그는 부모님을 모시고 두 자녀와 함께 지내고 있으며, 청약통장 가입 8년이 지났다. A씨는 ▦무주택기간 15년 이상으로 32점 ▦부양가족수 4명으로 25점 ▦청약통장 가입기간 10점 등 총 67점을 얻게 된다. 꽤 높은 점수다.

B(36)씨는 6년 무주택자로, 두 자녀와 함께 거주하고, 6년 전 청약통장에 가입했다. B씨는 무주택(14점), 부양가족(15점), 청약통장(8점)을 더해 37점이 된다.

6개월 전 결혼한 신혼부부 C(29)씨는 아이가 없는 무주택자로, 청약통장에 가입한지 3개월이 지났다. 이 경우 각 항목에서 모두 최하점수를 얻어 8점에 그쳤다. 그만큼 이번 제도는 신혼부부에게 불리하게 되어 있는 것이다.

한 편 두 자녀와 살고 있는 D(33)씨는 청약통장 가입기간이 3년이 지나 20점을 획득했지만 시가 1억원 이상짜리 집을 한 채 보유하고 있어, 25.7평 이하 아파트 1순위 자격을 얻을 수 없다. D씨는 대신 25.7평 초과 아파트나 추첨제 대상 아파트에는 1순위 자격을 얻게 된다.

주택산업연구원 장성수 선임연구위원은“청약 시뮬레이션 결과 30~35점을 확보한 무주택자라면 광교, 송파 등 인기지역을 제외한 수도권 대부분 아파트 청약에서 당첨이 가능 할 것”으로 내다봤다.
728x90

'Information' 카테고리의 다른 글

office2007 메뉴찾기  (0) 2007.03.31
border-collapse  (0) 2007.03.27
입력상자 - 한/영 고정사용  (0) 2007.03.26
728x90

border-collapse란 테이블 또는 셀의 테두리선 표시방법을 지정하는 스타일시트입니다.

 
아래 두가지의 옵션이 있습니다.


    1. border-collapse:collapse

       서로 이웃하는 테이블이나 셀의 테두리션을 겹쳐서 표현 합니다.


    2. border-collapse:separate

       서로 이웃하는 테이블이나 셀의 테두리션을 분리시켜 표현 합니다.


( 이스타일을 사용하지 않으면 모든 테이블이나 셀의 경계선은 분리되어 나오지요 기본값이라고 합니다 )

 
border-collapse:collapse로 지정된 경우 테두리가 겹쳤을때 나타나는 순서는 다음과 같습니다.


 
   1. border-style:hidden이 지정된것이 가장 우선 합니다.


   2. border-style:non이 지정된 것은 우선순위가 가장 낮습니다.


   3. hidden과 non이외의 값이 지정되어 있는 경우는 폭이 두꺼운 테두리선이 우선순위.


   4. 굵기가 같은 경우 테두리선의 종류에 따라 아래와 같은 우선 순위를 가지게 됩니다.


       double > solid > dashed > dotted > ridge > autoset > groove > inset


   5. 굵기가 같고 테두리종류가 동일, 색상(border-color) 만 다른경우 아래의 순서로 우선 순위.


      th > td > tr > thead.tbody.tfoot > col > colgroup > table


출처 : 'border-collapse' - 네이버 지식iN

728x90

'Information' 카테고리의 다른 글

청약 가점제  (0) 2007.03.30
입력상자 - 한/영 고정사용  (0) 2007.03.26
텍스트박스 클릭시 기본값 없애기  (0) 2007.03.26
728x90

style = "ime-mode:auto"           (자동변경)  (한/영 전환 가능)
style = "ime-mode:active"          (한글 모드)  (한/영 전환 가능)
style = "ime-mode:inactive"       (영문 모드)  (오직 영문)
style = "ime-mode:disabled"      (영문 모드)  (한/영 전환 가능)
style = "ime-mode:deactivated" (한글 모드)  (한/영 전환 가능)


<input type="text" name="han" style="width:115px;ime-mode:active;" >

출처 : Tong - nom3203님의 Script & Etc통

728x90

'Information' 카테고리의 다른 글

border-collapse  (0) 2007.03.27
텍스트박스 클릭시 기본값 없애기  (0) 2007.03.26
javascript - 원하는 부분만 프린트하기  (0) 2007.03.26
728x90
input type="text" value="id" onFocus="javascript:this.value=''"

출처 : Tong - nom3203님의 Script & Etc통

728x90

'Information' 카테고리의 다른 글

입력상자 - 한/영 고정사용  (0) 2007.03.26
javascript - 원하는 부분만 프린트하기  (0) 2007.03.26
체크박스 전체선택  (0) 2007.03.26
728x90

원하는 부분만 프린트하기

<html> 
<head> 
    <title> 원하는 부분만 인쇄하기 </title>
    <script language="javascript">
        var initBody

        function beforePrint() {
            initBody = document.body.innerHTML; 
            document.body.innerHTML = idPrint.innerHTML;
        } 
        function afterPrint() {
            document.body.innerHTML = initBody;
        } 
        function printArea() { 
            window.print(); 
        } 
        window.onbeforeprint = beforePrint; 
        window.onafterprint = afterPrint; 
    </script> 
</head> 
<body> 
    기본 문서 내용...<br> . <br> . <br> . <br>
    인쇄할 때 제외될 영역 입니다. <br><br>

    <div id="idPrint"> 이 부분만 인쇄를 하고 싶습니다. <br> </div> 
    <input type="button" value="부분 출력하기" onclick="printArea();"> 
</body> 
</html>



728x90

'Information' 카테고리의 다른 글

텍스트박스 클릭시 기본값 없애기  (0) 2007.03.26
체크박스 전체선택  (0) 2007.03.26
style에서 display, visibility의 차이점..  (0) 2007.03.25
728x90

function checkAll(chk) {
  var chks = document.all("chk");
  var no = 0;
  if (chks != null) no = chks.length;

  if (no > 1) {
   for (var i=0;i<no;i++) {
    chks[i].checked = chk.checked;
   }
  } else if (no != 0) {
   chks.checked = chk.checked;
  }
 }

<td width="30" class="td_title"><b><input type='checkbox' name='chk_all' onClick='javascript:checkAll(this)'></b></td>

출처 : Tong - nom3203님의 Script & Etc통

728x90

'Information' 카테고리의 다른 글

javascript - 원하는 부분만 프린트하기  (0) 2007.03.26
style에서 display, visibility의 차이점..  (0) 2007.03.25
CD 케이스접기-A4  (0) 2007.03.25
728x90

<HTML>
<HEAD><TITLE>Visibility Demo</TITLE>
<STYLE>
P {font-weight:bold}
</STYLE>
<SCRIPT language=jscript>
<!--
function change_visibility() {
 if (MyDiv1.style.visibility == "hidden")
 {
  MyDiv1.style.visibility = "visible";
 }
 else
 {
  MyDiv1.style.visibility = "hidden";
 }
}

function change_display() {

 if (MyDiv2.style.display == "")
 {
  MyDiv2.style.display = "none";
 }
 else
 {
  MyDiv2.style.display= "";
 }
}

-->
</SCRIPT>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-1">
<META NAME="AUTHOR" CONTENT="InetSDK">
<META NAME="MS.LOCALE" CONTENT="EN-US">
<META NAME="ROBOTS" CONTENT="noindex">

<!-- SAMPLE_STYLE_START -->
<LINK REL="stylesheet" HREF="../../../../../workshop/basicsdkie4.css" TYPE="text/css">
<!-- SAMPLE_STYLE_END -->
</HEAD>
<!--TOOLBAR_START-->
<!--TOOLBAR_EXEMPT-->
<!--TOOLBAR_END-->

<BODY TOPMARGIN=0 LEFTMARGIN=0 BGPROPERTIES="FIXED" BGCOLOR="#FFFFFF" LINK="#000000" VLINK="#808080" ALINK="#000000">
<BLOCKQUOTE CLASS="body">

<P>Click the Button to change the visibility of the DIV</P>
<P><DIV ID="MyDiv1" STYLE="position:relative;top:10;left:20;height:100;width:100;
  visibility:hidden;background-color:blue"></DIV></P>

<P>A paragraph below the DIV object</P>
<P><BUTTON onclick="change_visibility()" style="background-color:blue;color:white">
Change Visibility
</BUTTON></P>
<HR>

<P>Click the Button to change the display of the DIV</P>
<P><DIV ID="MyDiv2" STYLE="position:relative;top:10;left:20;height:100;width:100;
  display:none;background-color:green"></DIV></P>
 
<P>A paragraph below the DIV object</P>
<P><BUTTON onclick="change_display()" style="background-color:green;color:white">
Change Display
</BUTTON></P>

<!-- START_PAGE_FOOTER -->
<BR><BR><BR>
&copy; <A CLASS="clsIncCpyRt" HREF="http://msdn.microsoft.com/isapi/gomscom.asp?target=/misc/cpyright.htm" TARGET="_top">2000 Microsoft Corporation. All rights reserved. Terms of use</A>.
<!-- END_PAGE_FOOTER -->
</BLOCKQUOTE>
</BODY>
</HTML>


MSDN을 찾아보니..

IHTMLStyle::display = none reserves no space for the object on the screen. 처럼 공간을 차지하지 않는 상태로 Display되고, IHTMLStyle::visibility는 공간을 차지한 채로 출력하는 차이점이 있더군요..

728x90

'Information' 카테고리의 다른 글

체크박스 전체선택  (0) 2007.03.26
CD 케이스접기-A4  (0) 2007.03.25
DATETIME 포맷 변환하기  (0) 2007.03.22
728x90
사용자 삽입 이미지

사용자 삽입 이미지
 
PDF 다운 받기
 
기호에 맞게 선택해서 받으시고 프린트 하여 종이 접는 방법과 같이 접으시면 됩니다.
 
 
 


출처 : http://blog.naver.com/hanimail1?Redirect=Log&logNo=150002683562
728x90

'Information' 카테고리의 다른 글

style에서 display, visibility의 차이점..  (0) 2007.03.25
DATETIME 포맷 변환하기  (0) 2007.03.22
웹2.0 관련 기사  (0) 2007.03.21
728x90

DECLARE @dt AS   DATETIME
SET @dt = '12/28/2006 16:32:14'

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


예제1) CONVERT 이용한 기본 포맷 보기

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

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

SELECT CONVERT(NVARCHAR, @dt, 100)

핑크 부분만 바꿔준 결과 보자.


100 --- Dec 28 2006  4:32PM
101 --- 12/28/2006

102 --- 2006.12.28

103 --- 28/12/2006

104 --- 28.12.2006

105 --- 28-12-2006

106 --- 28 Dec 2006

107 --- Dec 28, 2006

108 --- 16:32:14

109 --- Dec 28 2006  4:32:14:000PM
110 --- 12-28-2006
111 --- 2006/12/28
112 --- 20061228
113 --- 28 Dec 2006 16:32:14:000
114 --- 16:32:14:000

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


예제2) DATEPART 이용한 기본 포맷 보기

DATEPART ( datepart , date )

* INT 값으로 결과가 나타난다.

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

SELECT DATEPART(YEAR, @dt)

핑크 부분만 바꿔준 결과 보자.


YEAR (YY, YYYY) --- 2006

QUARTER (Q) --- 4 (분기)
MONTH (M, MM) --- 12

DAYOFYEAR (DY) --- 362 (일년중에 몇번째 날인지 알아볼때)

WEEK (WK, WW) --- 52 (몇번째 주인지 알아볼때)

DAY (D, DD)--- 28

WEEKDAY (DW) --- 5 (일주일에서 몇번째 날인지 알아볼때, 월요일 = 1, 화요일 = 2, ..., 일요일 = 7)

HOUR (HH) --- 16

MINUTE (MI, N)--- 32

SECOND (S, SS) --- 14

MILLISECOND (MS) --- 0


* ()안에는 대체할수 있는 약어들.

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


예제3) LEFT / RIGHT / SUBSTRING 이용해서 나한테 필요한 부분만 콕 찝어 보기

LEFT / RIGHT / SUBSTRING 은 스트링 펑션이니까 예제 1 결과물을 이용하면 딱이겠죠. ^^

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

SELECT CONVERT(NVARCHAR, @dt, 108)
결과)16:32:14


SELECT LEFT(CONVERT(NVARCHAR, @dt, 108), 5)  '왼쪽에서부터 5번째까지 보여주기.

결과)16:32



SELECT CONVERT(NVARCHAR, @dt, 100)

결과)Dec 31 2006  4:32PM


SELECT RIGHT(CONVERT(NVARCHAR, @dt, 100), 2)  '오른쪽에서부터 2번째까지 보여주기.

결과)PM


SELECT CONVERT(NVARCHAR, @dt, 106)

결과)28 Dec 2006

SELECT SUBSTRING(CONVERT(NVARCHAR, @dt, 106), 4, 3)  '왼쪽에서 4번째 글자부터 3글자 보여주기.

결과)Dec

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

728x90

'Information' 카테고리의 다른 글

CD 케이스접기-A4  (0) 2007.03.25
웹2.0 관련 기사  (0) 2007.03.21
Ajax Prototype.js - 프로토타입 완전분석  (0) 2007.03.20
728x90
728x90

'Information' 카테고리의 다른 글

DATETIME 포맷 변환하기  (0) 2007.03.22
Ajax Prototype.js - 프로토타입 완전분석  (0) 2007.03.20
구글어스 플래시 버젼  (0) 2007.03.16
728x90
Prototype.js의 구석구석을 파해쳐 풀이한 도서가 4월에 출간될 예정이다. 영광스럽게도 본 도서의 베타리뷰를 맡아 진행하면서 느낀점을 간략하게 리뷰해 본다.

김영보 저자의 "Ajax Prototype.js - 프로토타입 완전분석"은 Prototype.js 프레임웍을 이해하는 것에 초점을 맞추고 있다. 코드 한줄 한줄을 낱낱히 분석하고 이해하는 과정을 적나라하게 담았다.(심지어는 정규식의 풀이과정까지) 이러한 분석은 자바스크립트의 기초를 다지고 나아가서는 개개의 작동방식을 이해함으로써 유기적으로 연결되어있는 큰 흐름을 볼수있게 한다. Prototype.js 프레임웍을 선호하거나 처음 시작하려는 이들에게 좋은 참고서이자 길잡이가 될 것이다.




봐야할 책이 또 하나 생겼다. 이거 제대로 보지도 못하고 쌓아만 둔 책이 몇권인가...OTL;;


출처 : http://firejune.com/1055
728x90

'Information' 카테고리의 다른 글

웹2.0 관련 기사  (0) 2007.03.21
구글어스 플래시 버젼  (0) 2007.03.16
체크박스 전부다 선택하기  (0) 2007.03.16
728x90


멋지다..+_+
728x90

'Etc' 카테고리의 다른 글

web2.0 개념  (0) 2007.04.11
최선을 다해서...  (0) 2006.07.08
결국 게시판 실명제는 도입되는가..  (0) 2006.05.20
728x90
속도 빠르고, 이미지 깨끗하고 가볍다는게 너무 마음에 들어!! +_+
http://www.flashearth.com/

사용자 삽입 이미지

728x90
728x90

//체크박스 전부다 선택하기

  function allcheck() {
   var checkbox = event.srcElement;  // allcheck()란 이벤트 핸들러에게 이벤트를 발생시킨 객체를 checkbox안에 담는다.
   if( checkbox.checked ) {              // 만약 호출한 inputBox에 checked 면  
    allBoxCheck(true);                      // 모든박스 inputBox를 체크한다. allBoxCheck()함수는 아래에 정의
   } else {
    allBoxCheck(false);                    //체크가 안 되어 있으면 모두 체크 해제.,//끝!!
   }
   }
  
  function allBoxCheck(val) {                      //위의 allcheck()함수에서 사용한다.
   var allInput = document.all.tags("INPUT"); //문서의 모든 태그중 "INPUT"이라고 한거를 다 allInput 에 담는다.
   for( var i=0 ; i<allInput.length ; i++ ) {       //그 담은 길이 만큼 돌아~   돌~리고~~ 돌리~고~
    var input = allInput[i];                           //그 각각의 allInput의[i]번째를 input에 담아
    if( input.type == "checkbox" ) {              //그 input의 type이 checkbox인지를 비교한다
     input.checked = val;                            //checkBox가 맞은면 checked에 val을 대입한다.
    }                                                       //val은 allcheck()에서 호출시allBoxCheck(true & false)지정!!      //
   }
  }


  // 큰제목 전체선택 아래 소제목 전체 선택하기
  function childCheck() {
   var input = event.srcElement;    //현재childCheck()함수를 부른 이벤트를 input 에 담는다.값은alert(event.srcElement);              //[object]가 찍힌다.
   var checked = input.checked    //input박스가 체크되어 있으면 true 아니면 false반환한다.

alert(input.checked);                  // true or false 가 찍힌다.
   var td = input.parentElement;    // input의 부모(input을 감싼 태그를 말한다)는 td
   var tr = td.parentElement;         // td의 부모(위 td 를 감싼 태그를 말한다)는 tr
   var index = tr.rowIndex;           // 그래서 그 tr의 로우 (몇번째 행인지)를 찾는다.

alert(tr.rowIndex);                      // 해당 로우가 찍힌다.
   if( index < 3 ) return;               // 나는 3번째 로우 부터 선택 하므로 3번째 이전의 로우는 리턴
   var checkTable = document.all.checkTable;                           //모든 checkTable을 담는다[]
   var targetTable = checkTable[index-3];                                 //거기서3번째를 찾아 담는다
   var targetInput = targetTable.getElementsByTagName("INPUT");//3번째에서"INPUT"을 찾아 담는다.
   for( var i=0 ; i<targetInput.length ; i++ ) {    //targetInput 배열에 담긴 모든 input을 하나씩 뺀다.
    var input = targetInput[i];                        //targetInput의[i]번째 input을 input에 담고  
    if( input.type == "checkbox" ) {                //그 input 의 type이 checkbox인지를 비교한다.
     input.checked = checked;                     //input.checked 를 checked로 설정...//  끝!!
    }
   }
  }


childCheck()는 각 소 재목의 테이블 마다 동일한 ID를 입력해야 한다

<table id="checkTable" >

<input type="checkbox"  onclick="childCheck()" >

728x90

'Information' 카테고리의 다른 글

구글어스 플래시 버젼  (0) 2007.03.16
CSS-Based Navigation Menus: Modern Solutions  (0) 2007.03.15
비스타 하드웨어 ‘체크포인트’  (0) 2007.03.13
728x90

Navigation menus have to be intuitive, precise and easy-to-use. One simple, basic principle, which is common for all kinds of nav bars you would ever want to use for your projects. In fact, navigation menu is probably the most important element in web design: after all, it is being used more often than any other element on a given page. Therefore it’s important to make sure that your visitors will find they way around the site structure - however complex the latter might be.

So how do designers cope with a challenging task to create an attractive and usable menu? Which results can be achieved? OK, that’s a tough one. Let’s take a look around.

Below you’ll find 53 beautiful and user-friendly Navigation Menus and solutions web-designers came up with using basic CSS styling.

PS: Over the last few months we’ve reviewed CSS-Based Techniques, CSS-Based Forms and CSS-Based Tables and CSS-Based Footers (yes, some of these techniques use not only CSS, but also JavaScript and PHP). You’ll find even more CSS-related articles in our CSS Section.

PSS: We have included some DHTML- and JavaScript-based navigation menus in this list by mistake. Sorry for inconvenience.

CSS-Based Navigation Menus

1. Change.org

Navigation Menus - Change.org

2. N.Design Studio | Design & Blog

Navigation Menus - N.Design Studio | Design & Blog

3. Good Creative - Web and Graphic Design

Navigation Menus - Good Creative - Web and Graphic Design

4. MacRabbit - Welcome

Navigation Menus - MacRabbit - Welcome

5. Joyent: Introducing Joyent

Navigation Menus - Joyent: Introducing Joyent

6. CSS Vault » The Web’s CSS Site

Navigation Menus - CSS Vault » The Web's CSS Site

7. notiam.com

Navigation Menus - notiam.com

8. Jamie Huskisson: Full time UK PHP freelance developer

Navigation Menus - Jamie Huskisson: Full time UK PHP freelance developer

9. Web design, development and consultancy from Ottawa, Canada - Snook.ca

Navigation Menus - Web design, development and consultancy from Ottawa, Canada - Snook.ca

10. BREAKER DESIGN

Navigation Menus - BREAKER DESIGN

11. Jen Gordon

Navigation Menus - Jen Gordon

12. Tulumarka

Navigation Menus - Tulumarka

13. Ars Technica

Navigation Menus - Ars Technica

14. CSS Beauty | CSS Design, News, Jobs, Community, Web Standards

Navigation Menus - CSS Beauty | CSS Design, News, Jobs, Community, Web Standards

15. Digg / Technology

Navigation Menus - Digg / Technology

16. Triple Crown Customer Service

Navigation Menus - Triple Crown Customer Service

17. microformats

Navigation Menus - microformats

18. Badboy.ro

Navigation Menus - Badboy.ro

19. GetMenus.ca

Navigation Menus - GetMenus.ca

20. Wedding Extravaganza 2007 - A Perfect Marriage

Navigation Menus - Wedding Extravaganza 2007 - A Perfect Marriage

21. Job Pile - Aggregating the Best Job Boards on the Web - Artypapers

Navigation Menus - Job Pile - Aggregating the Best Job Boards on the Web - Artypapers

22. Norman Morrow & Co - Estate Agents In Crumlin, Northern Ireland

Navigation Menus - Norman Morrow & Co - Estate Agents In Crumlin, Northern Ireland

23. Listal - List the stuff you love! Movies, TV, music, games and books

Navigation Menus - Listal - List the stuff you love! Movies, TV, music, games and books

24. folietto

Navigation Menus - folietto

25. Tony Yoo - Online Showcase (version2)

Navigation Menus - Tony Yoo - Online Showcase (version2)

26. Digital Web Magazine

Navigation Menus - Digital Web Magazine

27. Denbighshire Supporting Business

Navigation Menus - Denbighshire Supporting Business | Denbighshire, Supporting, Business

28. Pulmad, peod, lillesalong… - Annilill Peoteenindus

Navigation Menus - Pulmad, peod, lillesalong... - Annilill Peoteenindus

29. ExpressionEngine - Publish Your Universe!

Navigation Menus - ExpressionEngine - Publish Your Universe!

30. coda.coza

Navigation Menus - coda.coza

31. purevolume™ | We’re Listening To You

Navigation Menus - purevolume™ | We're Listening To You

32. EGOLOUNGE *Büro für digitales Design

Navigation Menus - EGOLOUNGE *Büro für digitales Design

33. Merix - Internet Technologies

Navigation Menus - Merix - Internet Technologies

34. Bartelme Design | Showroom

Navigation Menus - Bartelme Design | Showroom

35. Luis Alarcón, Blog

Navigation Menus - Luis Alarcón, Blog

36. CSS3 . info - Everything you need to know about CSS3

Navigation Menus - CSS3 . info - Everything you need to know about CSS3

37. nclud™ a creative web design agency

Navigation Menus - nclud™ a creative web design agency

38. Convan Design - Howdy

Navigation Menus - Convan Design - Howdy

39. ExpressionEngine - Publish Your Universe!

Navigation Menus - ExpressionEngine - Publish Your Universe!

40. Silverpoint: Web Solutions for Schools

Navigation Menus - Silverpoint: Web Solutions for Schools

41. Jambor-ee - Celebrating ExpressionEngine

Navigation Menus - Jambor-ee - Celebrating ExpressionEngine

42. far from fearless

Navigation Menus - far from fearless

43. Scribd - Home

Navigation Menus - Scribd - Home

44. Erika Greco - Blog

Navigation Menus - Erika Greco - Blog

45. Photoshop Tutorials and Articles - Tutorial Blog

Navigation Menus - Photoshop Tutorials and Articles - Tutorial Blog

46. Welcome to Buzz — Buzz Recruitment

Navigation Menus - Welcome to Buzz — Buzz Recruitment

47. Michal Zapoměl - český vlasový design | czech hair design

Navigation Menus - Michal Zapoměl - český vlasový design | czech hair design - Úvodní stránka

48. Onlinecenter Upload

Navigation Menus - Onlinecenter Upload

49. M122Arts Mixed Media and Technology // oo*o

Navigation Menus - M122Arts Mixed Media and Technology // oo*o

50. KazanShops.Ru

Navigation Menus - Магазины Казани - казанский сайт для тех, кто покупает - www.KazanShops.Ru

51. Stone inc. - Aménagements Paysager, Pavés.

Navigation Menus - Stone inc. - Aménagements Paysager, Pavés, Murets, Tourbe et plus!

52. Pixellogo

Navigation Menus - Pixellogo

53. AUSMAG - das Australien Work & Travel Portal

Navigation Menus - AUSMAG - das Australien Work & Travel Portal - Arbeiten und Reisen in Australien

728x90

'Information' 카테고리의 다른 글

체크박스 전부다 선택하기  (0) 2007.03.16
비스타 하드웨어 ‘체크포인트’  (0) 2007.03.13
HTML 특수문자코드  (0) 2007.03.04

+ Recent posts