요즘 네티즌들과 블로거들 사이에서 네이버를 게이버라고 부르는 등, 네이버를 비난하는 목소리가 큽니다. 이유인즉, 네이버는 검색엔진 본연의 기능에 충실하지 못하고 DB(데이터베이스)를 가둬두며, 자사DB를 우선순위로 노출시키기 때문이라고 합니다.

사용자 삽입 이미지

타 검색엔진으로부터 자사의 DB를 검색되지 않게 한 네이버의 폐쇄정책이 무조건적으로 비판할만한 것일까요? 네이버를 구글과 비교한다면 네이버는 비난받아 마땅한 존재로 보입니다. 하지만 애플과 마이크로소프트에 비교해 본다면 네이버의 폐쇄정책은 살아남기위한 몸부림이라는것을 알수있습니다.

마이크로소프트와 애플은 세계에서 인정하는 최고의 소프트웨어회사입니다. 마이크로소프트의 경우 윈도우를 설치할경우 자사소프트웨어(MS오피스, 미디어플레이어 등)를 상당부분 끼워넣기함으로써 상당부분 효과를 거두었습니다. 이와같은 결과로 마이크로소프트사의 MS오피스 같은 많은 소프트웨어가 널리 사용되고있습니다. 애플사의 대표 히트상품인 아이팟의 경우도 이와같습니다. 아이팟을 구매한후 mp3를 다운받기 위해서는 아이튠즈라는 동기화프로그램을 이용해야만 하는데, 동기화를 시키면 애플 아이팟에서만 작동가능한 mp3파일로 변환됩니다.

세계최고의 소프트웨어회사들도 자신의 영역을 늘려가기위해 자사 제품에 다른 자사 제품을 끼워넣기하는일이 빈번합니다. 이런 정책은 살아남기위한 정책으로도 볼수있습니다. 자신이 개척한 땅을 남에게 빼앗기는 일이 없도록 말입니다.

네 이버도 자사에 많은 DB를 유치하기위해 상당한 투자를 하였고, 그에 따라 모아진 DB를 관리하기위하여 적절한 폐쇄정책을 취하는것입니다. 네이버와 구글은 엄연히 다릅니다. 구글은 사이트와 블로그 등에서 모아진 DB를 검색엔진으로 보여주는것이고, 네이버는 자사에 DB를 유치한것입니다. 자신이 제작한 컨텐츠를 남이 퍼가면 기분이 좋지 않듯이 네이버도 자신의 회사 내에 유치된 DB를 다른 검색엔진에게 뺴앗기기는 싫을것입니다. 왜냐하면 자사의 DB가 다른 검색엔진들의 밥벌이 수단이 되면 곤란하게 되니 말이죠.

구글이 세계 최고의 검색엔진이라는 이유만으로 국내의 검색엔진들도 이를 따라야한다는 법은 없습니다. 나는 오히려 구글을 따라하는 검색엔진들보다는 새로운 기술을 개발하여 사용자를 끌어모으는 검색엔진에 더 호감이 갑니다.

사용자 삽입 이미지

다음의 신지식과 엠파스의 엠파스지식도 다른 검색사이트에서는 검색되지 않습니다. 모두들 자사DB를 보호하고 있는것입니다. 사정이 이러한데 네이버가 지식IN 등의 DB를 가둬논다는 이유로 비난받아야할 이유는 더더욱 없습니다.
이력서에 블로그 주소를 올려 볼 생각을 해본 사람은 여럿 있을 것이다. 과연 기업의 인사담당자가 보았을때 블로깅을 하는 스토리텔러를 어떻게 생각할 것인가? 어떤 인사담당자는 그저 입만 살은 사람으로 치부해 버릴수도 있다. 또 다른 인사담당자는 이런 생각,이런 아이디어가 신선하게 느껴질 수도 있을 것이다. 결론부터 말해두자면 인사담당자가 신입사원을 채용할 때 그가 만약 블로그를 운영하는 블로거라면 한번 쯤 자신의 회사 이미지와 다른 종류의 발전가능성에 대해서 생각해 볼 가치가 있다고 말해두고 싶다.


"블로거는 아이디어 뱅크다."
블로거는 글을 쓴다. 글을 쓰기 위해서는 생각이 필요하다. 또, 그 생각을 글로 쓰기 위한 특별한 소재가 필요하다.기업에 있어서 이러한 재주를 가진 사람은 특별하다고 생각한다. 글을 쓰기 위해 특별한 주제를 생각하고 또 가다듬고 하는 노력은 누가 시켜서 하는 것이 아니다.즉 스스로 무언가 생각하고 아이디어를 개발하는 블로거는 기업의 인사담당자의 입장에서 볼 때 매우 발전 가능성이 있다.


"블로거는 커뮤니케이션의 정점에 있다."
기업은 조직이다. 조직은 얼마나 서로간의 의사소통이 원활하게 이루어지느냐에 따라 기업내의 가치를 매길 수 있다.상품의 개발에서 부터 홍보, 다른 부서와의 유기적인 의사소통은 원샷,원킬의 효과를 거들 수 있다. 블로거는 커뮤니케이션의 정점에 있다. 웹2.0의 대표 선발주자인 블로거는 기업내의 커뮤니케이션 2.0의 시대를 열 수 있다.


"블로거는 특히 기획,홍보 임무에 적당하다."
이제 PR은 일방적인 PR에서 양방향 PR로 바뀌었다. 블로거는 고객의 입장에서 생각할 수 있는 안목을 가졌다. 만약 블로거의 생각과 입을 막거나 제한하지 않는다면 미리 고객의 입장을 체험할 수 있는 좋은 기회가 될 수 있다. 그것은 곧 기업이 상품 기획안을 작성할때 중요한 데이터가 될 수 있다.


"블로그가 기업에 어떤 이익을 줄 수 있는지 잘 판단 할 수 있는 계기."
만약 기업 방침이 블로그가 갖고 있는 장점 중 몇 가지와 일맥상통 한다면 기업의 경영진은 이를 심사숙고 해 볼 필요가 있다. 블로그의 잘 알려진 장점이라 함은 입소문 마켓팅, 양방향 교류, 언제 어디서나 고객의 목소리를 들을 수 있는 실시간 커뮤니티, 솔직하고 진솔한 분위기라는데 있다. 스토리텔러를 채용하여 이러한 기업의 장점을 잘 부곽시킬 수 있다면 그리하여 단 1%의 고객신뢰도를 높일 수 있다면 투자 해 볼만한 가치가 있다고 판단한다.


"고비용의 PR효과 보다 적은 비용이지만 더 많은 긍정적인 요소를 갖고 있다."
유능한 스토리텔러의 영입으로 갖을 수 있는 장점이라면 바로 비용절감에 있다. 물론 블로그가 입소문을 통해 알려지기 위해서는 블로그의 내용도 중요하지만 무엇인가 사람들의 안목을 사로잡을 수 있는 컨텐츠가 필요하다. 하지만 대부분의 기업은 좋은 컨텐츠를 갖고 있지만 확실하게 어필할 수 있는 마켓팅 수단을 찾지 못하고 있다. 대게 방송매체를 통한 마켓팅을 많이 활용하는데 이는 확실하게 눈으로 볼 수 있는 도구가 되겠지만 많은 비용이 든다. 그러나 유능한 스토리텔러 한 사람은 이런 거품들을 걷어치우고 당당하게 소비자에게 다가갈 수 있는 센스를 발휘할 수 있을 것이다. 바로 블로깅을 통해서 말이다.


"블로거가 기업과 고객을 이어주는 연결 지점이 될 수 있다."
기업이 고객의 의견을 듣고 싶다면 편향 적인 웹사이트의 자동화된 이메일 수단 보다, 살아있고 반응하는 블로그의 댓글 시스템을 이용하는 것이 가장 좋다. 고객은 자신의 의견이 댓글을 통해서 보여지고 있고 또, 기업의 핵심인물이 이 댓글을 본다는 것을 알게 된다면 때론 자극적일 수 있겠지만 확실한 의견을 들을 수 있다. 기업 스스로 비용을 절감하면서 고객으로부터 아이디어를 들을 수 있는 절호의 기회가 되는 셈이다. 물론 고객이 생각하기에 기업이 고객의 말에 귀를 기울이고 있다는 것을 확신할 때의 일이다. 물론 그러기 위해선 블로거가 필요하다.


마치며..

물론 어느 기업이나 블로그가 필요하다는 것은 아니다. 그러나 기업 스스로 생각해 보았을때 블로깅을 하는 것이 기업으로서 당장 이익은 없지만 그렇다고 손해 볼 것도 없다면, 블로그는 유익함으로 남을 것이다. 만약 블로깅이 기업에 손해를 끼칠 영향이 크다면 다시 생각해 볼 의견이지만, 그렇지 않다면 기업마켓팅의 새로운 패러다임인 블로그에 한번 도전해 보는 것도 괜찮은 생각이다.

애초부터 의식적으로 수정과 유지보수를 고려한 것이라면 좋았을 것이지만, 딱히 그런것은 아니고 단지 반복적인 프로세스를 통해서 경험적으로 형성된 결과이다.

모든 스타일시트를 열어보고, 확인해 볼 수는 없었지만 최근의 것들을 살펴보니까 나는 다음과 같은 순서를 가지고 있었다.


  1. display
  2. position
  3. clear
  4. float
  5. width / height
  6. margin / padding
  7. border / background
  8. color / font
  9. align / etc

모질라의 CSS 순서 제안을 찾아봤는데 다행인지 요행인지 나의 작성순서와 크게 다르지는 않았다.


  1. display
  2. list-style
  3. position
  4. float
  5. clear
  6. width / height
  7. padding / margin
  8. border / background
  9. color / font
  10. text-decoration
  11. text-align / vertical-align
  12. white-space
  13. other text
  14. content

간단히 분석을 해보자면, 모질라의 제안이나 내 방식이나 레이아웃을 설정하는 것을 최우선으루 두고, 영역을 이루는 객체의 크기를 잡고, 텍스트 단위의 색과 모양, 정렬을 설정하는 형태가 된다. 조금 더 세세히 들어가면 유지보수를 위해서 수정이 자주 일어날 수 있는 속성들을 상대적으로 앞으로 배치하게 된다. 예전에는 디자인을 완벽하게 스타일시트로 분리하여 제작하는 경우가 없어 대부분 링크나 텍스트 컬러만을 다루는 정도여서 스타일시트의 분량이 적었고, 따라서 속성 하나당 한줄씩 잡는 코딩 방식을 썼지만 최근에는 분량이 많이 늘어나 한 스타일을 한줄로 이어 붙이는 방식을 많이 사용하는 것 같다. 그래서 가로로 스크롤이 생기거나 두줄 이상으로 이어지는 경우가 많은데 이런 경우 바로 수정할 속성이 비교적 앞쪽에 위치해 있는 것이 편리하다. 더불어, 속성명과 값을 붙이는 것보다 한 칸 띄우는 것이 가독성에도 좋고, 수정에도 용이한 것 같다. 다만, 최종적인 스타일시트의 경우 용량이 커질 수 있으므로 빈 칸을 모두 제거하여 한 줄로 만드는 CSS압축방식을 적용하면 좋을것 같다.

1. 희주님 블로그 - 발단이 된 글
올블로그 공채합격. 그리고 일방적인 입사취소 통보를 받다

2. 올블로그 관계자의 미숙한 대응
'골빈해커'님의 대응 글 원문

3. 올블로그 관계자의 또 미숙한 대응 (원문을 지우고 수정)
'골빈해커'님이 수정한 글

4. 그리고는 예정대로 번개하자는 글이..
블로거번개 장소입니다.

5. CEO의 사과 - 다소 미흡한..
입사 취소에 대한 사과문.

6. 희주님 블로그 - 이제 종결..? 
하늘님의 공개사과문을 읽었습니다

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

웹2.0 시대, 기업인으로서 꼭 알아야 할 것들

* 이 글은 2007년 6월, 웹과 관련없는 모 회사 사보에 기고한 글이며
웹을 잘 모르시는 분들도 이해하기 쉽도록 쉽게 쓰려고 노력했습니다 *

- UCC와 블로그가 뜬 진짜 이유

10 년 전인 1997년, 이때만해도 e메일을 주고 받는 것 자체가 신기했던 시절이었다. 인터넷 속도는 느렸기에 사진 한 장 올리기에도 버거웠으며, 사람들이 모이는 커뮤니티나 홈페이지에 글과 사진을 올려도 조회수는 몇 십, 몇 백 단위에서 그치곤 했다. 요컨대 10년 전에도 UCC(User Created Contents, 사용자가 손수 제작한 글, 사진, 동영상 컨텐츠를 총칭)는 있었지만 소수의 사람들이 보고 그치는 정도에 불과했으며 동영상을 올린다는 것은 꿈도 꾸지 못했던 시절이었다.

하지만 2007년, 이젠 ‘초고속 인터넷’이란 말이 진부할 정도로 너무나 빨라졌고 웹은 발전을 거듭하여 여러 기술적 장치를 갖춘 훌륭한 서비스들이 등장했다. 인터넷 인구도 폭발적으로 증가했다. 이 결과는? 아무도 생각하지 못했던 현상들이 벌어지기 시작했다. 대중에게 메시지를 전달하고 파급력을 미치는 것은 신문, 방송사 만이 할 수 있는 역할인 줄 알았는데, 그 일을 일개 네티즌이 할 수 있게 된 것이다.

이 제는 평범한 소시민이 자신의 블로그(미디어 기능이 강조된 일종의 홈페이지)를 개설하여 UCC를 올리면 수천, 수만 명이 그 얘기를 들어줄 수 있는 세상이 됐다. 이 블로거의 UCC에 공감하는 수 천, 수 만 명의 사람은 촘촘히 연결된 인터넷 웹 망을 타고 수 십, 수백 만 명에게 메시지를 전파한다. 블로그를 개설하지 않더라도 얼마든지 자신의 목소리를 낼 수 있다. 온라인 서명운동을 하거나 고발 사진, 동영상을 찍어 여러 사이트에 전파하고 다닐 수 있는 세상이 된 것이다.

요컨대 과거에는 극소수의 기자와 언론 만이 대중에게 메시지를 전파할 수 있었지만 이젠 누구나 그 일이 가능해졌다. UCC는 미디어화 됐으며 일개 네티즌이 만든 가치있는 UCC는 참여와 공유의 정신을 갖춘 네티즌들에 의해 수십 만 명의 다른 네티즌에게 전파된다. 이것이 블로그와 UCC가 뜬 근본적인 이유이며, 참여와 공유의 정신이 살아나고 UCC가 미디어화된 현대의 인터넷을 과거와 구분하기 위해 웹2.0이란 용어까지 탄생하게 된 것이다.

- 웹2.0시대, 네티즌을 대하는 기업의 자세는?

과거에는 회사에 좋지 않은 일이 터지면, 해당 사건을 취재하는 기자와 언론사만 막으면 어떻게든 넘어갈 수 있었다. 고객의 항의에 잘못 응대했어도 이 고객은 분을 삭힐 뿐 어디 호소할 때가 마땅히 있는 것도 아니었다. 일개 고객이 불매운동 펼쳐도 대중 매체가 외면하면 그냥 묻히고 마는, 그것이 과거 기업의 외적 환경이었다.

그러나 웹2.0 시대는 어떨까. 포털 사이트에 방문하는 주간 방문자는 2천 만 명이 넘는다. 대한민국 인구의 절반 이상이 네티즌이며 이 사람들 모두가 잠재적인 미디어라는 얘기다. 모든 정보는 공유되며 웹 망을 타고 순식간에 퍼진다. 기업은 이제 인터넷에서 다양하게 터져 나오는 고객의 목소리에 귀를 기울이지 않으면 엄청난 대가를 치르게 됐다. 한 명의 고객은 자신의 불만을 수만, 수십 만 명에게 전파할 수 있게 됐기 때문이다.

그 렇다면 기업은 웹2.0시대의 네티즌들에게 어떻게 대처해야 할까. 불만을 빠르게 감지해서 원천 봉쇄? 기업 이미지 재고를 위해 홍보용 사이트를 구축한다? 둘 다 방법은 될 수 있겠지만 근본적인 해결책은 아니다. 언제 어디서 터질지 모르는 고객 항의는 봉쇄되기 전에 순식간에 퍼져나가며 기업 홍보용 사이트는 재미 없으니 파리 날리기 쉽다.

웹2.0시대의 기업은 웹2.0스러운 방법으로 네티즌을 대해야 한다. 네티즌들을 진솔하게 대하고, 네티즌들의 참여와 공유를 이끌어낼 수 있는 인간적인 메시지를 던져야 하며, 사건이 터지면 솔직한 사과를 원칙으로 삼아야 한다. 네 티즌들은 자존심이 강하다. 자신들이 항의하고 퍼뜨린 사안이 묵살되고 봉쇄당하면 더 분노하지만, 기업이 솔직하게 잘못을 시인하거나 적극적으로 정보를 공개하여 오해를 풀면 모든 것을 용서한다. “나 때문에 저 기업이 사과하는구나, 용서해야지” 웹2.0 시대의 네티즌을 대하는 기업은 이렇게 네티즌 눈 높이에 맞춰야 한다.

- 웹2.0의 가치와 사내 문화

네티즌들이 웹에 참여하고 정보를 공유하는 근본적인 이유는 평등하기 때문이다. 서로 존대해 봤자 아무개 ‘님’ 정도이고, 툭하면 반말하며 악플을 달기도 하는 네티즌들. 이 네티즌들은 서로 평등하기에, 자신이 갖고 있는 정보와 정보의 가치에 의해서 검증되고 인정받는다. 직책이 아닌, 정보를 통해서 교류한다. 가치 있는 정보를 많이 갖고 있는 네티즌은 존중 받을 수 밖에 없다.

그러나 보통의 기업 문화는 이와 반대로 움직인다.

새 내기 사원은 의욕이 넘친다. 실수도 많이 한다. 그러나 때묻지 않았기에 참신한 시각으로 풍부한 의견을 쏟아낼 수도 있다. 그러나 과연 이러한 의견과 정보를 쏟아내고 공유할 수 있는 공간은 있을까. 설사 공간은 있다 치더라도 직책이 아닌 정보의 가치 만으로 인정받을 수 있을까. 회사를 오래 다닌 사람도 자기 자신의 업무 외에 쓴 소리를 하기란 쉽지 않다. 쓴 소리는 정보다. 그러나 이런 정보를 모을 곳은 거의 없으며 정보를 쏟아내는 것부터 쉽지 않은 일이다.

그렇다면 웹2.0의 철학을 기업에 적용한다면? 기밀을 제외한 모든 정보는 공개되며 모든 사원은 자신의 의견과 정보를 쏟아낸다. 직급에 따라 정보의 중요도가 결정되는 것이 아니며, 의견 자체의 가치에 의해 중요도가 평가된다. 상의하달식 기업 문화도 물론 나름대로의 장점이 있지만, 사원 모두의 자발적인 힘(요새 유행하는 용어로 ‘집단 지성’)이 보태지는 기업은 훨씬 더 잘 되지 않을까.

회사를 가장 잘 알고 솔직한 쓴 소리를 내뱉는 사람은 컨설팅 업체 사람도 아니고 소액 주주도 아니고 고객도 아닌 것 같다. 애사심은 강한데 울분을 토로할 곳이 없어서 술자리에서 회사 흉보는 사원들, 이 사람들이 회사를 가장 잘 알고 잘 이끌어갈 수 있는 사람들 아닐까. 이러한 사원들도 자유롭게 의견을 내고 정보는 공유되며 서로 존중하는 문화. 웹2.0과 UCC, 블로그가 어떻게 이러한 문화를 만들어 냈는지 연구하고 기업 안팎의 정보 유통 프로세스에 적용한다면, 기업의 가치는 더욱 더 높아지고 정말 일할 맛 나는 회사가 되지 않을까.
사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지

사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지

노출


사진에서 가장 기본이라고 할 수 있는 것이 노출입니다. 이 노출에 관해서 최대한 초보자가 알기 쉽게 풀어서 설명을 하겠습니다. 그래도 혹시 이해가 안가는 점이 있으면 게시판에 질문 바랍니다

1.노출이란



노출이라는 말은 원래 필름에 빛을 노출시킨다는 의미로 쓰였습니다. 필름은 빛을 받으면 반응을 하는데 디카에서는 CCD가 그 역할을 하지요. 그래서 카메라에서 셔터를 열어 필름 또는 CCD에 빛을 주는 것을 노출이라고 합니다. 그런데 사진에서 노출이라고 하면 이렇게 단순히 노출시킨다는 의미보다는 어느 정도의 양으로 노출을 한다는 의미, 즉 빛의 양을 의미합니다.

사진을 찍을 때마다 적정 노출이라는 것이 있습니다. 장면에 따라 빛을 어느 정도 주어야 적당한 밝기의 사진이 찍힌다는 계산이 나옵니다. 이 적당한 밝기를 나오게 하는 노출을 적정 노출이라고 하고 그보다 노출이 적어서 사진이 어둡게 나오면 노출 부족이라고 하고 노출을 지나치게 해서 사진이 밝게 나오면 노출 과다라고 합니다.

사진의 밝기는 필름이나 CCD에 빛을 주는 양에 비례해서 밝아집니다. 빛을 두 배 노출하면 밝기도 두 배가 되고, 반만 노출하면 밝기도 반이 됩니다.

그러면 카메라에서 노출의 양을 결정하는 요소는 무엇이 있을까요. 가장 기본적인 것으로 셔터스피드와 조리개의 조절을 통해 노출을 조절합니다.

2.셔터스피드



셔터는 카메라에서 필름(CCD)쪽으로 들어가는 빛을 차단하는 장치입니다. 닫혀있던 얇은 막이 일정 시간동안 열려 있다가 닫혀지게 되는데 이 시간동안 빛이 카메라 안으로 들어가게 됩니다. 그 열려있는 시간을 셔터스피드라고 합니다.

셔터스피드는 몇가지 단계로 구분되어 있는데 다음과 같이 2배 단위로 나뉘어져 있습니다.

1(1초), 2(1/2초), 4(1/4초), 계속해서 8, 15, 30, 60, 125, 250, 500, 1000, 2000

카메라에 써있는 숫자를 역수로 읽으면 그것이 셔터스피드가 됩니다. 예를들어 1000이라고 표기된 수치는 1/1000초를 의미합니다.

1초 이상의 셔터스피드는 1", 2", 3" 등의 초 단위를 표시해서 위의 숫자들과 구분합니다.

이렇게 2배 단위로 셔터스피드가 구분되어있는 것은 기어로 작동하는 기계식 셔터에서는 이렇게만제어할 수 있었기 때문입니다. 요즘 카메라들은 위의 단계에서 1/3정도 더 세분해서 조절할 수 있고 전자식 셔터를 사용하는 카메라는 1/28초 처럼 어떤 속도로도 조절이 가능합니다.

이 셔터스피드를 통해서 빛이 들어가는 시간을 조절할 수 있습니다. 당연히 시간과 빛의 양은 비례하겠지요.

3.조리개



조리개는 빛이 들어가는 구멍의 크기를 조절하는 장치입니다. 보통 수도꼭지에 비유해서 많이 설명을 하는데요. 수도꼭지에서 나오는 물의 양을 빛의 양이라고 생각하면, 수도꼭지를 열어놓는 시간이 바로 셔터스피드라고 할 수 있고, 수도꼭지를 열어놓은 정도를 조리개라고 할 수 있습니다.

그래서 수도꼭지를 최대로 열고 물을 틀어놓았을 때보다 반만 열어놓고 물을 틀어놓았을 경우 같은 양의 물을 담으려면 두 배의 시간이 필요하게 되지요.

카메라에서도 이처럼 빛이 들어가는 구멍의 크기를 조절해서 빛의 양을 조절할 수 있습니다.

조금씩 오래 받을 것인지, 아니면 한꺼번에 많이 받을 것인지를 조절할 수 있는 것이지요.

이에 대해서는 책에서 나온 그림을 참고하시면 될 것 같습니다.
사용자 삽입 이미지

이 그림처럼 조리개가 열려있는 구경에 따라 빛의 양이 조절되는데 조리개가 열려있는 정도를 F값으로 표현합니다.

F1.4, F2, F2.8, F4, F5.6, F8, F11, F16, F22

이 숫자가 작을 수록 구경을 크게 열어놓은 것이고 각 숫자간의 빛의 양은 각각 두 배가 차이가 납니다.

예를 들어 F2.8은 F4보다 두 배 더 크게 열어놓은 상태가 됩니다.

4.셔터와 조리개의 조합



지금까지 셔터스피드와 조리개의 의미와 단위에 대해서 알아보았는데요. 여기까지는 다들 알고 계신 경우가 많을 겁니다. 그렇다면 위의 두 수치를 각각 조합시키는 방법에 따라 사진이 어떻게 변하는지 알아보겠습니다.

우선 어떤 일정한 광량을 받기 위한 셔터스피드와 조리개의 조합은 다양하게 선택될 수 있습니다.

예를 들어 F2.0으로 1/2초 노출한 것과 F2.8로 1초 노출한 사진의 밝기는 똑같습니다.

조리개를 F2.0에서 F2.8로 한 단 조이면 구멍이 반으로 좁아져서 들어가는 빛의 양이 반으로 줄어듭니다. 그런데 이때 셔터스피드를 두 배 늘려서 빛을 두 배의 시간동안 받으면 결과적으로 최종 사진의 밝기는 똑같아집니다.

같은 경우에 F4에 2초 또는 F2에 1/4초 등 다양한 조합이 나올 수 있습니다.

이렇듯이 같은 장면을 다양한 셔터스피드와 조리개값으로 선택해서 촬영할 수 있다는 것을 알 수 있습니다. 그런데 이렇게 선택한 여러가지 설정은 결과적으로 사진의 밝기는 똑같다고 할 수 있지만 사진에 나타나는 효과는 매우 다릅니다.

우선 셔터스피드의 효과는 짐작하시겠지만 움직임을 나타내주는 효과가 있습니다. 셔터스피드를 짧게 하면 움직이는 장면이 정지되어서 나타나고 반대로 셔터스피드를 길게 하면 움직이는 장면이 흔들린 것처럼 표현이 되어서 움직임을 나타내주는 효과가 있습니다.

이런 효과는 움직이는 사물을 찍을 때에 나타나고 풍경처럼 정지된 장면에서는 그 효과가 나타나지 않겠지요.

그러면 조리개를 조절하는 효과는 어떻게 나타날까요?

다음 사진을 보면서 이야기합시다.
사용자 삽입 이미지

우선 이것은 조리개를 F2.0으로 거의 열어놓은 상태에서 촬영한 사진입니다. 초점을 앞에 있는 사물에 맞추어서 앞쪽은 선명히 나오고 뒤쪽은 흐릿하게 표현이 되었습니다.


똑같은 상황에서 조리개를 F11로 변경한 사진입니다. 조리개를 매우 좁게 조여준 것이지요. 그에 따라 사진의 밝기를 유지하기 위해 셔터스피드는 5초로 늘어났습니다. 역시 초점은 같은 위치에 맞추고 찍었습니다. 그런데 이번에는 앞쪽 뿐만 아니라 뒤쪽의 사물까지도 어느 정도 또렷해보이는 것을 알 수 있습니다.

사용자 삽입 이미지

위에서 두 사진을 비교해보면 초점이 맞은 상태가 다른 것을 알 수 있습니다. 조리개를 열면 초점이 맞은 위치에서 조금만 거리가 벗어나도 흐릿하게 표현이 됩니다. (이것을 사진용어로 '피사계심도가 얕다'고 표현합니다) 그렇지만 조리개를 조이면 초점이 맞은 부분 외에도 앞뒤로 상당히 많은 부분이 선명하게 표현이 됩니다. (이것을 사진용어로 '피사계심도가 깊다'고 표현합니다)
(참고) 위 예제사진은 CCD사이즈 2/3인치 디카로 촬영한 것으로 심도표현의 효과가 적은 편입니다. APS사이즈 혹은 35mm사이즈 이상의 카메라로 촬영할 경우 조리개값에 따라 심도차이가 더욱 두드러져보입니다.

두 사진은 셔터스피드와 조리개를 제외하고는 모든 상황이 같은 사진입니다. 사진의 밝기도 똑같구요. 그렇지만 나타나는 효과는 매우 다른 것을 알 수 있습니다.

주로 인물 사진을 찍을 때에는 인물을 제외한 지저분한 배경을 날려버리기 위해서 조리개를 열어놓고 촬영을 하고, 풍경 사진을 찍을 때는 선명한 사진을 위해서 조리개를 어느 정도 조여주고 촬영을 합니다.

이 정도면 셔터스피드와 조리개를 조절하는 효과에 대해 이해가 가셨나요?

5.적정 노출의 결정



마지막으로 그러면 적정 노출은 어떻게 결정이 되는지 알아보겠습니다.

대부분의 자동카메라는 셔터스피드와 조리개 모두를 카메라가 스스로 결정합니다. 그래서 촬영자 임의로 위에서 본 효과를 내주기가 어렵습니다.

그런데 수동 기능이 약간 들어간 카메라의 경우 조리개 우선 자동모드(A모드), 셔터 우선 자동모드(S모드)가 준비되어 있습니다. 이것은 일종의 반자동 기능이라고 할 수 있습니다.

위에서 셔터스피드와 조리개 중에서 어느 하나를 변경하면 노출을 일정하게 유지하기 위해 나머지 하나도 같이 조절을 해주어야 하는 것을 아셨을 겁니다. 그런데 촬영자가 이것을 일일이 계산하기는 어려움이 있으니까 둘 중 어느 하나를 조절해주면 카메라가 나머지 하나를 알아서 결정을 해주는 것입니다.

A모드에서는 촬영자가 조리개값을 변경하면 카메라가 자동으로 셔터스피드를 변경해주고 S모드에서는 촬영자가 셔터스피드를 변경하면 카메라가 자동으로 조리개값을 변경해줍니다.

그러니까 촬영 상황에 맞는 모드를 선택해서 어느 한가지 값만 선택해주면 나머지는 자동으로 결정이 되는 것입니다.

어떤 상황에서 어떤 모드를 사용해야 하는지는 주로 촬영하는 사람의 습관과 취향에 따라 다릅니다. 항상 A모드만을 사용하는 사람도 있고 항상 S모드만을 사용하는 사람도 있습니다.

그리고 셔터스피드와 조리개값 모두를 촬영자가 스스로 결정하고 카메라는 아무것도 해주지 않는 모드를 완전 수동(매뉴얼) 모드, 흔히 M모드라고 부릅니다.

이 정도면 노출의 기본 개념에 대해서는 대강 이해가 갔을 것입니다. 이런 개념이 확실하게 잡히고 나서 촬영에 들어가면 상황에 따른 표현 방법을 이해하기가 좀 더 쉬울 것입니다.

오늘은 이정도까지 하고 다음 편(과연?)에 다시 뵙겠습니다.

그럼...

'IT트랜드 & 정보 > 정보 & 리뷰' 카테고리의 다른 글

역광과 Spot측광  (0) 2008.03.29
일출 촬영의 요령  (0) 2008.03.29
불꽃놀이 촬영 Tip  (0) 2008.03.27
벨킨 트래블 라우터 2편  (0) 2008.02.26
벨킨 트래블 라우터 1편  (0) 2008.02.26
먼저 가장 일반적인 준비물은 다음과 같습니다:

1.삼각대-가능하면 튼튼한 걸로.

2.릴리즈-진동을 방지하기 위해서.

3.렌즈-광각 줌(특히 17-35mm-디카의 1.3내지1.5x를 고려해서) 및 표준 또는 망원 줌(배경을 포함시키지 않고 불꽃만 촬영할 경우에 사용.아마도 28-70 또는 70-200).단 렌즈도 사용할 수 있지만 대처 능력 부족으로 그다지 적합할 것 같지 않음.

4.색깔 있는 셀로판지나 색 필터-렌즈 앞에 붙이거나 장착하여 색다른 효과를 줄 수 있음(디카의 화이트 밸런스로 어느 정도 조절할 수도 있음).

6.흑색 종이:다중 노출용으로.

5.카메라-당연히.

*주의사항:촬영전에 카메라 ISO 세팅을 점검하고,화이트 밸런스도 체크(daylight가 무난하다고 생각됨.특별한 효과를 노릴 경우 다르게 세팅할 수도 있음).또 렌즈에 특수 필터가 장착되어 있지 않나도 확인-특히 편광 필터.
*ISO에 따른 조리개 값:
  ISO50...f5.6
  ISO100...f8
  ISO 200이상 f11~f16
  단,불꽃이 아주 밝게 터질 때가 있는데 이런 경우에는 1단 정도 더 조여주는 것이 좋을 것 입니다.

*노출 시간:셔터는 벌브(B)로 세팅.상황에 따라 그리고 디카의 경우 노이즈 발생 시간에 따라 다르겠지만 대충 정리하면 불꽃 한두개 만을 촬영할 경우 1~2초,다중으로 촬영시에는 더 많이.다중 촬영시에는 렌즈 앞을 검은 종이로 가렸다가 불꽃이 터질 때만 떼면 됨-단,불꽃이 너무 많이 찍히면 이미지가 산만해지기 쉬움.
*촛점:광각 렌즈 사용시는 무한대에 놓고 사용해도 무방하나 표준이나 망원 렌즈 사용시는 맨 처음 불꽃이 터진 지점에 맞춰 놓고 계속 촬영하는 것이 좋을 것으로 생각됨(실제 63빌딩을 배경으로 하여 촛점을 맞춰 본 결과 광각 렌즈를 사용시에도 무한대 보다 약간 앞쪽으로 촛점을 맞추는 것이 정확하게 맞추는 것이었지만 조리개치 f8 정도를 사용하기 때문에 피사계 심도 범위 안에 들어 문제가 없음.표준 렌즈의 경우도 무한대로 맞춰 놓아도 무난할 것으로 생각되지만 망원 렌즈 사용시에는 촛점을 정밀하게 맞춰야 할 것으로 생각됨).

*자리잡기:
불꽃이 터지면 연기가 발생하여 뿌옇게 이미지에 나타나므로 바람의 방향을 고려하여 바람과 직각 방향으로 자리잡는 것이 좋음.현재 여의도 건너편 강변에서 촬영시 바람의 방향이 통상 여의도 쪽에서 이촌 방향으로 불기 때문에 연기로 인하여 깨끗하게 촬영하기가 어렵습니다.그리고 너무나 비슷한 구도의 이미지가 많이 나오기 때문에 식상해집니다.차라리 좀 떨어진 다른 장소도 고려해 볼만 합니다.
*얌전히 삼각대에 올려 놓고 촬영하면 그냥 보기 좋은 평범한 불꽃이 됩니다.주밍이나 흔들림을 이용하면 색다른 느낌의 불꽃이 나옵니다.그렇지만 결과를 예측하기 어렵다는 점은 있습니다.
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지
블로그 정리가 있었다...
자그만치 4시간에 걸친...ㅡㅡ? 나름 대~ 작업이 였다...

일단,
RSS주소도 변경 됬다~
변경 전 : http://blog4u.kr/rss  , 변경 후 : http://blog4u.kr/blog/rss

멀티 블로그를 운영하기 위한 방안으로 불가피하게 블로그의 핵심인 RSS주소를 불가피 하게 변경하게 되었다...

내가 필요로 하고 포스팅 하는 모든 자료가 한 블로그에 있으면 좋겟지만,
생각 해보니 나누어 놓으면 좀더 나중에 시간이 지난 후 자료를 찾는데 있어 쉽지 않을까 하는생각에서다...

지금 생각하고 있는건 현재 이 블로그 와 DSLR디카관련 블로그 이렇게 2개를 계획중이나...
1~2개정도 더~ 늘어 날 계획도 가지고 있다...

혼자 멀티 블로그를 한다는건 쉽지 않다...
하지만 , 데이터에 맞게 블로그를 특성화 시키는 것도 나름 의미 있는 것이라고 생각한다.

뭐~ 나누었다가 안되면 다시..ㅡㅡ; 원복! 하면 되는거고...

요즘들어 블로그에 방문자가 부쩍 늘었다...
평균 100~200명을 달리던 내 블로그 방문자 수가 요근래 1주일동안 평균 방문자가 400~500명 선에서 왔다 갔다 한다.... 도데체 뭐때문에 갑자기 이렇게 방문 자가 확~ 늘었는지 알수가 없다...

( 봇 때문이가...ㅡㅡ/ )

방문자가 늘었으면 댓글도 달리고 그래야 하는데... 뭐 방문자가 많은데 비하여 블로그에 댓글이 많이 달리는것(?)도아니고 아예~ 댓글이란걸 찾아 볼수 없다... 이건 뭐하는 시츄웨이션~>0<

아직도 조금 더 손봐야 할곳이 군데군데 있다... 조금더 수정하고....
조만간 나만의 스킨을 하나 만들어야 겠다... ㅎㅎ

세계의 Top 10 뉴미디어 디자인 회사가 공개하는 “잘.나.가.는.”

                                                                      사이트 만들기 비법 100가지

디 지털 디자이너의 부차적인 취미 정도에 불과했던 웹 디자인은 지난 3-4년에 걸쳐 디자인 산업의 핵심으로 부각되었다. 사실 웹 디자인은 이제 고유의 구조와 제작 과정, 윤리 기준을 가진 하나의 산업이 되었다고도 할 수 있다. 단순한 판촉 도구가 아니라 비즈니스의 핵심으로, 단순한 브랜딩 전략의 한 부분이 아니라 비즈니스의 생존에 결정적인 역할을 하고 있는 존재이다. 그런데 온라인 산업은 현재의 경제적인 동향 속에서 압박감을 느끼고 있다. 많은 웹 콘텐츠 제작자들이 일자리를 잃었고 디자이너들 역시 마찬가지로 불안한 실정이다.

경쟁력을 지니면서 동시에 고객의 경쟁력도 높여주려면 최대한으로 효율적인 사이트가 되도록 디자인해야만 한다. <컴퓨터아트>는 최고의 뉴미디어 디자인 대행사에서 내놓은 100가지의 웹 디자인 팁을 모아 이번 호 특집 기사로 실었다. 이 팁들은 레이아웃, 그래픽, 정보 디자인, 내비게이션, 애니메이션, 흡인력 있는 콘텐츠, 음악과 사운드 효과, 스트리밍 미디어, 3D화 하기, 그리고 난해한 백엔드(back-end: 사용자에게 직접 보여지는 화면 이외의 기술적인 부분)의 열 개 분야로 나뉘어져 있다. 이 주제들 중 자신 있는 한 분야에 대해 각각의 에이전시가 열 가지의 팁을 제공했다. 이 팁들은 모두 어떤 한 소프트웨어에 국한되지 않는 것들이며, 사이트 구축의 전반에 적용될 수 있는 디자인과 제작 과정에 관한 것들이다. 현재의 상황에 적용할 수도 있고, 미래를 위한 참고 자료로 남겨두어도 좋을 것이다. 고객이 언제 스트리밍 미디어나 까다로운 백엔드를 요구할런지는 아무도 모르는 일이지만 팁은 여기에 모두 들어있다.

---------------------
레이아웃
---------------------


단 도직입적으로 말해 레이아웃은 웹사이트 디자인의 핵심이다. 레이아웃은 사용자의 지각 대상으로서 웹사이트의 외관과 느낌을 결정하기 때문이다. 하지만 사이트의 레이아웃을 정한다는 것은 스케치를 하거나 제작 도구에서 버튼이나 그래픽 등을 끌어다놓는 것 정도로 끝나는 일이 아니다. 레이아웃은 기획과 팀워크, 창의력을 필요로 하는 창조적인 작업 과정인 것이다. 뉴 미디어 대행사인 레이저피시의 런던 지사에 근무하는 수석 디자이너 리차드 월렛(Richard Wallett)이 효율적인 사이트 레이아웃을 위해 다음 열 가지 팁을 내놓았다.

1. 요점을 명확히 정리한 간단한 문서를 만든다. 자신이 이해할 수 있고, 팀 전체와 고객에게 조리 있게 설명할 수 있는 것이어야 한다. 모든 결과물과 그 책임 소재를 분명히 정리한다. 이 문서는 프로젝트 전반에 걸친 안내서가 되며, 이를 토대로 프로젝트의 체크리스트를 만들게 된다. 고객의 요구사항이 변경될 경우를 대비하는 것이 될 수도 있다.

2. 제작 일정. 마감에 맞추어 일을 진행하고, 제작 기간을 고려하여 일정을 정하며, 일정을 지킨다. 모든 팀원들에게 각자 책임지고 있는 부분을 숙지시키고, 쉬운 용어들을 사용한다('계층적 결과물들을 구조화하다'가 무슨 뜻인지 도대체 누가 알 것인가?). 콘텐츠가 어디서 나오는지 확인한다. 팀원들에게 일을 분배하고 기한을 정한다. 좀 혹독하게 들릴 수도 있겠지만, 일이 매끄럽게 진행되기 위해서는 이런 것들이 꼭 필요하다.

3. 프로젝트의 영감을 얻으려면 잠시 일을 멈추고 자신이 무엇을 전달하려고 하는지에 관해 초점을 맞춘다. 어떤 단계에서든 모든 요소들을 고려하고 그것들을 순서에 맞게 준비한다. 고객들은 총체적인 솔루션을 제공받는다는 느낌을 좋아한다.

4. 총 문자 수를 정하고, 특정 플랫폼에서의 최적의 화면 사이즈를 기반으로 망을 만든다. 그리고 테스트해 본다. JPEG 파일의 한계를 고려하고 다시 테스트한다. 웹 페이지의 넓이를 염두에 둔다. 드림위버나 고라이브를 사용해 기본형을 만든다. 기본형을 작성하면 콘텐츠가 어떻게 이동하는지 감을 잡을 수 있다. 플래시나 퀵타임 등등의 다른 미디어를 넣을 작정이라면 가로 세로 비율을 고려한다(팁 6번을 볼 것).

5. 일러스트레이션이나 사진에 투자한다. 이 요소들은 감성을 자극한다. 정해진 레이아웃 안에서 다양하게 실험해 본다. 좋은 이미지는 그 안에 스토리를 가지고 있다. '나는(사용자는) 이것을 어떻게 받아들이는가?', 그리고 '시공간의 느낌이 들어있는가?'라는 질문을 스스로 해본다. 뭔가 신선한 것을 시도해 본다. 지나치게 화려한 모음집 이미지(stock images: 한 장, 혹은 여러 장의 CD에 연관된 이미지들을 모아놓은 것으로, 한번 구매하면 반복해서 사용할 수 있다)의 사용은 자제하도록 한다

6. 템플리트를 만들면 시간도 절약될 뿐더러, 컨텐츠가 늦어지더라도 큰 문제가 생기지 않는다. 고객이 제공할 원고나 필요 자료 등이 늦어지게 되면 프로젝트 일정이 묶여버린다. 이럴 경우를 각 포맷들과 그 비율들을(예를 들면 퀵타임 무비에는 16:9/4:3의 비율) 알아두어 대비한다. 가로 세로 비율은 망을 작성하는 출발점이 되기도 한다(팁 4번을 볼 것). 레이어의 사용도 좋은 대비책임을 염두에 둔다.

7. 컬러 팔레트. 216 컬러에만 집착하지 말 것. 한 색은 투명하고 다른 한 색은 불투명하게 사용해보자. 이것은 하프톤 스크린(halftone screens: 신문 등의 인쇄에 쓰이는 망점. 두 가지 색을 작은 점들로 인쇄해서 중간 색으로 보이게 한다)과 유사한 기능을 해서 반투명한 느낌을 줄 수 있다. 투명도와 질감, 형태 등을 이용해 계층적으로 영역 구분을 할 수 있다. 사용자가 웹페이지를 인쇄해야 할 경우를 고려해서 겹쳐진 부분이 회색이 되지 않도록 한다.

8. 대화성(interactivity). 사용자의 입장이 되어서, 어떻게 정보를 찾아가게 될지를 생각해 본다. 세 가지의 내비게이션 시스템을 고려해보고, 기본형을 만들어 효율성을 체크한다. 고객이나 제작 팀 모두가 이 문제에 집중해야 하며, 내비게이션 구조를 정확히 보여주는 것이 매우 중요하다.

9. 지금까지는 모두 너무 논리적인 이야기들이었다. 이제 여기에 진짜 한가지를 더해야 한다. 바로 당신이 '최고'가 되기 위해 필요한 것이다. 당신을 당신의 경쟁자들과 차별화시키는 요소 말이다.

10. 확장성. 솔루션은 여기서 끝나서는 안된다. 고객에게 제공하는 솔루션을 항상 전체적인 하나의 패키지로 생각해야 한다. 인쇄물, 오디오, 스트리밍 미디어, 방송, 광고 등등에 이르기까지... 그것이 고객이 당신을 다시 찾게 되는 이유이기도 하다.

---------------------
그래픽
---------------------

웹 그래픽은 일종의 아이러니다. 쓸만한 사이트를 방문한 사용자라면 훌륭한 그래픽과 매혹적인 환경을 원하겠지만, 한 페이지에 많은 그래픽을 넣을 수록 다운로드 시간은 길어지고, 그렇게 되면 사용자는 참지 못하고 다른 사이트를 찾아가게 된다. 훌륭한 웹 디자인이란 그래픽을 적절하게 사용하면서도 그것에서 최대한의 효과를 끌어내는 것이다. 허브의 디자이너들이 제안하는 그래픽/이미지 압축에 관한 열 가지 지침을 소개한다.

1. 이 포맷이 적당한 포맷일까? JPEG 포맷은 사진이나 다양한 컬러나 톤의 이미지에 적당하다. 수백만의 색을 지원하며 GIF 포맷보다 훨씬 다양한 단계의 압축을 지원하고, 화질을 유지하면서도 빨리 다운로드된다.
GIF 포맷은 넓은 면이 한가지 색, 혹은 제한된 몇 가지의 색으로 이루어져 있을 경우 적합하다. GIF 포맷은 비손실 압축 알고리즘을 사용하므로, 경계선이 뚜렷하고 깨끗하게 나와야 하는 그림이나 글자의 경우 JPEG보다 효율적이다. GIF 포맷은 투명한 부분을 지정할 수 있다는 장점도 가지고 있다.

2. JPEG 포맷은 또렷한 이미지보다는 흐릿한 이미지를 잘 압축하므로, 이미지를 흐려 압축 한다. 대부분의 웹 디자인 도구에서는 단계적으로 흐리기 효과를 주는 기능이 있다. 미리보기와 파일 크기를 고려해가며 적절히 조절한다. 이렇게 하면 화질에는 큰 영향 없이 파일 사이즈를 줄일 수 있다.

3. GIF 파일 정보는 왼쪽에서 오른쪽으로 기록된다. 따라서 이 방향으로 요소들이 반복되면 좀더 많이 압축될 수 있다. 즉, 수직이나 불규칙적으로 반복되는 경우보다 수평으로 동색이나 무늬 등이 반복되는 경우에 압축률이 더욱 좋아진다는 말이다.

4. GIF 파일로 몇 가지 색이나 사용할 수 있을까? 세 가지 색 이미지를 256 컬러의 GIF로 저장한다면 파일 사이즈는 그만큼 커지게 된다. GIF 파일로 저장할 때는 이미지의 질에 지장을 주지 않는 한도 내에서 최소한의 색만을 사용하도록 바꾸는 것이 좋다. 디더링(dithering)을 줄여본다. 디더링을 줄이면 그만큼 이미지 안에서 한가지 색으로 된 면이 늘어나게 되므로 압축률도 높아지고 파일 사이즈도 줄어든다.

5. 그래픽 프로그램의 최적화 기능을 최대한 이용하도록 한다. 어도비의 이미지레디 3(포토샵 6와 함께 제공됨)에는 '차별적 옵티미제이션(Optimisation)' 기능이 있어서, 한 이미지 안에서도 부분마다 다르게 압축 수준을 지정할 수 있다. 이렇게 하면 화질은 최대로 보존하면서 파일 사이즈를 줄일 수 있게 된다.

6. PC에서는 Mac에서보다 이미지가 훨씬 어둡게 보인다. 매크로미디어의 파이어웍스는 다른 시스템에서 이미지가 어떻게 보이는지를 미리 볼 수 있다. Mac에서 이미지가 어떻게 보일지 알아보려면 View > Mac Gamma를 선택한다. Mac의 경우, PC에서 이미지가 어떻게 보이는지 보려면 View > Windows Gamma를 선택하면 된다. 양쪽 플랫폼에서 최적의 상태로 보여지도록 이미지의 레벨을 조절한다.

7. 간혹 아주 큰 이미지를 써야만 할 경우가 있다. 이럴 때는 점차적으로 보여지는 GIF이나 JPEG을 사용해 사용자가 기다리는 시간을 좀더 짧게 느껴지도록 할 수 있다. 이 포맷들은 처음에는 저해상도의 이미지로 표시되고 점차 완전한 이미지로 변하므로, 사용자가 완전히 빈 페이지만 쳐다보고 기다리는 것보다는 덜 지루해 하게 된다.

8. 큰 이미지나 이미지 맵을 사용하려면, 이미지를 작게 자르도록 한다. 전송되는 시간은 같지만 이미지 조각들이 각각 조금씩 전송된다.

9. 이미지 태그에 높이와 넓이를 써주도록 한다. 브라우저는 이를 인식해 이미지가 들어갈 정확한 자리를 남겨놓고, 문자를 배열한다. 즉 사용자는 이미지가 모두 나오기를 기다리지 않고도 컨텐츠를 읽을 수 있게 되는 것이다.

10. 캐쉬를 최대한 이용한다. 다른 페이지에서 쓰였던 그래픽 파일들을 그대로 재사용하면, 이미 사용자의 캐쉬에 저장되어 있으므로 더 빨리 나오게 된다.

---------------------
정보디자인
---------------------

정 보 디자인은 부담스런 주제처럼 들리지만, 사실 상식 선에서 해결할 수 있는 문제이다. 디자이너들이 저지를 수 있는 가장 큰 죄악은 사용자를 혼란스럽게 하는 것이라고 생각들 하지만, 신경 쓰지 않은 디자인을 가지고는 사용자들에게 완전히 잘못된 내용을 주게 된다. 사용자의 관점을 고려하면서도 사이트 구조가 사용자에게 어떤 종류의 내용을 보내고자 하는지를 알아야 하겠는데... 정보 디자인을 전문으로 하는 회사 블랙 아이디에게 열 가지 팁을 부탁했다.

1. 특정 기능을 수행하는 사이트를 개발할 때 중요한 정보를 모호한 위치에 숨기지 않는 것이 중요하다. 규정이나 설명서 등은 디자인을 망친다는 이유로 종종 구석에 위치시키고는 한다. 절대 중요한 정보를 숨기지 말라.

2. 정보 디자인의 규칙 중 가장 유명한 것이 '세 번 클릭으로 원하는 정보에 도달하도록' 하라는 것이다. 이 규칙은 무시하지 않는다. 사용자가 무엇인가 하려고 할 때 수많은 화면을 거쳐가야만 한다면, 그 사용자는 다른 곳으로 가버릴 것이기 때문이다.

3. 사용자가 행동을 취하도록 하는 버튼(calls to action)이 매 페이지마다 있어야 한다. 그렇지 않으면 사용자는 페이지를 보고 나서 '그래서?'라고 생각할 것이다. 사용자가 회원 등록을 하거나 물건을 사거나 사이트의 어떤 기능을 사용하도록 하려면, 가능한 모든 페이지에 그것을 홍보해야만 한다.

4. 내비게이션 요소들이 페이지 내에서 한 눈에 들어오지 않는다면 사용자는 그것을 볼 수 없고 따라서 찾아가지도 않게 된다. 내비게이션 도구를 찾기 위해 스크롤하게 만드는 것은 절대 금물이다.

5. 사이트의 디자인을 잘 하는 것은 중요하다. 하지만 사용자가 페이지를 보고 난 후 이것이 무엇을 하려는 사이트이며 자신이 무얼 해야 할지를 모른다면 그 웹사이트는 실패한 것이다. 단순하고도 정확하게 사용자가 해야 할(할 수 있는) 것들을 표시해 주어야 한다

6. 모호한 제목은 처음 방문하는 사용자에게 혼란만 준다. 내비게이션 제목에는 간단한 단어를 사용하고, 제목을 보고 어떤 페이지인지 정확히 알 수 있도록 해야 한다.

7. 많은 사이트들이 방문객에 관한 정보를 수집하는 것을 목적으로 하고 있다. 장황한 양식으로는 이 목적을 달성할 수 없다. 작성해야 하는 양식을 짧고 간단하게 하고, 사용자가 자신의 정보를 제공할 만한 가치나 보상을 제공하도록 한다.

8. 사람들은 인터넷을 '읽지' 않는다. 읽어야 할 필요가 있을 때는 프린트하게 마련이다. 긴 텍스트 대신 짧은 설명을 달고 사용자가 원할 때 기술적인 문서나 멋진 산문들을 다운로드해서 볼 수 있도록 하면 좋다.

9. 사용자에게 신뢰감과 친근감을 주기 위해서는 내비게이션과 페이지 레이아웃의 일관성이 필요하다. 페이지가 바뀔 때마다 내비게이션이나 정보 디자인을 찾아 헤매는 것은 혼란스럽고 짜증나는 일이다.

10. 마지막 팁은 정보 디자인이기보다는 정보의 표시에 관한 것이다. 웹사이트에 엄청난 경비를 들이는 세계 최대의 기업 사이트에서부터 침실에서 만들어지는 동호회 사이트에 이르기까지, 이 모든 사이트들이 문법이나 철자 오류를 가지고 있다. 이런 오류는 사이트 전체의 질을 떨어뜨린다.


---------------------
내비게이션
---------------------
내 비게이션 구조를 디자인하는 것은 매우 재미있다. 우주선의 계기판 모양에서 동굴 벽화에 이르기까지 다양한 내비게이션 구조들이 있어왔다. 내비게이션을 잡는 것은 정보 디자인 과정과 매우 흡사할 수도 있지만, 내비게이션은 사용자의 흥미를 끌기 위해 눈에 보이는 시각적 은유(metaphor) 까지를 사용한다. 영국에서 가장 잘 알려진 웹디자인 대행사인 딥엔드에게 내비게이션에 관해 물었다. 런던 딥엔드의 토니 필립스 (Tony Philips, 디자인 디렉터), 제인 오스틴 (Jane Austin, 인터랙션 디렉터), 빅토리아 잭 (Victoria Jack, 인터랙션 디자이너), 로렌스 톰슨 (Laurence Thompson, 디자이너)에게 감사를 전한다.

1. 방문객을 설정하라. 이 사이트는 누구를 위한 것인가? 사용자의 유형을 정의함으로써, 사용자가 이 매체에 얼마나 친숙한지, 그들이 이 사이트에서 얼마만큼의 시간을 보내는지, 그리고 사이트의 기능을 얼마나 이해하고 있는지의 관점에서 그들에게 적합한 내비게이션 시스템을 만들 수 있게 된다.

2. 기능을 설정하라. 이 사이트는 무엇을 하는 사이트인가? 사용자들이 내비게이션에서 기대하는 것은 무엇인가? 사용자의 구매 의사를 이끌어내야 하는가? 혹은 사이트를 둘러보거나 즐기게 만들 것인가? 초기에 사이트의 기능을 정의하면 그에 따라 다른 것들을 결정할 수 있게 된다.

3. 명확한 분류와 제목을 사용한다. 목표가 되는 사용자가 이해할 수 있는 용어와 언어를 사용하도록 한다. 시각 언어의 일관성 역시 중요하다. 서체의 선택, 컬러의 사용, 간단한 롤오버 등에서 일관성을 줄 수 있다.

4. 위치와 배열에 일관성을 지킨다. 모든 페이지에서 글로벌 내비게이션(Global Navigation: 사이트 전체에 걸쳐있는 내비게이션)과 로컬 내비게이션(Local Navigation: 어떤 섹션이나 페이지에만 존재하는 내비게이션) 요소에다 일정한 위치와 순서를 정해 놓는다. 이렇게 하면 첫 페이지에서 다른 페이지로 이동한 사용자가 컨텐츠의 범위를 정확하게 알 수 있고, 따라서 친숙함을 줌으로 원하는 정보와 대화의 경험을 느낄 수 있다.

5. 다른 관련된 컨텐츠로의 링크를 생각해 본다. 아마존 웹사이트([w]www.amazon.com)가 좋은 예이다. 이 사이트는 시각적으로는 매우 평범하지만 매우 효율적인 구조로 구성되어 있다는 것을 알 수 있을 것이다.

6. 많은 사이트들이 좀더 감성적인 사용자 경험(User experience)을 이끌어내기 위해 상상력과 창의력을 동원해 내비게이션 시스템에 접근한다. 탱고 웹사이트 ([w] www.tango.com)를 보자. 이 사이트는 컨텐츠와 내비게이션 도구들에 장난스러운 그림이나 캐릭터를 사용해 유머러스한 느낌을 주고 있다.

7. 사용자로 하여금 컨텐츠를 자신에 맞게 조정할 수 있도록 하는 것이 좋을 때가 있다. 타이포그래픽 56 웹사이트(Typographic 56 사이트), [w] www.typographic56.co.uk)는 국제 타이포그래픽 디자이너 모임(International Society of Typographic Designers)을 위해 만들어진 것으로, 사용자가 정보의 양과 순서를 선택할 수 있도록 되어있다.

8. 가끔 색다른 시각적 메타포를 찾아보는 것도 흥미로운 결과를 만들어낸다. 비어 이즈 라이프(Beer is Life) 사이트, [w] www.beerislife.co.uk)는 학생들을 위해 만들어졌는데, 내비게이션 요소의 하나인 '학생관'은 그들을 염두에 두고 디자인된 것이다. 다른 웹사이트들은 기능과 콘텐츠에 기반해서 은유적인 내비게이션 구조를 만든다. 디자인과 아트 디렉션 웹사이트 (Design and Art Direction Website), [w] www.dandad.org에서 딥엔드는 '연필을 굴려서' 다른 섹션으로 이동할 수 있는 메뉴를 선보였다.

9. 내비게이션 시스템은 종종 이야기의 형태를 띠기도 한다. 프렌치 커넥션 사이트, [w] www.fcukingkybugger.com은 이야기 중간에 사용자가 줄거리를 선택할 수 있고, 그에 따라 결과가 달라지게 되어 있다.

10. 내비게이션의 한계를 넘어, 인터랙티브 사운드를 사용하여 완전히 실험적인 내비게이션 시스템을 만들어내는 것도 가능하다. 새로 나온 소프트 드링크, 카본(Carbon)을 위해 딥엔드에서 제작한 웹사이트, [w] www.carbon-stimulation.com은 사용자가 내비게이션 요소들을 발견하고 즐기도록 되어있다. 사용자는 시각적, 청각적인 피드백을 해석하고 메뉴를 선택할 수 있다. 또 하나 눈 여겨 봐 둘만한 사이트로는 [w] www.copyrightdavis.com이 있다.


---------------------
애니메이션
---------------------

애 니메이션으로 인해 웹은 활기를 띠게 되었다. 하지만 디자인이 잘된 웹사이트라도 완성도가 떨어지는 애니메이션이 들어가면 격이 떨어지게 마련이다. 애니메이션은 다운로드 속도를 느리게 하고 어떤 경우는 플러그인을 필요로 하기도 하며, 가장 나쁜 것은 몇 가지의 '단순하면서도 효과적인' 애니메이션 스타일이 웹사이트 전반에 걸쳐 퍼져 있다는 점이다. 현재의 웹 애니메이션이 필요로 하는 것은 독특함이다. 마티니의 멀티미디어 팀장인 벤 애덤스(Ben Adams)의 조언을 들어보자. 일반적인 조언에서 시작해 아홉 가지의 플래시 관련 팁을 제공한다.

1. 웹사이트를 제작할 때 가장 중요한 결정 사항이 있다면 '애니메이션을 넣을 것인가 말 것인가'이다. 이것은 매우 결정하기 쉬운 문제인 것 같지만 개발 시 이 문제를 고려하지 않을 경우, 결과적으로 어지럽거나 구토를 유발할 것만 같은 페이지에 말도 안 되는 내비게이션이 나오는 경우가 허다하다. 신중히 생각하고 어떤 사용자들을 겨냥하고 있는지를 명확히 한 후 그들에게 어떤 시각적 경험을 선사할 것인지를 정한다. 속도와 플러그인, 브라우저, 그리고 시각적 효과와 파급 효과를 고려한다.

2. 처음에 종이 위에 스토리보드를 그려 주제를 강력하고 훌륭하게 발전시켜 나간다. 작은 크기로 대강 그려가면서 무대와 장면, 애니메이션을 기획한다. 아이디어를 위해 영화나 전통 TV 애니메이션 시리즈들을 보는 것도 좋다. 영화나 전통 애니메이션 작품들을 보는 것은 효과적인 카메라 각도나 편집을 위해 특히 유용하다.

3. 기본적인 얘기이나, 처음 무비를 제작할 때부터 Modify Movie 메뉴에서 초당 프레임 비율을 설정하도록 한다. 대개 초당 20이나 24 프레임을 쓴다. 단순한 플래시 무비에서는 최소 12fps 정도를 주면 CPU의 부담을 줄이게 되어 낮은 컴퓨터 사양에서도 재생할 수 있게 된다.

4. 플래시에서 심벌(Symbol)을 흐릴 때 알파(Alpha) 대신에 틴트(Tint)로 변화시킨다. 이렇게 하면 CPU의 처리 시간을 줄일 수 있다. 예를 들어 엷거나 흰 배경 색에서 심벌을 페이드아웃 시킬 때 틴트를 흰색으로 주면 같은 효과를 얻을 수 있다. 대부분 알파를 사용하는 것보다 이 방법을 쓰는 것이 효과적이다.

5. 이즈인과 이즈아웃(Ease In & Ease Out: 플래시의 Modify 메뉴에서 Frame Motion과 Tweening 부분에 있다)의 차이를 알아야 한다. 움직임이나 중력을 표현할 경우 이 두 옵션을 적절히 사용하면 큰 효과를 볼 수 있다. 간단히 말하면 이즈아웃은 끝으로 갈수록 천천히 움직이는 것이고, 이즈인은 천천히 시작되어 빨라지는 것이다.

6. 오브젝트의 움직임을 끝내거나 화면에서 페이드아웃 시킬 경우 마지막에 빈 프레임을 넣어준다. 더 이상 쓰이지 않는 오브젝트가 화면에 남아있으면, 줌 효과를 주거나 다른 요소에 트위닝 효과를 줄 때 처리 속도에 영향을 주게 되어 애니메이션의 재생 속도가 느려질 수 있다.

7. 음향 효과 역시 훌륭한 애니메이션의 중요한 요소인데, 종종 무시된다. 사운드를 정확한 키프레임에 위치시키는 것은 정말 큰 차이를 가져온다. 공들여 사운드를 편집하고 애니메이션 이벤트와 일치하는 키프레임에 사운드를 넣는다.

8. BMP나 JPEG 위에서 형체를 애니메이션화 할 때. 먼저 BMP(혹은 JPEG)를 브레이크 어파트(Break Apart) 해준다. 이미지를 선택하고 그룹화 한 후 심벌로 변환한다. 효과(Effects) 메뉴에서 알파치를 99퍼센트 이하로 낮춘다. 이렇게 하면 벡터 그래픽이 움직일 때 비트맵이 몇 픽셀씩 움직이는 현상이 없어지고 자연스럽게 된다.

9. 캐릭터 애니메이션. 캐릭터를 몇 개의 부분으로 나눈다. 캐릭터가 얼마나 정교하게 움직일 것인지를 결정한 후 화면상에서 어떤 부분들이 움직이거나 이동할지를 정한다. 예를 들어 캐릭터를 눈 (깜빡일 때), 입과 턱 (립싱크 할 때), 머리, 몸통, 팔, 손, 다리, 등등으로 분리시킨다.

10. 아웃라인을 그리기 위해 플래시의 라인 도구를 이용할 때, 크기를 확대/축소하거나 줌 효과를 주면 경계선이 왜곡된다는 것을 알아야 한다. 가장 가는 선(hairline)의 경우 100 퍼센트에서는 매우 자세하게 나타나지만 이미지의 크기를 축소하면 선이 너무 굵어진다. 그러므로 작은 이미지는 너무 자세히 그릴 필요가 없다. 파일 크기만 커진다.



--------------------------------
흡인력 있는 콘텐츠
--------------------------------

' 흡인력 있는 콘텐츠(Sticky contents)'라는 말은 오히려 다르게 해석될 의미가 있는 말이지만, 이제는 확실히 굳어진 인터넷 용어 중의 하나가 되었다. 웹사이트에서 게임이나 재미있는 장치들을 제공해서 방문객들이 오랫동안 머물게 하고 재방문하도록 하는 수법은 몇몇 웹 디자인 대행사들 사이에서 거의 예술의 수준으로 끌어올려지고 있다. 이 분야의 유명한 선두 주자의 한 명인 브렌든 도즈(Brendan Dawes)는 전에 Subnet에서 일했고 지금은 맨체스터에 있는 마그네틱 노스의 제작 감독으로 있다. 그의 열 가지 팁을 들어보자.

1. 콘텐츠를 자주 업데이트한다. 콘텐츠가 항상 똑같다면 아무도 그 사이트를 찾지 않을 것이다. 그러려면 헌신적인 편집자들로 이루어진 팀이 필요하다. 만약 작은 회사나 집단일 경우는 방대한 주제의 콘텐츠를 보유하고 있는 [w] www.moreover.com 등의 사이트와 계약을 맺고 콘텐츠를 제공받을 수도 있다.

2. 방문객에게 회원 등록을 하게 하고 사이트의 업데이트 소식을 이메일로 알려준다. 왜 회원 등록을 해야 하는지와 회원 등록을 할 경우의 이익, 그리고 회원의 이메일 주소를 다른 곳에 누출시키지 않는다는 것을 알려준다. 하지만 꼭 회원 등록을 하지 않아도 사이트를 이용할 수 있다는 것을 확실히 해둔다. 그렇지 않으면 사람들은 사이트를 외면한다.

3. 플래시 기반의 사이트를 만들 작정이라면, 첫 페이지만은 빨리 뜨도록 하는 것이 좋다. 방문객들이 콘텐츠에 흥미를 갖게 된 후 다른 섹션들에 좀더 무거운 콘텐츠를 올려도 된다. 방문객들이 뭔가 흥미를 느낄만한 것이 있다는 사실을 일찍 깨닫도록 하라는 것이다.

4. 사이트에서 게임을 제공한다면, 최고 점수를 보여주는 페이지를 만들어서 게임에 들이는 사용자들의 노력을 기록할 수 있도록 한다. 이렇게 하면 사용자들은 그 사이트에 다시 들어와서 자신이 몇 위나 되는지 확인하게 된다.

5. 사이트에 뭔가 독특한 것을 넣어서 사람들이 그 기능을 사용하기 위해 사이트를 방문하도록 만든다. 이 방법은 사이트가 니치 서브젝트(niche subject: 규모는 적지만 시기 적절함과 독특함으로 인해 수익 가능성이 있는 분야)에 관한 것일 때 특히 효과적이다. 사이트에서 제공하는 동시 메시지 서비스나 메시지 포럼 같은 것이 부가 서비스의 좋은 예이다. 사이트에 메시지 포럼을 넣는 것은 충분한 수의 고정 방문객이 있을 경우, 항상 새로운 읽을거리가 있다는 것을 의미한다.

6. 다른 사이트들에서 제공하는 유틸리티를 사용하면 컨텐츠를 항상 새롭게 유지할 수 있다. [w] www.blogger.com에서는 멋진 웹 로그 유틸리티(log utility)를 제공한다. 이 유틸리티를 자신의 사이트에 붙일 수 있고, 지난 로그들을 관리할 수도 있다.

7. 컨텐츠에 쏟는 노력의 일부를 비슷한 성향의 사람들로 이루어진 커뮤니티를 구축하는데 들여보자. [w] were-here.com 같은 사이트가 어떻게 플래시 세계에서 성장했는지를 살펴보라.

8. 사이트에 검색 기능을 넣는다. 사람들은 특정 컨텐츠를 빨리 찾으려고 할 때 메인 내비게이션 도구를 사용하기보다는 검색을 선호한다. [w] www.atomz.com를 보라. 이 사이트는 정말 훌륭한 검색 엔진을 무료로 제공하는데, 플래시 파일에 들어간 텍스트까지 검색할 수 있다.

9. 사람들은 자신의 의견을 피력하는 것을 좋아한다. 웹사이트에 관련된 이슈에 대해 투표나 여론 조사 등의 기능을 넣어보라.

10. 웹은 매우 인터랙티브한(대화형) 매체라는 것을 기억하라. 즉, 어떻게 하면 사용자를 사이트의 경험에 몰입하도록 할 수 있는지에 관해 항상 염두에 두고 있어야 한다.



--------------------------
음악과 음향 효과

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


웹디자인에서 가장 간과되고 있는 부분이 바로 소리일 것이다. 디자이너들은 대개 시각적인 경험에만 초점을 두고 만다. 시각적인 경험이 가장 중요한 것은 분명하지만, 사이트를 정말 기억에 남도록 만드는 것은 음향 효과와 음악이다. 이 부분은 사이트를 향상시키거나 완벽하게 만드는 한 방법이다. 훌륭한 사이트들은 대부분 뛰어난 청각적 요소를 써서 사용자 경험을 마무리한다. 다음의 팁들은 영화와 TV, 웹을 위한 사운드 디자인을 전문으로 하는 아마데우스 미디어의 로빈 커쇼우(Robin Kershaw)가 제공한 것이다.

1. 왜 음악 혹은 소리를 사용하려는지 확실히 한다. 적절한 사운드는 사이트의 분위기에 놀라운 효과를 주며 독특한 선율은 사이트의 인지도를 높일 수 있다. 인텔의 로고와 멜로디는 따로 떼어서 생각할 수 없다. 이런 것을 오디오 브랜딩(audio branding)이라고 한다.

2. 사이트에 사운드를 사용하는 것은 전체적 디자인의 한 부분이라는 것을 명심하도록. 사운드가 단순히 장식적으로만 쓰인다면 오히려 신경 거슬리는 것이 될 수 있다. 사용자 경험을 염두에 두도록 한다.

3. 관객을 신중히 고려한다. 다운로드 속도 때문에 사용자의 모뎀 유형에 따라 사운드를 사용할 수 있는 범위가 달라진다. 관객의 연령대와 통계 수치 역시 고려해야 한다. 연금을 받는 사람들에게 댄스 음악을 트는 것은 아무 소용이 없다. 그들은 그 사이트를 떠날 것이다.

4. 다운로드 시간을 최소화하기 위해 스테레오를 모노로 바꾸는 것을 고려해 본다. 말 그대로 파일 사이즈가 반으로 줄어든다. 하지만 어떤 종류의 음악은 다른 것들보다 음질이 더 많이 손상된다는 것에 주의해야 한다. 압축 정도에 따라서도 음질이 많이 달라진다.

5. 음악 외에도, 멋진 화면 해설을 사이트에 잘 결합한다면 사이트의 가치를 더욱 높일 수 있다. 많이 들어갈 필요는 없고, 그저 페이지가 업데이트 되었다던가 하는 발표 정도면 좋을 것이다 (그밖에도 상상의 나래를 마음껏 펼쳐보자).

6. 화면과 소리를 어떤 방식으로든 동기화 할 필요가 있다면 플래시를 사용해야 한다. 플래시에서 사운드를 사용하는 방법에는 두 가지가 있다. 이벤트 사운드와 스트림 사운드이다. 플래시에서 이벤트 사운드는 어떤 키프레임에 도달하면 재생되기 시작해서 애니메이션과는 전혀 무관하게 끝까지 재생된다. 스트림 사운드는 프레임 단위로 재생되므로 프리로드(Preload) 시간이 짧다.

7. 프리로딩(이벤트) 사운드를 사용할 것인지 스트리밍을 사용할 것인지 결정하기 위해서는 사이트의 나머지 부분들을 살펴보아야 한다. 애니메이션을 어떤 식으로든 프리로드 할 작정이라면 사운드 역시 프리로드 해야 한다. 사이트의 첫 페이지가 빨리 뜨기를 원하거나 또는 긴 음악을 넣고 싶다면 스트림 사운드를 사용하라. 몇 초간의 프리로딩 후에 음악이 재생되기 시작할 것이다. 하지만 네트웍이 혼잡할 경우 소리가 끊길 수도 있다는 점을 염두에 둘 것.

8. 화면과 음악이 동기화되지 않아도 상관없다면 좀 더 진보된 압축 방법을 쓸 수 있다. MP3(플래시 최고의 익스포트 옵션이다)가 가장 적당하지만 음악만 있을 경우 QDesign Music을, 목소리만으로 된 경우에는 퀄컴 PureVoice를 써보는 것도 좋다.

9. 상대적으로 다운로드 시간이 적게 걸리는 반복적인 음악의 경우 동기화된 사운드와 스트림 사운드를 결합하는 것도 생각해볼 수 있다. 플래시에서 스트림 사운드는 애니메이션 재생률을 떨어뜨릴 수 있으므로, 적절한 곳에 위치시키거나 분리된 레이어에 동기화된 사운드를 반복해서 사용하면 된다.

10. 항상 전문가가 제작한 음악을 사용하도록 한다. 작곡가에게 곡을 구입하던가 기존의 라이브러리 음악을 구입한다. 저작권을 갖지 않고 음악을 사용할 수는 없다. 음악을 도용하는 것은 여러 작곡가들을 죽이는 일이며, 나중에 값비싼 대가를 지불하게 될 수도 있다.


--------------------------
스트리밍 미디어
--------------------------


최근 3 년 동안 우리는 브로드밴드(Broadband : 廣帶域)의 가능성에 관해 들어왔고, 근사한 웹 비디오 솔루션의 미래를 믿어왔다. 온라인 관객들이 얼마나 빨리 브로드밴드 서비스로 전향하고 있는지는 미지수이지만, 디자인 관점에서 볼 때 작은 비디오가 사이트에 움직임과 컬러, 그리고 청각적인 재미를 가져다주는 큰 역할을 한다는 것은 확실하다. 관객을 지루하게 만들지 않고 영상을 제공하려면 스트리밍 미디어를 써야 한다. 최대의 온라인 엔터테인먼트 사이트인 아이필름이 말하는 스트리밍 미디어에 관한 열 가지 팁을 들어보자.

1. 소스의 질이 낮으면 압축 결과도 좋지 않고, 웹사이트의 질 역시 떨어진다.

2. 항상 최고 해상도에 최대 프레임 사이즈, 최고 프레임 비율(재생률)로 캡처한다. 비디오를 캡쳐할때 가장 좋은 기준은 720×480 픽셀의 해상도, 29.97fps로 DV FireWire 에서 캡쳐받는 것이다.

3. 아이필름이 추천하는 편집과 캡쳐용 소프트웨어는 맥에서 사용되는 파이널 컷 프르(Final Cut Pro)와, Mac과 PC에서 사용할 수 있는 어도비 프리미어(Adobe Premiere) 6.0이다. 압축용 소프트웨어로는 단연코 테란(Terran)의 Cleaner 5를 추천한다.

4. 이제 웹에 올릴 포맷을 결정해야 한다. 주요 포맷으로는 리얼미디어 (Real 8), 퀵타임 (Sorenson 2, 버전 3은 베타 테스트 중), 윈도우즈 미디어가 있다. 이 포맷들은 각각 장단점을 가지고 있다. 이 세 개의 포맷을 모두 시험해본 후 어떤 것이 가장 좋을지 결정하는 것이 좋다.

5. 잘리는 현상(cropping). 결과물을 보면 처음과 끝은 괜찮은 것 같은데 중간의 곳곳에서 일정치 않게 잘리는 현상이 발생하는 경우가 있다. 문제가 있으면 설정을 조절하든가 다른 포맷으로 압축하는 것을 고려해본다.

6. 화면의 가로 세로 비율을 염두에 둘 것. 만일 DV와 같이 일반 화면 비율이 아닌 포맷의 영상을 캡쳐했다면, 압축할 때 4:3의 비율에 맞게 크기를 조절해 주어야 한다. 표준 화면 비율은 640×480, 320×240, 240×180 등이 있다.

7. 화질에 상관없이 파일 크기를 줄일 수 있는 두 가지 방법이 있다. 첫째는 프레임 비율을 줄이는 것이다. 15-12fps 정도면 200-300k의 스트리밍 파일이 나온다. 6-10fps로 낮추면 낮은 대역폭(56k 모뎀)에서 재생할 수 있을 정도의 크기인 100k 정도로 파일 크기를 줄일 수 있다. 둘째 방법은 화면 비율/해상도를 줄이는 것이다. 320×240이나 240×180 픽셀 사이의 동영상은 200-300k 정도의 파일 크기로 압축된다. 이것을 160×120이나 240×180 픽셀로 줄이면 파일 크기는 100k 정도로 줄어든다. (화면 비율은 4로 나누어지는 숫자이어야 하며, 그렇지 않은 수를 지정했을 경우는 되지 않는다.)

8. 56k용 스트리밍 파일에서 압축 대역폭은 36k를 넘어서는 안된다. 대부분의 전화선은 56k 모뎀 사용자들에게 56k의 속도를 모두 지원하지 않기 때문이다.

9. 클리너 5(Cleaner 5)의 블랙 리스토어(Black Restore) 필터를 써보자. 이 필터는 화질을 좀더 향상시켜주는 반면 어두운 부분의 세밀함은 손상시킨다. 오디오 쪽에서는 오디오 리버브(Audio Reverb) 필터를 쓰면 오디오 압축으로 인해 생기는 잡음들을 완화시켜준다.

10. 56k용으로 압축할 때는 16k의 Low Pass 필터를 쓰면 고음 부분의 잡음이 줄어든다.



----------------
3D화 하기
----------------
소 프트웨어 개발자들의 주장에 일리가 있다면, 웹 3D는 세상을 구원(?)하고 만연해 있는 따분함을 치료할 것이며, 우리 모두는 영원히 가상의 즐거움이라는 사이버 세계에서 살게 될 것이다. 이상에 가까운 얘기는 그만하고. 사실 웹 3D 솔루션을 선택하는 것은 웹 디자이너가 직면한 가장 어려운 문제 중의 하나이다. 어쨌든 몇몇 디자이너들은 웹에서 훌륭한 3D 작품들을 선보이고 있다. 디지트 런던의 제작 감독인 닉 크리스티어(Nick Cristea)에게 웹 3D에 대한 조언을 들어보자.

1. 적절한 근거에 의해 3D를 사용하라. 3D를 쓰는 것이 웹사이트의 분위기를 돋구는 편한 방법인 것처럼 보일 수도 있지만, 사이트 전체에 꼭 필요한 부분이라고 판단될 때에만 3D를 사용해야 한다. 형편없는 아이디어나 컨텐츠의 부족을 메우는 방법으로 3D를 사용한다면, 그건 정당화될 수도 없고 팔릴 수도 없다. 프로젝트에 왜 3D를 사용해야 하는지를 대략 정리한다. 3D를 사용하는 것이 정말 최선의 방법인지 스스로에게 질문해 본다.

2. 최적의 3D 도구를 선택한다. 리얼 3D이어야만 하는가? 특정 플러그인을 꼭 다운로드해야만 하는가? 저작권 문제는 어떻게 되나? 그 작업을 위해 특정 개발자를 고용해야 할 필요가 있는가? 현재로서는 플래시가 가장 많이 쓰이는 유일한 플러그인이므로 가능하다면 플래시를 쓰는 것이 좋다. 인터넷에서 액션스크립트 3D 엔진을 구할 수도 있고, 프레임 단위의(frame-by-frame) 애니메이션으로 3D처럼 보이게 할 수도 있다. 시점을 움직이거나 아바타(Avatars)를 바꾸거나 그림자나 조명을 실시간으로 바꾸어야 한다면 '진짜' 3D 플러그인을 쓸 필요가 있다.

3. 디자인 초안을 만든다. 줄거리, 분위기, 배경, 속도, 드라마 등은 3D 도구를 사용할 때 모두 중요한 요소들이다. 일관성 있고, 잘 고안된 상황을 만들어 방문객이 몰입할 수 있도록 해야 한다. 시각적인 요소들의 관계를 적절히 조합하고, 테스트한다.

4. 3D 작업의 장점은 단시간에 구도를 여러 가지로 바꿔볼 수 있다는 점이다. 단순한 오브젝트를 만들어 구성과 애니메이션을 테스트한다. 카메라 각도를 이리저리 옮겨보거나 움직이는 속도를 바꿔보거나 한 장면 내의 오브젝트들간의 관계를 다양하게 설정해 본다. 새로운 아이디어를 발견하는데 이런 시도들이 유일한 방법일 때도 있다.

5. 대략적인 모델을 사용해 구성과 줄거리의 감을 잡은 후 웹에서의 기본 원형을 만든다. 모든 종류의 트라이얼이나 데모 플러그인에서 작업한 시안이 구현 가능한지 테스트해본다. 실제로 만들어보거나 기본 원형을 만들어보아야만 무엇이 가능하고 무엇이 불가능한지를 알 수 있다.

6. 모델을 최적화한다. 3D 웹 콘텐츠의 최종 결과물이 어떤 포맷이든, 최적화의 규칙은 모두 같다. 모델이 세밀하고 복잡해질수록 파일 사이즈는 커진다. 처음부터 아이디어와 디자인을 단순하게 하고, 파일 사이즈를 계속 체크한다.

7. 3D 요소들을 내보낸다. 일부 플러그인은 모델링 단계에서 특정한 방법을 써야 한다. 3ds Max는 현재까지 가장 많이 지원되고 있으며, 대부분의 플러그인 기술을 지원하는 고유 애드-온(add-on: 특정 기능 보강을 목적으로 만든 보조 소프트웨어)들이 무료로 나와 있다. 하지만 비싸다. LightWave는 훌륭한 VRML 내보내기 기능을 가지고 있지만 특정 플러그인이 없다. 스위프트 3D(Swift 3D)나 아모피움 프로(Amorphium Pro)는 저렴한 가격으로 3D SWF 파일을 만들 수 있는 좋은 프로그램들이다. 어떤 소프트웨어를 사용하든, 모델을 내보내어 초기에 테스트를 한 후, 한 장면을 좀더 작은 여러 개의 부분으로 나눈다.

8. 최적화와 사이트 구축. 사이트를 스트리밍할 수 있는 요소와 배경에서 로딩될 요소, 그리고 필요할 때만 로딩되는 요소 등, 몇 개의 레이어로 분리시킨다. 모든 로딩 시간을 계산하고 조절하여 되도록 사용자가 로딩 시간을 느끼지 못하도록 한다.

9. 파일 크기가 문제가 되거나 기술적으로 문제가 있을 때 창조적으로 접근하지 못하고 결과물의 질을 떨어뜨리는 경우가 있다. 사용하고 있는 도구를 충분히 테스트하고 기능에 관해 잘 알아야 이러한 문제들을 해결할 수 있다. 단순한 팔레트와 셰이프, 텍스쳐 매핑을 사용하고, 하나의 셰이프나 오브젝트들을 반복해서 쓴다.

10. 한가지 도구로 모든 것을 해결할 수는 없다. 여러 도구를 결합해서 사용하면 좀더 새롭고 흥미로운 결과물을 만들어낼 수 있다. 30일 짜리 데모 버전들을 잘 이용해서 최근의 도구와 기능들을 익혀 시대에 뒤떨어지지 않도록 한다.




-----------------------
난해한 백-엔드
------------------------

데 이터베이스 서버를 다루는 것과 그것을 웹사이트와 연동시키는 것은 그리 재미있는 일은 아니다. 하지만 이 작업이 제대로 되면 웹디자이너들의 작업 시간을 많이 줄일 수 있다. 효율적으로 설계된 데이터베이스를 기반으로 콘텐츠가 자동으로 업데이트 되기 때문에 디자인과 씨름하지 않아도 된다는 말이다. 어려운 것은 그 데이터베이스를 초기에 정확하게 설계해야 한다는 점이다. 이후에 변경이나 재구축하려면 시간 낭비가 막대하다. 데이터베이스와 사이트 구축 및 통합을 전문으로 하는 웹디자인 집단인 콘챙고에게 마지막 열 가지 팁을 들어보자.

1. 디자인과 개발을 분리시키지 말 것. 복잡한 데이터 기반의 사이트를 효율적으로 만드는 것은 훌륭한 디자인이나 잘 짜여진 코드만으로 되는 것이 아니다. 두 부분이 긴밀하게 협력해야 한다. 디자이너들은 개발 팀과 함께 일해야 한다. 개발자들이 디자이너의 의견을 무시하면 사이트는 위험에 빠지게 된다.

2. 콘텐츠가 자동으로 바뀌는(dynamic) 사이트는 최소한의 디자인 템플리트가 대부분의 페이지들에 적용되는 경우에 한해서 가장 효율적으로 운영된다. 이 점이 창의력을 제한하는 것은 아니다. 개발 팀은 다르게 얘기하겠지만 템플리트는 딱딱한 망으로 짜여진 레이아웃을 의미하는 것은 아니다. 템플리트는 여러 유형의 페이지들에 공통으로 쓰이는 요소들을 구분해주는 것이다.

3. 데이터베이스에 필요한 테스트 데이터를 가능한 빨리, 그리고 가능한 실제 데이터에 가까운 것으로 받는 것이 좋다. 데이터는 사이트 컨텐츠의 대부분을 차지하면서도 대개 맨 마지막에야 확정되기 때문에 문제가 생긴다. 누군가 고객과 협조해서 테스트 데이터를 받아내지 않는다면 전체 프로젝트가 위험에 처한다. 실제 데이터가 시스템에 입력될 때 대부분의 문제들이 발생하기 마련이다. 실제 데이터를 초기에 받아내지 못한 경우, 그 사이트는 사상누각이다.

4. 관리자 페이지를 소홀히 하지 말 것. 사이트에 훌륭한 데이터를 넣는 것만큼이나 그것을 보여주는 것도 중요하다. 관리자 사이트를 쓰기 쉽고 직관적으로 만드는 것은 프론트-엔드(front-end: 사용자들에게 직접 보여지는 화면)만큼이나 중요한 문제다. 디자이너들과 유용성(Usability) 관련자들에게 관리자 화면을 디자인하게 하고 카피라이터에게 사용법을 만들도록 한다.

5. 플래시로만 제작된 사이트에서 그림이나 텍스트를 업데이트할 때, 플래시 제너레이터(Flash Generator)가 쓰기 어렵거나 너무 비싸다면 다른 쉬운 방법이 있다. 이미지를 SWF 파일로 저장한 후 LoadMovie와 Target 액션을 써서 이미지를 화면에 불러들일 수 있다. 카피 텍스트는 메모장에서 TXT 파일로 저장한 후 플래시 무비에서 자동으로 읽어들일 수 있다.

6. 사이트에 사용될 패키지와 플랫폼을 고를 때 신중해야 한다. 특정 벤더에 연연하다 보면 고객의 요구 사항을 고객에게 맞지 않는 것에 억지로 끼워 맞추는 결과를 가져온다. 여러 패키지들을 신중하게 알아보도록 한다.

7. 백-엔드는 알고 보면 그리 어려운 것이 아니다. 프론트-엔드나 백-엔드는 문제를 복잡하게 만드는 용어일 뿐이다. 프론트-엔드와 백-엔드, 디자인, 그리고 개발을 가능한 밀접하게 연계시킨다. 다양한 집단의 사람들이 서로 협력하도록 한다면 그들이 백-엔드에 대한 그들의 두려움을 없앨 수 있다.

8. 복잡한 백-엔드 솔루션을 개발할 때 프로젝트 매니저가 기억해야 할 사항은 다음과 같다. (1) 디자이너가 '다 끝냈다'고 할 때 절대 믿지 말 것. (2) 개발자가 '다 끝냈다'고 할 때 절대 믿지 말 것. (3) 테스트: 위 두 가지 사항을 테스트 할 것.

9. 확장 가능하고 기능적인 관계형 데이터베이스를 고안하라. 어떤 데이터를 입력하든지 문제없다고 생각될 때까지 코딩을 시작하지 않는다. 처음에 이 문제를 확실하게 해두는 것이 제대로 작동되는 사이트와 그렇지 않은 사이트의 차이를 만든다.

10. 고객 사이드 파일들을 구조화해서 가능한 하나의 코드를 반복 사용하도록 한다. 예를 들어 ASP 페이지에서는 템플릿에 #include 파일들을 사용한다. 이렇게 하면 코드 구조가 간단해지고 나중에 유지 보수하기도 쉬워진다. 가능한 모듈과 오브젝트라는 관점에서 생각하라.

 

'IT트랜드 & 정보' 카테고리의 다른 글

웹디자이너 성공전략!!!  (0) 2008.03.26

웹디자이너 성공전략!!!   

인 터넷시장은 아주 빠르게 형성되고 소멸하는 특성이 있다. 이러한 특성은사용자 마음의 변화, 즉 사이트에 대한 기호가 쉽게 바뀌기 때문이다. 이것은 사용자가 특정한 목표에 따른 사이트 선별에 있어 매우 다양한 사이트를 검색해야 하는 어려움이 있기에 사용자의 부담감이 최소화된 방향으로 컨텐츠를 개발 해야 함을 말하는 것이다.
 초반기의 사이트는 화려한 시각적 효과로서 강한 인상으로 어필하여 다시금 사이트를 찾게 했지만, 보다 빠른 시간에 최적의 정보를 찾아야 하는 시점에서는 우선적으로 빨리 뜨고 내용을 쉽게 찾을 수 있는 사이트가 선택되어 진다. 이러한 사용자의 기호에 부합되면서 성장해온 사이트들은 사용자의 눈 높이를 생각하면서 조금씩 사이트를 변모시킴으로써 지속적으로 고정 사용자를 유치할 수 있는 것을 쉽게 볼 수 있다.
 아무리 좋은 컨텐츠를 가지고 시작한 사이트들도 시시각각 변화하는 사용자의 기호를 간과함에 따라 서서히 소멸되어 가는 것을 본다. 안타깝지만 제한된 시장 속에서의 승부는 냉정한 법, 나비의 성충이 껍질을 벗고 하늘로 날아가기까지의 시련 이후 하늘을 날며 보다 큰 세상을 바라볼 수 있는 것처럼 사이트의변모는 충분한 가치가 있다.
 21세기가 시작된 시점에서 현재 웹은 우리가 개발하고자하는 컨텐츠를 효과적으로 사용자에게 제시 할 수 있는 환경을 충분히 갖추어 놓지 못하고 있지만, 점차 그 한계를 극복하고 있다. 이러한 기술적 향상과 더불어 확대되어 가는 사용자의 온라인에 대한 기호는 인터넷비즈니스를 전개하는 데에 있어서 무한한 기회와 발전가능성을 제시해 준다.
 온라인, 오프라인 시장조사는 인터넷 환경에 대한 전반적인 이해가 우선 전재되어야 하고,다양한 온라인, 오프라인 시장에 대한 통계와 각 산업별 인터넷 비즈니스의 특성이나 유형이 분석되어야한다.


SI의 활용도(SITE IDENTITY)의 활용도
 
 현재 많은 밴쳐 기업들이 코스닥에 상장되면서 제일 먼저 준비하는 것이 회사의 로고와 캐릭터 입니다. 이는 회사의 이미지 메이킹 작업으로서 보다 대중에게 쉽고, 친근하게 다가가기 위한 하나의 방편입니다. 이것을 CI(Corporation Identity)라고 하는데 이는 오프라인과 온라인에서 회사의 얼굴로서 매우 중요한 역활을 하고 있음은 부인할 수 없는 사실입니다. 그리고 인터넷이라는 매체가 새로운 미디어로 부상하면서 홈페이지 또한 회사의 얼굴 마담 역활을 하게 되었지요. 예전 같은면 카다로그를 통해 그 회사에 대한 정보를 간략하게 얻을 수 있었지만 홈페이지가 보편화 되어 있는 요즘 모든 정보를 홈페이지를 통해 얻을 수 있게 되었습니다.
 홈 페이지 구축이 어떻게 되어 있는가 만으로도 회사의 비젼과 현 상황등을 추측할 수 있게 되었스니다. 따라서 오프라인 상에서의 이미지 메이킹 작업도 중요하지만 현재에는 홈페이지 상에서의 이미지 메이킹도 상당히 중요한 역활을 합니다.
 그러므로 현재 홈페이지에 적용된 심볼이나 로고 캐릭터등이 적절하게 사이트와 조화 되어 사용되었는지를 먼저 분석해 보아야 할것 입니다. 홈페이지는 단순히 정보공유의 장 만이 아니라 광고 매체로서의 역활도 가지고 있음을 명심해야 할것입니다. 


메인 페이지와 서브페이지와의 일관성

 
메인페이지는 홈페이지의 얼굴이며 그 사이트를 들어갈지 안들어갈지를 판단하는 기준이 되는 페이지 입니다. 또한 sub페이지가 어떻다는 암시이기도 합니다. 이러한 이유로 많은 사이트들이 플래쉬 애니메이션을 통한 화려함과 역동적인 방법을 통해 네티즌들에게 호기심을 유발하러 애쓰고 있습니다. 또한 sub페이지는 그 홈페이지에서 전달하고자 하는 내용을 전달하는 실질적인 페이지들입니다. 이러한 두 역활을 담당하는 메인과 sub페이지가 서로 조화로운 결합을 이루었을 때 좋은 홈페이지가 만들어 집니다. 너무 메인의 역동적인 면에 치우쳐 과다한 플래쉬 애니메이션이나 번쩍번쩍하는 효과를 쓴 사이트들이 많이 있습니다. 그러나 이것은 너무나 위험한 행동입니다. 대부분의 서퍼들은 제일먼저 로딩이 오래 걸리는 홈페이지를 가장 싫어 합니다.
 따라서 적당한 효과로서 sub페이지로 자연스럽게 유도할 수 있도록 또한 메인과 sub는 서로의 디자인 일관성을 반드시 갖추어야 합니다. 서로가 하나의 사이트라는 인식을 시켜줌으로써 사용자의 혼란을 피해야 합니다. 가령 어떤 사람이 상위는 양복을 걸치고 밑에는 한복을 입었다고 상상해 보십시오. 웃음과 동시에 놀리고 싶으실 것입니다.
 웹사이트 디자인도 이와 마찬가지 입니다. 결국 웹디자인이라는 것은 웹브라우저에 코디를 하는 코디네이션과 흡사한것입니다. 어떤 옷을 입히느냐에 따라 촌스러운 홈페이지가 될수도 있으며, 세련된 홈페이지가 될수도 있습니다. 따라서 사이트를 디자인 측면에서 분석할때 이러한 면에서의 세밀한 검토가 요구됩니다.


어떠한 항목들이 검토대상인지 나열해 보겠습니다.

♣ 메인화면과 서브페이지간의 레이아웃은 큰 변화를 보이지 않는가
♣ 너무 통일성을 준 나머지 컨텐츠별로 차별화를 꾀하지는 못했는가
♣ 메뉴바의 위치가 심하게 변하는가
♣ sub항목에 로딩에 문제가 되는 플래쉬 애니메이션이나 자바 애플릿을 과도 하게 사용하지는 않았는가
♣ 항목별로 색상의 변화는 심하지 않은가

링크가 원활하게 이루어지고 있는가?
 
 웹디자인에서 무엇보다 중시되는 것은 사용자 위주라는 점입니다. 다른 디자인과는 틀리게 가장 대중적이야 하며 사용하기 쉬워야 한다는 점입니다.개인 홈페이지나 아트를 추구하는 홈페이지라면 개인의 취향에 맞게끔 파격적인 레이아웃과 타이포그라피를 사용해도 무관 하겠지만 정보공유 위주의 사이트나 포탈사이트의 경우는 반드시 사용자 중심의 디자인이 우선시 되어야 한다는 점을 명심 하시시요.
 웹디자이너의 의무란 만들어낸 상품에 대해 하나라도 더 팔릴 수 있도록 디자인 하는 것입니다. 작업을 하다 보면 클라이언트와 많은 충돌이 발생하는데, 그 이유는 디자이너들은 조금이라도 예술적인 면에 치중하게 되고 클라이언트들은 객관적인 면에서 바라본다는 점입니다. 이를 잘 조화시킬 수 있는 디자인이 가장 훌륭한 웹디자인이 되겠지만 그렇지 못할 바에는 차라리 대중적인 디자인이 났다고 말씀 드리고 싶습니다.
  예로서 페이지 자체를 디자인 할 때 큰 사이즈의 폰트로 구성된 화면은 조금만 폰트로 구성된 홈페이지보다 더 촌스러워 보입니다. 그러나 이 사이트가 40대 이상의 사용자들을 타겟으로 하는 사이트라고 할 때 어느것이 더욱 더 적합하겠습니다.
 저도 디자이너란 직업을 가지고 있는 한 사람으로서 당연히 조그만 폰트로 깔끔하게 구성된 페이지를 선호할것입니다. 그러나 그것은 디자이너 개인만의 욕심입니다. 디자이너는 적어도 그 사이트가 조금이라도 유저들을 끓어들이수 있도록 책임을 다해야 하는 의무를 가지고 있습니다.
이렇듯 인터페이스 구성에 있어 여러가지 측면에서 연구된 디자括?가장 최상의 디자인이 아닐까 싶습니다.


♣ 타겟층에 맞게끔 폰트 사이즈를 적절하게 사용하였는가
♣ 글자를 알아보기 쉽게끔 배경색과 글자색의 대비가 잘 되었는가
♣ 아이콘은 직관적으로 알 수 있도록 디자인 되어 있는가
♣ 그림파일의 용량이 너무 커서 로딩이 오래 걸리지는 않았는가
♣ 주요테마를 쉽게 눈에 띄게 하였는가
♣ 검색이 편하게 구성되었는가


사이트 관점을 유저가 아닌 회사 조직에 맞추지 않았는가?

 
 네티즌의 관심은 사이트에 들어가 자신이 원하는 정보와 사이트에서 제공하는 서비스에 관심이 있다. 그러나 많은 사이트들에서 단골메뉴로 내놓는 것이 바로 사장님 인사말이같은 네티즌의 관심과는 동떨어진 회사의 조직에 관한 내용들이 많이 담겨져 있다. 사내용 홈페이지로 이용한다면 별 문제가 안되겠지만 적어도 네티즌을 고려한 홈페이지라면 회사측의 관점보다는 네티즌의 관점에서 바로보는 지혜가 필요하다.
 네티즌들은 사장님의 근엄한 인상이나 회사내에서 벌어지고 있는 일에는 관심이 없다. 그러한 페이지를 만들려고 노력하는 시간에 조금이라도 네티즌을 끌어들일 수 있는 내용이 없을까 고민하는 편이 더욱 나을 듯 싶다. 우리네 사장님들은 인터넷에서 보이는 본인의 모습에 상당히 민감해 하고 있기 때문에 인사말 페이지를 여러번 뜯어 고치는 경우가 많다. 그러나 여러분이 회사를 위하거나 여러분이 제작한 사이트가 온라인상에서 빛을 발하고자 한다면 이러한 불상사는 막아 보는 것이 어떨까 싶다.
필자도 여러 홈페이지를 서핑하면서 인사말이 얼마나 잘 되어졌나 살펴본 적이 거의 없다. 그 회사에서 무슨 서비스를 제공하는지에 더욱 관심이 많다. 또한 페이지의 인터페이스는 어떻고, 디자인은 어떤지 그러한 것들을 보기 위하여 사이트를 찾아가지 사장님 얼굴이나 회사의 잡다한 회사내 사건들을 살펴보기 위하여 들어가지는 않는다.


목과 타이틀이 부합되는가?
 
 정말 어이없는 일이 아닐 수 없다. 검색엔진을 이용하여 웹디자인을 검색하고 사이트를 찾아 들어갔는데 전혀 다른 사이트가 나오는 경우가 종종있다. 또한 사이트의 이름은 컴퓨터 관련 이름이면서 사이트의 내용은 애완견에 관한 것이라면 사람들은 내용을 보지도 않고 지체 없이 나가 버릴 것이다.
 이렇듯 사이트의 이름과 내용이 부합하지 않는 사이트는 기획부분부터 완전히 잘못된것이다. 또한 이러한 일이 발생했을때 그건 이미 인터넷 마케팅에 있어서 실패한 경우라 볼 수 있다. 그저 홈페이지만 인터넷상에 올라가있으면 되지않겠냐는 견해를 가진 사람들이 많이 있다. 그러나 그건 너무도 잘못된 발상이 아닐 수 없다. 왜냐하면 네티즌들은 잘못된 것이 있으면 그냥 넘어가지 않기 때문이다. 차라리 홈페이지를 온라인상에 올리지 않았으면 안 얻어 먹었을텐데...라는 생각이 들것이다.
 조그만한 중소기업들이 인터넷상에 집을 지으면서 회사의 이미지가 상승하기를 바란다. 그러나 제대로된 홈페이지를 짓지 못한다면 이미지 상승이 아니라 기존에 가지고 있던 이미지마저 삭감될것이 뻔하다.


링크가 원활하게 이루어지고 있는가?
 
 인터넷은 서비스이다. 바로 네티즌을 위한.....그렇기 때문에 아주 작은 부분이라도 세심한 배려가 필요하다. 사용자가 사이트에 접속하여 충실한 회원이 되기까지는 자신이 기대했던것 보다 더 좋은 느낌을 받았을 때 가능한 일이다. 보통 홈페이지를 만들게 되면은 추천사이트, 관련사이트등의 이유로 타 사이트로 접속할 수 있도록 설계한다. 그러한 설계를 하는 이유는 네티즌들에게 보다 폭넓은 서비스를 제공함으로써 사이트에 대한 신뢰도와 관심을 유도하기 위해서이다. 그러나 그러한 이유로 링크를 시켜놓은 부분들이 제 역할을 하지 못할때 사이트의 이미지를 깎아먹는 세균같은 역할을 한다. 아주 작은 부분까지 세밀하게 관심을 기울였다면 사이트의 신뢰도는 그만큼 축척 될 것이고 연결시켜 놓은 사이트들의 관문역활로서도 트래픽을 증가 시키는 방법이 될 수 있다.


사용자가 원하는 정보를 쉽게 찾아 갈수 있도록 만들어 졌는가?
 
너무도 많이 강조되어도 지나치지 않은 부분이 바로 유저 인터페이스와 네비게이션 부분이다.
  사이트를 누구의 입장에서 설계했느냐에 따라 성공과 실패가 좌우된다. 사용자를 위한 사이트라면 최대한 사용자의 편의를 고려한 인터페이스와 네비게이션이 고려되어야 할것이다. 한 1~2년전에 성인용 사이트에 접속한 일이 있는데 원하는 정보를 찾기 위하여 약 30분을 헤매다 포기한적이 있다. 지금 이 글을 읽고 있는 분이 남자분이라면 아마 한 두번쯤은 경험해 봤으리라 추측된다.접속 실패 후 다시는 그 사이트를 찾아가는 일이 없어졌다.
 그만큼 원하는 정보를 얼마나 빨리 찿을 수 있냐는 사용자를 편안하게 만들어 주는 중요한 요소이다.


파일에 대한 네이밍은 잘되있는가?

 
 사이트는 한번 만들어지면 끝이 아니다. 지금 필자도 한 사이트의 유지보수일을 담당하고 있는데 미칠 지경이다. 왜냐하면 사이트가 처음 구축될시 유지/보수 부분을 고려하지 않은 사이트맵과 파일 네이밍 때문에 그러하다. 하나의 파일을 찾기 위해서는 약 20분을 찾아 헤매야 한다. 이러한 일이 발생되지 않기 위해서는 스토리보드 작성 전에 파일 네이밍에 대한 작업이 미리 이루어져야 하며, 프로그램 개발자와 디자이너에게 공지시켜야 한다. 그래야만 향후 업그레이드 부분에 있어서도 시간을 줄일 수 있기 때문이다.


웹 환경에 맞게 끔 제작 되있는가?

 
 웹은 다른 매체들과는 많은 차이이점을 지니고 있습니다. 웹이 활성화 되기 전까지는 우리는 인쇄매체나 TV, CD매체를 통하여 정보에 접근할 수 있었습니다. 그러나 인터넷 시대가 되면서 기존 매체가 가지고 있던 다방향성, 일시적, 한시적 문제들을 해결하게 되었습니다. 따라서 기존의 매체들도 앞으로는 웹을 모방한 방향쪽으로 기술이 전개 되어 나가고 있습니다. 일례로 디지탈 티브이 역시 웹환경을 TV에 그대로 옮겨 싣는 작업쪽에 포커스를 맞추어 개발 되어지고 있습니다. 웹상에서는 그 기술과 환경에 맞게 다양한 정보를 여러가지 방법을 통하여 접근 할 수 있도록 배려 하고 있습니다. 웹을 통해 사용자들에게 DB화된 자료를 영구보존하여 인덱싱할 수 있도록 해 줄 수 있으며, 사용자 개인에 맞는 환경을 설정하여 개인별 정보 접근이 가능합니다. 또한 기존 매체들의 한시적 특성 때문에 시간이 경과하면 잊혀지거나 폐기되는 일이 많았습니다. 그러나 웹페이지를 통한 컨텐츠는 어떠한 형식으로도 보관이 가능하며 그러한 자료들로 인하여 사이트의 활성화를 가져 올 수 있게 되었습니다. 그러나 단순히 이미지와 텍스트로 구성된 홈페이지가 인터넷 상에 올라가 있다고 해서 제대로된 웹사이트라고는 할 수 없습니다. 위에서 열거한 사용자 중심의 사이트가 바로 고객이 원하는 사이트라고 할 수 있습니다.
 그럼 이러한 것들이 언제부터 고려 되어야 할까요? 바로 기획과정 부터입니다. 대개가 홈페이지를 제작할 때 홈페이지 제작기간을 3개월로 잡는 다면 기획 부분을 약 1주나 3주로 잡습니다. 그것은 빨리 결과물을 봤으면 하는 생각 때문이죠,
 홈페이지 제작에 있어 가장 중요한 부분은 사이트의 유무가 아니라 사이트의 질입니다. 따라서 기획에서 이러한 부분들의 대한 철저한 연구없이는 만들어 놔도 소용없는 홈페이지가 되기 싶습니다.
우 리가 홈페이지를 분석할 때 촛점을 맞추어야 하는 것은 얼마만큼 웹페이지 다운 사이트가 구축되었는지를 생각해 보는 것입니다. 페이지에 들어가는 아이콘의 모양이 중요한 거이 아니라 사이트를 사용자에게 얼마나 유리하도록 만들었는지가 중요한 요소입니다.


구축 목적에 부합하는가?

 
패션업체에서는자사 상품을 하나라도 더 팔기위해 상품 이미지 상승에 촛점을 맞추어홈페이지를 제작하게 되고, B2C사이트의 경우에는 사용자들이 손쉽게 상품을 구매할 수 있도록 만들어지게 됩니다. 결국 이것은 사이트를 운영하는 회사가 홈페이지를 통하여 얻고자하는 것이 무엇인지를 나타내는 것입니다. 패션업체서 온라인을 통해 옷을 팔려고 홈페이지의 촛점을 쇼핑몰처럼 꾸몄다고 해서 온라인을 통해 옷을 구매하는 사람은 그리 많지 않습니다. 옷이라는 특수성 때문에 직접 눈으로 확인하고 입어 본 다음 많이 구입하게 되는 것이 소비자 심리입니다. 이렇듯 홈페이지를 통해 얻을 수 있는 부분이 무엇인지를 정확하게 인지하고 생각하여야만 제 기능을 할 수 있는 홈페이지를 만들 수 있습니다. 일례로 닉스사이트의 경우에는 N세대와 20대층을 타겟으로 홈페이지를 플레쉬로 제작하여 다이나믹한 면과 컬러풀한 디자인을 내세웠습니다. 그것은 사이트의 인지도 뿐만이 아니라 상품의 이미지 상승효과를 가져왔으며 tv광고를 크게 하지 않고서도 크게 성공한 케이스가 되었습니다. 사이트를 통해 여러분이 무언가를 얻고자 한다면 거기에 맞게 제대로 기획되었는지, 면밀히 검토해 보십시요. 그리고 철저한 시장조사를 통해 어떠한 것이 가장 현실적이며 좋은 방법인지 찾아내십시요. ^^

 

'IT트랜드 & 정보' 카테고리의 다른 글

보다나은 웹사이트 디자인 기법  (0) 2008.03.26

//이미지 용량체크
    var isFileChecked = false;
    var isImgFile = false;
    var isEnableFileSize = false;
    var maxSize = 1*1024*1024;       //1M
    function checkFileSize(uploadImgObj){
        //
        var enableUploadFileExt=new Array("bmp","jpg","jpeg","gif");
        var uploadImgObjName = uploadImgObj.value;
        var startPoint = 0;
        var isImageFile = false;

        //File 체크확인
        isFileChecked = true;

        if(uploadImgObj.value == ""){
            return;
        }

        //이미지파일 확장자 체크
        for(var i=uploadImgObjName.length-1; i>=0; i--) {
            if(uploadImgObjName.charAt(i) == ".") {
                startPoint = i;
                break;
            }
        }
        var uploadImgObjExt = uploadImgObjName.substring(startPoint+1,uploadImgObjName.length);

        for(i=0; i<enableUploadFileExt.length; i++) {
            if(uploadImgObjExt.toLowerCase() == enableUploadFileExt[i]){
                isImageFile = true;
                break;
            }
        }
        if(!isImageFile){
            alert("이미지 파일이 아닙니다.     ");
            uploadImgObj.value="";
            isImgFile = false;
            return;
        }else{
            isImgFile = true;
        }

        //파일용량 체크
        var img = new Image();
        img.dynsrc = uploadImgObj.value;
        var filesize = img.fileSize;
        //alert(filesize);
        if(filesize > maxSize) {
            alert("파일업로드 허용용량 "+maxSize/1024+"Kbyte를 초과되었습니다.     ");
            isEnableFileSize = false;
        }else{
            isEnableFileSize = true;
        }
        //
    }

    //업로드승인체크
    function goFileUploadCheck(){
        if(!isFileChecked){
            alert("업로드할 파일을 지정해주셔야 합니다.     ");
            return;
        }

        if(!isImgFile){
            alert("이미지 파일이 아닙니다.     ");
            return;
        }

        if(!isEnableFileSize){
            alert("파일업로드 허용용량 "+maxSize/1024+"Kbyte를 초과되었습니다.     ");
            return;
        }
    }

<input id="txtUploadFile" style="width: 100%" type="file" size="40" name="NewFile"  onchange="javascript:checkFileSize(this);" />
 <input type="button" value="Upload" onclick="javascript:goFileUploadCheck();" />

추신 : 반드시 이것으로 만족하여 프로그래밍 하지 말고 반드시 서버단에서도 validation을 해주어야 한다!!!

그래도 발생하는 에러의 90%는  UI단에서 막을수 있다.

초보 웹 프로그래머를 귀찮고 당황하게 하는 경우를 하나 소개하고자 한다.

<상황>
이미 라이브된 웹 사이트에서 사용자가,
특정한 경우에 자바스크립트 에러가 난다는 것을 리포팅했다.
팀장이 그 이야기를 듣고 당장 고쳐놓으라고 주문한다.

급하게 javascript 파일인 js파일을 열어서 수정한 다음 서버에 업로드를 마쳤다.
그리고 팀장에게 '수정 완료했습니다.' 보고를 한다.

그런데 왠일인지 팀장이 확인을 해보더니
'아직 그대론데?"라고 한다.

살펴보니 아까 그 페이지를 보았을 때 사용된 js파일을
팀장의 웹 브라우저가 웹 캐쉬에 저장해두었고
그 캐쉬를 그대로 사용하여 페이지를 불렀기 때문에 갱신이 안된 것이다.

'Ctrl+F5눌러서 캐쉬 무시하고 리로드 해보세요'

그렇게 하더니 팀장은 '어.. 이제 되네.. 수고했어..'라고 한다.

그런데 그렇게 만만한 팀장은 아니다.
'근데 말이야, 다른 사용자들도 Ctrl+F5 안누르면 나처럼 다 에러나는거 아냐?'
맞는 말이다.

그래서 개발자는 이야기한다.
'시간이 좀 지나면 서서히 갱신이 될겁니다... IE가 다 그렇죠 뭐~~~'

하지만 역시 만만한 팀장은 아니다.
'무슨 소리를 하는거야, 무슨 수를 써서든 사용자들이 갱신된 js파일을 적용받도록 해!'


이런 일, 웹 개발자들이 한번씩 경험하는 일이라고 생각하는데...

이 때의 어떻게 해결하는 것이 가장 현명할까?

1. js 파일명을 바꾸어서 서버에 저장하고, HTML에서도 수정한다.
수정전 : <script type="text/javascript" src="/js/scripts.js"></script>
수정후 : <script type="text/javascript" src="/js/scripts_v2.js"></script>

이렇게 하면 당장 해결은 되겠지만,
이런 일이 반복되다 보면 서버측에 는 script파일들이 잔뜩 쌓이게 되고 버전 관리가 복잡하게 된다.
서버에서 해당 디렉토리를 열어보면,
script.js, script_v2.js, script_20071206.js, script.bk.js, script_last.js...
이렇게 되어있기 십상이다.

그러다가 어느 날 큰맘먹고 최신 버전 이외의 파일을 싹 delete하면,
갑자기 갑자기 몇개의 페이지에서 에러가 발생하기 시작한다.

'어, 여기 제가 담당하는 페이지 에러가 나는데요? 누가 script_the_last.js 파일 삭제했어요?'
'아니, 제가 지웠는데요, 아직도 그 파일쓰고 있었어요? 3개월전에 script_real_last.js로 바꿨어요~~'

차라리 이렇게 발견이라도 되면 다행이다.
발견되지 않고 몇주동안 에러가 나는 페이지를 고객에게 서비스하게 되는 일이 일어나지 말라는 법이 없다.

그래서 이방법은 비추천.
(특히 계절마다 갑자기 책상을 말끔히 정리하고 싶은 충동이 드는 사람들에게 비추천^^)

2. 웹 서버 설정을 바꾸어서, 또는 다른 방법으로, JS 파일이 캐쉬를 타지 않도록 한다.
어떤 이들은 스크립트가 호출되는 페이지를 no-cache로 하면 된다고 하기도 하는데,
해보면 잘 안될것이다. 그것은 스크립트파일을 no-cache하라는게 아니라, 그 페이지를 no-cache할 뿐

JS 파일자체를 no-cache로 해야 하며
이 파일이 있는 웹서버의 설정을 바꾸면 캐쉬를 타지 않게 할 수 있다.
그러면 원천적으로 사용자의 브라우저는 항상 JS파일을 서버에서 받아오게 된다.

하지만, 웹서버 숫자가 너무 많거나, 디렉토리 설계상 너무 복잡해서 힘들거나,
시스템 엔지니어링 팀과 평소 사이가 안좋아서 고쳐주지 않는 일이 발생할 수도 있다.
(서버에서 웹캐쉬 expire 주기를 조정하는 것도 방법이다)

그럴 때 생각해보는 방법
수정전 : <script type="text/javascript" src="/js/scripts.js"></script>
수정후 : <script type="text/javascript" src="/js/scripts.php"></script>

static파일인 js파일을 asp로 확장자를 바꾸었고,
해당 웹서버가 php확장자는 모두 php 웹스크립트로 인식하도록 되어있다면
위와 같이 바꾸면 일반적인 웹서버 설정, 브라우저 설정에서 캐쉬로 저장하는 것은
브라우저가 열려있는 동안이다. 브라우저 창 모두 닫고 새창 열어서 다시 들어가면 갱신된다는 뜻.

하지만, 위의 어떤 방법이든,
static파일로서 웹서버를 혹사시키지 않고 사용자 캐쉬를 사용해야 하는 파일을
강제로 항상 갱신하게 되는 결과가 되어, 사용자가 많은 사이트의 경우
서버 증설이 필요할 정도의 비효율이 발생할 수도 있다.

그래서 비추천.

3. 그래서 어떻게 하면 좋나?
수정전 : <script type="text/javascript" src="/js/scripts.js"></script>
수정후 : <script type="text/javascript" src="/js/scripts.js?version=20071207"></script>

1번과 2번 방법이 섞인것 같아 보이는가? 하지만 아니다.
서버에는 실제로 scripts.js 파일만 올라가 있다.
또, 수정후에 뒤에 붙은 변수인 version=20071207
php에서처럼 스크립트에 입력되는 request가 아니라 그냥 구분을 위해서 붙여놓은 것이다.
해단 request 변수는 js 파일에 영향을 미치지 않는다.
이렇게 해 두면 웹 브라우저는 버전별로 다른 웹 캐쉬를 생성하게 된다.

보통의 웹 브라우저는
/js/scripts.js?version=20071207
/js/scripts.js?version=20071208 이 있을 때
script.js파일이 변경이 없다고 하더라도 서로 다른 웹 캐쉬에 저장하도록 되어 있다

이것을 이용해서, 서버에는 scripts.js파일 하나만 존재하면서
사용자 브라우저에 남아있는 캐쉬가 갱신되어야 하는지 아닌지를 적절히 수정할 수 있다.
이런 이유로 1번 방법과는 달리 스크립트 파일의 버전관리를 쉽게 할 수 있다.

또한, 스크립트가 여러 페이지에 include되어 있는 경우라고 해도
어떤 페이지에서는
<script type="text/javascript" src="/js/scripts.js?version=20071207"></script>
또 다른 페이지에서는
<script type="text/javascript" src="/js/scripts.js?version=20071208"></script>
심지어는 어떤 페이지에서는
<script type="text/javascript" src="/js/scripts.js"></script>
와 같이 제각각으로 되어있더라도 서버에 script.js파일만 있으면 에러가 발생하지 않고,

또한 개발자가 의도하지 않은 경우에는 기본적으로 항상 인터넷 캐쉬가 정상동작하게 되어,
업그레이드시 발생할 수 있는 장애위험이 줄어들게 되고,
특히 스크립트 파일에 새로운 함수를 추가한 정도로만 변형하여 다시 갱신한 경우에 유용하다.


경험적으로 알고 있던 내용인데,
검색하면 쉬이 찾을 수가 없어서, 나라도 올려두면 누군가 찾아볼 수 있기를 바라는 마음에 올려본다.

내가 적용해 둔 것은 아니지만, 실제 예를 보고 싶으면,
2007년 12월 11일 현재, http://music.cyworld.com/ 에 가서 소스보기를 하면 상단에 다음과 같은 라인을 발견할 수 있을 것이다

<link rel="stylesheet" type="text/css" href="/include/css/music4_main.css?v=071205" media="screen" />

이런식이다
 

// client : head 쪽에 javascript : chiwoniiAjaxMission

function Read(obj)
{

            if(event.keyCode==40) //다운키가 눌리면
              {
               
                    document.form1.sel1.focus();return; //--포커스를 select로
              }  
     

            objNode.text = encodeURI(obj.value);
            //텍스트박스에서 글자를 읽어 들어와서 encodiing

             xmlhttp.open ("Post","MissionServer2.aspx",false);
            //비동기, 화면 안바뀌고 하겠다
            xmlhttp.send(xmlpara); //비동기로 보내면

            var getstr = xmlhttp.responseXML; // 서버 처리 후 받아진다

              for(i=0; i< count.length; i++)
            {
           
            //--- 핵심 코드는 여기 뿐~!!! server에는 싹 비워!!!
            //--글자는 첫글자만 남기고 싹지워!!
            //-- 셀렉트에 옵션을 새로 추가하는 방법
           var option = new Option();
          
           option.text = getstr.getElementsByTagName("name")[i].childNodes[0].nodeValue;
           option.value = getstr.getElementsByTagName("seq")[i].childNodes[0].nodeValue;
              
                document.form1.sel1.add(option);
             //---    
           
            }
}
//--client : body쪽에는
<select id="sel1" multiple="multiple" style="display:none; width: 152px" onchange="sel1_onclick (sel1)">
           
            </select>    &nbsp;
          
            <div id="a">
          </div>

//--server 쪽에서는
 protected void Page_Load(object sender, EventArgs e)
    {
        //---입력 -- 원본이고
        XmlDocument xmldom = new XmlDocument();
        xmldom.Load(Request.InputStream);//텍박의 값을 받아서
        string name = xmldom.SelectNodes("PARAMETER").Item(0).SelectSingleNode("DATA").InnerText;//입력
        //파라미터 노드여러개중 첫번째꺼의 싱글노드 data의 텍스트를
        //디폴트에서 받은 파라미터
 


        //--- 출력
        XmlDocument new_xmldom = sqlfunction(name); //쿼리 결과를 얻어서 돔(XML)로 만든다.
        //-- 쿼리를 사용해서 새로운 것을 만들지
        Response.ContentType = "text/xml;charset=euc-kr"; //반드시 해야함. //강제적으로 첫줄에 넣고
        Response.Write(new_xmldom.OuterXml); //두번째 부터 넣는거지.

    }


protected XmlDocument sqlfunction(string itname)
    {

        string sql = "SELECT seq, name, it from BBS where name like @name";
             
        SqlConnection con = new SqlConnection("Data Source=192.168.1.15;Initial Catalog=BoardProject;User ID=sa;Password=1234");
        SqlCommand com = new SqlCommand(sql, con);

                itname = HttpUtility.UrlDecode(itname);
       com.Parameters.AddWithValue("@name", "%"+itname+"%");

        con.Open();

        SqlDataReader dr = com.ExecuteReader();


        //-- START
        XmlDocument xmldom = new XmlDocument();

        XmlElement root = xmldom.CreateElement("root");
                                        :
                                        :
                                        :
                                        :
 //결국 dom을 리턴한다.
}

function MakeXML()
{    
    var xmlDom = new ActiveXObject("Microsoft.XMLDOM");

    var objRoot = xmlDom.createElement("ROOT");
    xmlDom.appendChild(objRoot);
   
    var objNode = xmlDom.createElement("DATA");
    objRoot.appendChild(objNode);
 
    var Node1 = xmlDom.createElement("NAME");
    var Node2 = xmlDom.createElement("TEL");
    var Node3 = xmlDom.createElement("ADDRESS");
    var Node4 = xmlDom.createElement("ETC");
   
    Node1.text = "홍길동";
    Node2.text = "000-0000-0000";
    Node3.text = "서울시";
    Node4.text = "프로그래머";

    objNode.appendChild(Node1);
    objNode.appendChild(Node2);
    objNode.appendChild(Node3);
    objNode.appendChild(Node4);
     
    document.getElementById('<%=TextBox5.UniqueID%>').value = xmlDom.xml; 
}

'Web(웹) Study > XML & XSL' 카테고리의 다른 글

XHTML1.0 와 XHTML1.1의 차이  (0) 2008.07.01
XHTML (Extensible Hypertext Markup Language)  (0) 2008.07.01
xsl사용하기  (0) 2008.01.18
xml을 양식화하기  (0) 2008.01.18
내부 dtd선언  (0) 2008.01.18
<style>
 #dasfs .abc { display:block; position:relative; margin:0; padding:; width:; height:; text-align:; font:11px dotum; font-weight:; background:; }
</style>

사용될 아이프레임에

<IFRAME name="Best_member" align="left" marginWidth="0" marginHeight="0" src="./member_lank.aspx"
              frameBorder="0" scrolling="no" onload="Resize_Frame('Best_member');"></IFRAME>



사이즈조절 스크립트

function Resize_Frame(name)  //게시판 사이즈 변경
{
  var Frame_Body  = document.frames(name).document.body;
  var Frame_name  = document.all(name);
 
  Frame_name.style.width
   = "100%"; //어짜피 넓이는 100%정도가 딱이다..
  Frame_name.style.height
   = Frame_Body.scrollHeight + (Frame_Body.offsetHeight-Frame_Body.clientHeight);

  if (Frame_name.style.height == "0px" || Frame_name.style.width == "0px")
  {
   Frame_name.style.width = "100%";       //기본 iframe 너비
   Frame_name.style.height = "300px";      //기본 iframe 높이
  }
  //alert(Frame_name.style.width );
  //alert(Frame_name.style.height );
 
}

파일명 : ch07_01.xml 로 저장한다.

<?xml version="1.0" encoding="euc-kr" standalone="yes"?>
<MEETINGS>
 <MEETING TYPE="informal">
  <MEETING_TITLE>XML 세계에 오신것을 환영합니다.</MEETING_TITLE>
  <MEETING_NUMBER>2079</MEETING_NUMBER>
  <SUBJECT>XML</SUBJECT>
  <DATE>08/02/2006</DATE>
  <PEOPLE>
   <PERSON ATTENDANCE="presend">
    <FIRST_NAME>민</FIRST_NAME>
    <LAST_NAME>슬기</LAST_NAME>
   </PERSON>
   
   <PERSON ATTENDANCE="absent">
    <FIRST_NAME>오</FIRST_NAME>
    <LAST_NAME>지명</LAST_NAME>
   </PERSON>
   
   <PERSON>
    <FIRST_NAME>이</FIRST_NAME>
    <LAST_NAME>소룡</LAST_NAME>
   </PERSON>

  </PEOPLE>
 </MEETING>
</MEETINGS>


파일명:ch07_02.html

<html>
<head>
<title>Reading XML element Values</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
 function readXMLDocument(){
 
  var xmldoc, meetingsNode, meetingNode, peopleNode
  var first_nameNode, last_nameNode, outputText

  //새로운 문서객체를 만든다.
  xmldoc = new ActiveXObject("Microsoft.XMLDOM");

  //문서를 읽어들인다.
  xmldoc.load("ch07_01.xml");
 
  //문서의 루트 요소인 <MEETINGS>에 해당되는 노드 객체를 불러오며,
  //documentElement메소를 이용한다.
  meetingsNode = xmldoc.documentElement;

  //firstChild, nextChild, lastChild등의 메소드를 이용, 구성요소의
  //다른 자식 요소들로 마음대로 이동가능
  //firstSibling,nextSibling메소드를 사용하면 동일 레벨에서의 다른 구성요소에 접근 가능
  meetingNode = meetingsNode.firstChild;

  //예 -> <PEOPLE>요소 내에서 세 번째<PERSON>요소로 내려가고자 한다.
  //<PEOPLE>요소는 <MEETING>요소의 마지막 자식에 해당되므로 <PEOPLE>요소에 해당되는 노드에는 다음과
  //같이 접근할 수 있다.
  peopleNode = meetingNode.lastChild;


  //<PEOPLE>요소의 세 번째 사람을 원하는 것은 그 요소의 마지막 자식 요소를 찾아내는 것과 동일하므로
  //여기서는 lastChild 메소드를 사용하여 원하는 사람에게 접근할 수 있다.
  //personNode = peopleNode.lastChild;  /* 마지막 요소 */
  personNode = peopleNode.firstChild;   /* 첫번재 요소 */

  //마지막으로 사람의 이름을 저장하고 있는 <FIRST_NAME>과<LAST_NAME>구성요소에 해당되는
  //노드에 접근하기 위해 firstChild와 nextSibling(현재 노드와 동일 레벨에서의 다음 노드로 이동한다.) 메소드를 사용할 수 있다.
  first_nameNode = personNode.firstChild;
  last_nameNode = first_nameNode.nextSibling;

  //트리에서 자신이 원하는 실제 구성요소의 노드에 접근하는 방식
  //nodeValue속성을 사용하여 first_name과 last_name의 값을 구한다.
  var firstName, lastName
  firstName = first_nameNode.firstChild.nodeValue;
  lastName = last_nameNode.firstChild.nodeValue ;

  outputText = "Third name: " + firstName + " " + lastName;
  messgeDiv.innerHTML = outputText;

 }
//-->
</SCRIPT>
</head>
<body>
 <center>
  <h2>Reading XML element values</h2>

  <input type="button" value="Get the name of the third person" onClick="readXMLDocument();">
  <p>
  <Div id="messgeDiv"></div>
  </p>
 </center>
</body>
</html>

각각 복사해서 파일로 저장한뒤에 ch07_02.html파일을 실행해서 버턴을 클릭해보면 결과를 볼 수 있다.

JavaScript1.2 String 메소드

charCodeAt()
ie4에서는 문자의 Unicode 값을 nn4에서는 ISO-Latin-1 codeset 값을 돌려준다.
alert( "ABC".charCodeAt(0) ) 은 "ABC"에서 첫번째의 문자인 "A"의 값 65를 보여준다. 괄호 안의 숫자가 문자열에서 특정 문자의 위치를 지정한다. 

concat()
2개의 문자열을 하나의 문자열로 만든다.
alert( "안녕".concat("하세요") )는 "안녕하세요"를 보여준다. 함수의 앞에 있는 문자열 다음에 괄호 안에 있는 문자열을 덧붙인다. 

fromCharCode()
charCodeAt()와 반대의 동작을 하는 함수로 Unicode 값이나 ISO-Latin-1 codeset 값을 문자로 돌려준다
String.fromCharCode(65,66,67)은 "ABC"를 보여준다. String.fromCharCode()로 사용한다. 지정하는 인자는 여러개 지정할 수 있다. 

[match()]
Regular Expression의 exec()와 비슷한 동작하지만 RegExp 객체는 만들지 않고 맞는 문자정보를 배열로 반환한다.
var st = "abc def ghi" var arr = st.match(/\w+\s*/g)
arr은 ["abc", "def", "ghi"]를 가지고 있다.

[replace()]  
regular expression을 특정 문자열로 바꾼다. 사용 구문은 아래이다.
문자열.replace(regular expression, "바꿀문자열")
문자열 중에서 regular expression에 맞는 문자열을 "바꿀 문자열"로 바꾸어서 새로운 문자열을 만든다.
var st = "abc def ghi def" var arr = st.replace(/def/g, "DEF")
arr은 "abc DEF ghi DEF"의 문자열이 된다. 

[search()]   Regular Expression의 test()와 비슷한 동작을 하는 메소드로 문자열에서 regular expression을 검색한 것의 index를 반환한다. 검색된 것이 없으면 -1을 반환한다.
var st = "abc def ghi" var arr = st.search(/\w+\s*/g) if( arr != -1) alert("검색됨") else alert("없음") 으로 "검색됨"이 나온다. 위의 arr의 값은 0(zero)이다. 즉, exec()로 했을 때의 arr.index와 같은 값을 가진다. 

[slice()]   문자열에서 두 위치 사이의 문자열을 반환한다. substring()과의 차이점은 두번째 위치를 음수 정수로 지정하여 문자열의 끝에서의 위치를 지정할 수 있는 것이다.
alert( "abcde".slice(1, -2) )는 "bc"를 반환한다. 

[split()]
(1.2에서 수정됨)   나눌 문자로 문자열 뿐만이 아니고 regular expression도 사용할 수 있다.
"123+456+789".split(/\+/)는 ["123", "456", "789"]로 나온다. 

[substr()]   JavaScript1.1의 subString()과 비슷하게 두개의 위치안의 문자열을 반환한다. subString()과 다른점은 문자열의 끝에서 부터도 찾을 수 있는 것이다.
alert( "abcd".substr(-1, 2) )는 "cd"로 나온다. 

substring()
(1.2에서 수정됨) 수정된 사항은 nn4에서 시작위치가 끝위치 보다 더 큰 경우이다. 이 경우 JavaScript1.1에서는 끝위치에서 시작위치 - 1 까지의 문자열을 반환하지만 JavaScript1.2에서는 Run Time error 로 문자열을 반환하지 못한다.
<script language="JavaScript1.2"> "acbd".substring(3, 0) </script>
ie4, ie5에서는 이런 경우 수정되지 않았다. 


 

'Web(웹) Study > Java Script' 카테고리의 다른 글

iframe 높이 자동 조절하기  (0) 2008.03.25
자바스크립트를 통한 XML문서 파싱하기  (0) 2008.03.25
javascript 문자열 처리 함수 정리  (1) 2008.03.25
JavaScript 정규식  (0) 2008.03.25
레이어 팝업 소스  (8) 2008.03.11

문자열 처리하기

anchor()
문서의 목적지를 가리키는 Anchor택을 지정한다.
var anchorString="이 지점으로.." document.write(anchorString.anchor("anchorName1"))
위의 구문은 <A NAME="anchorName1">이 지점으로..</A> 의 HTML을 만든다. 앞의 지정한 문자열을 링크의 내용으로 괄호 안의 문자열은 anchor의 이름이다. 

big()
지정한 문자열을 <big></big> 택으로 감싼다.
var makeBig = "big 입니다." document.write(makeBig.big()) 는 <big>big 입니다.</big> 로 된다. 

blink()
문자열을 <blink></blink> 택으로 감싼다.

bold()
문자열을 <b></b> 택으로 감싼다.

charAt()
문자열에서 특정 위치의 문자를 반환한다. 괄호 속에 지정해 줄 수 있는 정수는 0에서 문자열 길이-1의 정수를 입력할 수 있다.
alert("abc".charAt(1))은 'b'를 반환한다. 

eval()
괄호 속에 있는 문자열을 JavaScript 구문으로 실행한다.
var he = "Hello" eval("alert(" + he + ")" ) 는 alert("Hello") 와 같다. 

fixed()
문자열을 <TT></TT> 택으로 감싼다. 사용법은 big()과 같다.

fontcolor()
문자열을 괄호 속에 넣어준 색상값으로 <FONT COLOR=color> 형식으로 만든다. 색상값은 색상 이름이나 RGB 값을 지정할 수 있다. RGB 값은 여섯개의 16진수 값으로 처음 2개는 red 값, 다음 2개는 green 값, 마지막 2개는 blue값이다.
document.write("빨간색".fontcolor("red")) document.write("흰색".fontcolor(000000)) 는 <FONT COLOR="red">빨간색</FONT>, <FONT COLOR=000000>흰색</FONT> 으로 나온다. 
fontsize() fontcolor()와 비슷하다. <FONTSIZE=size> 의 형식으로 만든다. 괄호 속의 값은 size에 사용할 0에서 7까지의 정수값이다.
document.write("크기 3의 글자".fontsize(3))

[indexOf()]
문자열에서 특정 문자가 있는 위치를 반환한다. 괄호 속에 넣어줄 수 있는 인자는 2개가 있고 첫째것은 찾을 문자, 두번째 것은 찾기 시작할 위치이다. 두번째 인자는 지정하지 않을 수 있고 이 경우 문자열의 첫번째 문자부터 찾기 시작한다.
alert("abc cdf".indexOf("c"))은 2를 반환한다. 만약, 찾을 문자가 없다면 정수 -1을 반환한다. 

italics()
문자열을 <i></i> 택으로 감싼다.
 
lastIndexOf()
indexOf()와 같은 동작을 한다. 유일한 차이점은 이것은 문자열의 오른쪽에서 부터 왼쪽으로 찾는다.
alert("abcd cdf".lastIndexOf("cd"))는 5를 반환한다. indexOf()나 이것이나 문자열의 위치는 모두 왼쪽에서 오른쪽으로 지정되고 첫번째 문자의 위치는 0으로 지정된다. 

link()
다른 문서로 이동하는 <A>택을 지정한다.
var linkString="다음 페이지로.." document.write(linkString.link("next.htm"))
위의 구문은 <A HREF="next.htm">다음 페이지로..</A> 의 HTML을 만든다. 앞의 지정한 문자열을 링크의 내용으로 괄호 안의 문자열은 HREF에 지정될 문서 주소의 이름이다. 

small()
문자열을 <small></small> 택으로 감싼다.

[split()]
문자열을 특정 문자를 기준으로 나누어서 하나의 배열에 차례대로 저장한다. 괄호속에 넣어주는 문자가 기준이 되는 문자이다. 이 문자를 기준으로 양쪽의 문자열을 나눈다. 지정하지 않으면 전체 문자열을 배열에 저장한다.
var strArrey; strArray = "abc,dfe,123".split(",") 는 [abc,dfe,123]으로 strArray는 배열 객체가 된다. strArray.length는 3이고 strArray[2]는 "123"이다. 

strike()
문자열을 <strike></strike> 택으로 감싼다.

sub()
문자열을 <sub></sub> 택으로 감싼다.

[substring()]
문자열에서 지정한 위치 사이에 있는 문자열을 반환한다. 괄호 속에는 두개의 위치값을 인자로 지정해 줄 수 있다. 첫번째 인자의 위치에서 부터 두번째 인자 앞까지의 문자열을 반환한다.
alert( "a12345".substring(2,4) )는 "23"을 보여준다. 두번째 인자를 지정하지 않으면 전체 문자열의 끝까지를 지정하는 것이 된다.
alert( "a12345".substring(2) )는 "2345"를 보여준다.
 
sup()
문자열을 <sup></sup> 택으로 감싼다.

toLowerCase()
문자열을 소문자로 바꾼다.
alert( "Hello My Lover".toLowerCase() )는 "hello my lover"로 된다. 

toUpperCase()
문자열을 대문자로 바꾼다.

[toString()]
String 뿐만이 아닌 모든 객체의 method이다. Array, Boolean, Function, Number 등의 모든 객체를 문자열로 변환한다.
var ar = new Array("abc", "123") alert( ar.toString() ) 은 "abc,123" 을 보여준다.
괄호안에 2에서 16 까지의 진수를 지정해 줄 수도 있는데 이 경우는 숫자를 지정해준 진수의 숫자 문자열로 변환한다. 색상 변환에 사용할 수 있다.
var xx = 255 alert( xx.toString(16) ) 는 255를 16진수 "FF"로 나온다. xx.toString(2)는 "11111111"으로 나온다. 

valueOf()
객체의 원래 값을 돌려준다.

우선 사용예는 다음과 같다.

예)
<script language="javascript">
  function chk(pstr) {
   var chkRep = /....-..-../;
   alert(chkRep.test(pstr));
  }
</script>

정규식은 다음과 같다.

(1) ^ (caret) : 라인의 처음이나 문자열의 처음을 표시
예 : ^aaa (문자열의 처음에 aaa를 포함하면 참, 그렇지 않으면 거짓)

(2) $ (dollar) : 라인의 끝이나 문자열의 끝을 표시
예 : aaa$ (문자열의 끝에 aaa를 포함하면 참, 그렇지 않으면 거짓)

(3) . (period) : 임의의 한 문자를 표시
예 : ^a.c (문자열의 처음에 abc, adc, aZc 등은 참, aa 는 거짓)
a..b$ (문자열의 끝에 aaab, abbb, azzb 등을 포함하면 참)

(4) [] (bracket) : 문자의 집합이나 범위를 나타냄, 두 문자 사이의 "-"는 범위를 나타냄
[]내에서 "^"이 선행되면 not을 나타냄
이외에도 "문자클래스"를 포함하는 [:문자클래스:]의 형태가 있다.
여기에서 "문자클래스"에는 alpha, blank, cntrl, digit, graph, lower, print, space, uppper, xdigit가 있다.
이에 대한 자세한 내용은 C언어의 <ctype.h>를 참조하면 된다.
예를 들어 [:digit:]는 [0-9]와 [:alpha:]는 [A-Za-z]와 동일하다.
이외에 [:<:]와 [:>:]는 어떤 단어(숫자, 알파벳, '_'로 구성됨)의 시작과 끝을 나타낸다.
예 : [abc] (a, b, c 중 어떤 문자, "[a-c]."과 동일)
[Yy] (Y 또는 y)
[A-Za-z0-9] (모든 알파벳과 숫자)
[-A-Z]. ("-"(hyphen)과 모든 대문자)
[^a-z] (소문자 이외의 문자)
[^0-9] (숫자 이외의 문자)
[[:digit:]] ([0-9]와 동일)

(5) {} (brace) : {} 내의 숫자는 직전의 선행문자가 나타나는 횟수 또는 범위를 나타냄
예 : a{3} ('a'의 3번 반복인 aaa만 해당됨)
a{3,} ('a'가 3번 이상 반복인 aaa, aaaa, aaaa, ... 등을 나타냄)
a{3,5} (aaa, aaaa, aaaaa 만 해당됨)
ab{2,3} (abb와 abbb 만 해당됨)
[0-9]{2} (두 자리 숫자)
doc[7-9]{2} (doc77, doc87, doc97 등이 해당)
[^Zz]{5} (Z와 z를 포함하지 않는 5개의 문자열, abcde, ttttt 등이 해당)
.{3,4}er ('er'앞에 세 개 또는 네 개의 문자를 포함하는 문자열이므로 Peter, mother 등이 해당)

(6) * (asterisk) : "*" 직전의 선행문자가 0번 또는 여러번 나타나는 문자열
예 : ab*c ('b'를 0번 또는 여러번 포함하므로 ac, ackdddd, abc, abbc, abbbbbbbc 등)
* (선행문자가 없는 경우이므로 임의의 문자열 및 공백 문자열도 해당됨)
.* (선행문자가 "."이므로 하나 이상의 문자를 포함하는 문자열, 공백 문자열은 안됨)
ab* ('b'를 0번 또는 여러번 포함하므로 a, accc, abb, abbbbbbb 등)
a* ('a'를 0번 또는 여러번 포함하므로 k, kdd, sdfrrt, a, aaaa, abb, 공백문자열 등) doc[7-9]* (doc7, doc777, doc778989, doc 등이 해당)
[A-Z].* (대문자로만 이루어진 문자열)
like.* (직전의 선행문자가 '.'이므로 like에 0 또는 하나 이상의 문자가 추가된 문자열이됨, like, likely, liker, likelihood 등)

(7) + (asterisk) : "+" 직전의 선행문자가 1번 이상 나타나는 문자열
예 : ab+c ('b'를 1번 또는 여러번 포함하므로 abc, abckdddd, abbc, abbbbbbbc 등, ac는 안됨)
ab+ ('b'를 1번 또는 여러번 포함하므로 ab, abccc, abb, abbbbbbb 등)
like.+ (직전의 선행문자가 '.'이므로 like에 하나 이상의 문자가 추가된 문자열이 됨, likely, liker, likelihood 등, 그러나 like는 해당안됨)
[A-Z]+ (대문자로만 이루어진 문자열)

(8) ? (asterisk) : "?" 직전의 선행문자가 0번 또는 1번 나타나는 문자열
예 : ab?c ('b'를 0번 또는 1번 포함하므로 abc, abcd 만 해당됨)

(9) () (parenthesis) : ()는 정규식내에서 패턴을 그룹화 할 때 사용

(10) | (bar) : or를 나타냄
예 : a|b|c (a, b, c 중 하나, 즉 [a-c]와 동일함)
yes|Yes (yes나 Yes 중 하나, [yY]es와 동일함)
korea|japan|chinese (korea, japan, chinese 중 하나)

(11) \ (backslash) : 위에서 사용된 특수 문자들을 정규식내에서 문자를 취급하고 싶을 때 '\'를 선행시켜서 사용하면됨
예 : filename\.ext ("filename.ext"를 나타냄)
[\?\[\\\]] ('?', '[', '\', ']' 중 하나)

정규식에서는 위에서 언급한 특수 문자를 제외한 나머지 문자들은 일반 문자로 취급함 

[로그 파일 관리하기]
시스템 관리자들은 정기적으로 로그 파일을 체크하고 관리해야 합니다.
리눅스에는 보안과 시스템 등에 관련된 다양한 로그 파일들이 존재하며, 주로 /var/log 디렉토리에 싸이게 됩니다.

dmesg
Linux가 시작될 때 나타나는 메시지들을 기록한 파일로 터미널에서 dmesg 명령을 입력하면 보여지는 내용과 동일합니다.
주로 시스템의 구동과 종료시에 문제점이 발생하는 경우 그 원인을 체크해 볼 수 있는 중요한 파일입니다.

messages
다양한 서버의 데몬이나 xinetd와 관련된 서비스를 사용할 때 기록되는 로그파일로 데몬에 문제가 발생할 경우 체크합니다.

secure
시스템에 로그인하거나 인증을 요하는 작업을 한 경우 기록되는 파일로 보안상 매우 중요한 로그입니다.

lastlog
각 사용자가 마지막으로 로그인한 날짜를 기록하고 있습니다. lastlog 명령어를 사용하여 확인할 수 있습니다.

wtmp
시스템에 접속한 모든 사용자의 로그를 기록하는 파일로 last, 명령어로 확인 할 수 있습니다.

xferlog
FTP 서비스의 엑세스를 기록하는 로그입니다.

로그 파일의 관리에 소홀하면, 로그 파일이 계속 커져 시스템 FULL 과 같은 장애가 발생하고
디스크에도 심각한 문제를 일으킬 수 있으므로, logrotate와 같은 프로그램으로 자동으로 로그파일을 순환시켜야 합니다. 

유닉스 및 리눅스 명령어

  유닉스 및 리눅스 명령어 팁

1. 서브 디렉토리까지 파일안의 문자열 모두 검색
find ./ -name "*" -exec grep 'abc' {} ; -print
find . -name -print -exec grep abc {} ;
grep -r abc *

2. haha와 huhu가 동시에 들어있는 행 뽑기
grep haha foo.txt | grep huhu

3. 찾아서 지우기
find / -name "*.eml" -exec rm -f {} ;

4. 공사중에 로그인 막기
/etc/nologin 이라는 파일을 만들어,공사중 또는 Under Construction이라는 공지를 넣으면 됨

5. 크기가 가장 큰 파일, 디렉토리 찾기
du -S | sort -n

6. 가장 큰 파일을 찾으려면
ls -lR | sort +4n

7. 현재 디렉토리의 크기만을 파악할때
# du -c -h --max-depth=0 *

8. 시스템 정보 감추기
/etc/inetd.conf 파일을 열어서,
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h

9. 어떤 프로세스가 메모리를 가장 많이 잡아먹고 있는지 알아내기
ps -aux | sort +4n 또는 ps -aux | sort +5n

10. FTP로 들어온 사용자 확인하기
ftpwho,ftpcount

11. 원하지 않는 사용자 죽이기
skill -KILL sunny
위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다.
그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠? 그럴때는 skill -KILL -v pts/14 이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.

12. less 결과를 vi로 보기
less상태에서 v를 누르면 바로 vi로 감

13. vi에서 블럭 설정하기
alt+v 하면, 라인 단위로 블럭 설정을 할 수 있으며, 해제 하시려면 Esc를 누르면 됩니다.
또한 ctl+v를 하시면, 블럭 단위로 블럭을 설정하실 수 있습니다. 블럭을 설정 하신 뒤, 삭제를 하려면 x 복사를 하려면 y 붙여넣기는 p

14. man 페이지 프린트하기
man -t vi 0.0.0.15 ping 무시하기
echo 1 0.0.0.16 LILO 다시 살리기
boot : vmlinuz root=/dev/hda6

17. 특정 사용자 ftp 접근 막기
/etc/ftpusers 파일에 로그인 네임을 추가하면 됩니다.

18. X 윈도우에서 TV보기
리눅스에서 TV보기 위해서는 드라이버 파일과 TV를 보는 프로그램이 필요합니다.
이 글에서는 미지 리눅스 OS에 탑재된 bttv 칩셋을 사용하는 TV 카드를 기준으로 설명합니다.
만일 커널을 새로 컴파일 하실 분은 반드시 Character devices -alias char-major-81 bttv
# 필립스 튜너의 경우 pre-install bttv modprobe -k tuner # 알프스 튜너의 경우 pre-install bttv modprobe -k tuner type=9 이제 kwintv나 xawtv 등의 TV 시청 프로그램으로 TV를 볼 수 있습니다. 만약 TV 장치를 찾지 못하는 오류가 있다면 bttv driver 디렉토리에 포함된 MAKEDEV 를 실행하십시오.

19. ls라는 파일이 포함된 rpm패키지 찾기
일단 ls의 절대경로를 알아야 한다. which lswhich로 알아낸 ls의 절대경로로 rpm질의를 한다.

rpm -qf /bin/ls
[root@piruks /etc]# which ls
/bin/ls
[root@piruks /etc]# rpm -qf /bin/ls
fileutils-4.0i-2mz

20. 현재 rpm패키지의 의존패키지
rpm -qR 패키지명

21. 현재 디렉토리크기
du -h --max-depth=1 .

22. 바로 이전 디렉토리로 가기
cd -

23. 프로세스명으로 프로세스 죽이기
killall 프로세스명
kill -9 `pidof 프로세스명

24. 하드웨어 시계맞추기
배포본을 설치하고 나면 시간이 맞지 않는 경우가 많다. 간단히 어느정도 정확한 시간을 설정하는 방법이다.

[root@dev /down]# rdate -s time.kriss.re.kr
[root@dev /down]# clock -w

25. 원격에서 리모트서버의 X application실행시
X윈도 app를 실행할때 다음과 같은 에러가 나면 조치

[kang@dev /home/kang] xclock
Xlib: connection to "211.222.186.170:0.0" refused by server
Xlib: Client is not authorized to connect to Server
Error: Can't open display: 211.222.186.170:0.0
export DISPLAY=211.222.186.170:0
xhost +211.222.186.170


26. 링크 파일
ln -sf 링크할디렉토리 링크로 만들어질 디렉토리 참고로 링크를 걸기만 한다고 접근가능한것은 아니고,링크가 걸린 디렉토리의 퍼미션도 허용으로 바꿔야 한다. 링크로 만들어질 디렉토리는 저절로 생성되고 퍼미션 777로 잡혔음.

ln -sf /www/dir_1/r_photo /www/dir_2/r_photo


27. ^M 문자 없애기
a = 1^M
def vartest(a):^M
a = a + 1^M
return a^M
a = vartest(a)^M
print a^M
Unix
류 기계에서는 그냥 ^J 하나만을 개행문자로 사용하는데 PC에서는 MJ 이렇게 두 제어문자가 연속으로 사용되어야 개행문자로 받아들이죠. (그래서 PC쪽에서 만들어진 txt문서를 유닉스 기계로 불러와 vi 등을 실행하면 줄 끝마다 보기싫은 ^M이 붙습니다. 뭐 vi에서 요거 지우는건 간단하지만요.)

PC에서 Unix에서 작성한 텍스트 문서를 보통 ftp로 받아오거나 하면 워드패드 등에서 봤을 때 전혀 개행이 되어있지 않지요. 하지만 MS Word 등 좀더 강력한 편집기에선 대개 잘 처리해서 잘 보여줍니다.

위 는 간단한 Python 소스입니다. 위의 경우 처럼 ^M문자가 있을때, dos2unix라는 유틸리티를 많이 사용하기도 하죠. 하지만 vi에서 간단하게 모두 삭제할수도 있습니다. dos2unix가 없거나 빠져나가서 지우는게 귀찮을때 좋겠죠.

명령은 :%s/(ctrl+v)M//g 입니다. (ctrl+v)M 이거는 ctrl과 v를 눌러준후, ctrl키를 떼지 말고 바로
m을 눌러주시믄 됩니다. 위는 정규표현식을 이용한것이고, 형식은 %s/이것을/요걸로/g 입니다 그럼 문서안의 모든 "이것을" "요걸로" 바꾸게 되죠. 단, M의 경우 ctrl+M의 뜻인데 단순히 문자로 M을 바꾸라도 해도 인식을 못하기 때문에, 위처럼 (ctrl+v)M 으로 해주셔야 합니다.

28. 비어있는 행을 찾기
#grep -n '^$' filename
정규표현 의미 ^ 행의 처음 $ 행의 끝 . 임의의 한 문자 [...] ... 안의 임의의 한 문자. a-z,0-9 같은 범위도
사용 [^..] .. 안에 없는 임의의 한 문자. 범위 사용가능 r* 0회 이상 r 반복 r+ 1회 이상 r 반복 r? 0 혹은
1회의 r r{n,m} n회 이상 m회 이하 r 반복 r1|r2 r1 혹은 r2 (egrep 만) (r) r 의
정규표현(egrep 만)

29. =====>  맨아래..

30. 각자가 사용하는 컴퓨터의 정보를 알고 싶을때
[root ...]#more /proc/cpuinfo
위와 같이 치면 사용자의 컴퓨터 정보를 볼수 있으며,

[root ...]#more /proc/meminfo
라고 치면 사용자의 메모리 정보를 볼수 있습니다.

31. 전체 메일
먼저 보낼 내용을 텍스트로 파일로 만들어야 합니다.어디에서든지 가능하지요! [root@aromi /root]# vi nea
안녕하세요! 저희 서버에서는 웹서버를 오늘부터 시작합니다. 사용자 여러분의 많은 관심과 이용을 부탁드립니다.

:wq [root@aromi /root]#

만약, 한글을 사용하지 못하면 윈도우95에서 먼저 쓴다음에 ftp를 이용해서 올리면 됩니다. [root@aromi /root]# mail -s "[공지]" `cat /etc/passwd|gawk ?F :'{print$1}'`

[공지]-

32. 디렉토리만 빠르게 검색
ls -al | grep "^d"

33. 호스트 네임 바꾸기
/etc/HOSTNAME
file은 부팅시 /etc/sysconfig/network file 의 HOSTNAME 부분을 참조하여 저장합니다. 호스트
네임을 바꾸고자 한다면 /etc/sysconfig/network file 의 HOSTNAME 부분을 바꿔주면 됩니다.

[root@linux /root]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME="linux"
GATEWAY=""
GATEWAYDEV=""
FORWARD_IPV4="yes"
바꾸신후 시스템을 재부팅 하신거나, #/etc/rc.d/init.d/network restart 명령을 내리시면 됩니다.

34. 틀린명령 틀린글자만 바꿔서 실행
#./configure --prefax=/usr/local/apache 앗, 틀렸습니다. prefax가 아니라
prefix인데... 고쳐야지요...간단하게 화살표키로 왔다갔다 하면서 지워지고 바꿔주면 되겠지만 다른 방법이 있습니다. #^fax^fix^ 라고 하면... -

35. 유닉스의 현재 버젼과 종류 그리고 라이센스등을 알려주는 명령어
[root@aromi /root]# uname -a

36. 열려있는 포트 알아내기
netstat -anp | grep LISTEN

37. 텔넷 모든 접속자에게 메세지 보내기
wall 내용... Ctrl-D

38. lsof는 열려있는 파일을 나타내 주는 옵션
여기에 보안 점검을 위하여, -i 옵션을 사용하면, 현재 열려 있는 포트와 링크되어 있는 서비스 또는 프로그램이 모두 나타나죠. 자신이 열어 놓지 않은 포트가 열려있다던지하면 한번쯤 의심해 봐도 되겠죠?

39. 사용자가 어디에서 무엇을 하는지 알아내기
w라는 명령어를 사용하시면 된답니다. 이 때, w [-s] 를 붙여주시면 -s 옵션이 긴 정보 대신에 필요한 짧은 정보만 알려 준답니다.

40. 텔넷 화면 수정
로그인화면: /etc/issue.net 로그인후화면: /etc/motd

41. 하위 디렉토리 한꺼번에 만들기
mkdir -p music/koreanmusic/ost

42. 특정디렉토리의 모든 파일 안의 특정 문자열 치환
for i in $*; do
sed "s//opt/arm//opt/arm-linux/g" < $i > $i.new
mv -f $i.new $i
done (chihwan.sh를 포함하지 않는 디렉토리면)
find ./ -type f -exec 'chihwan.sh' {} ; s

43. killall 명령 시뮬레이션 (프로세스명으로 죽이기)
ps
aux | grep 프로세스명 | grep -v grep | awk '{ print $w }' | xargs kill -9 모든
프로세스 나열 지정한 프로세스만 뽑아냄 grep 명령이 포함된 라인 제거 awk로 두번째 필드만 뽑아냄 xargs에 의해 걸러진
아이디로 죽임

44. find와 grep
find . -name "H20021115.*" -exec grep -l '...;........;110100' {} ;

45. vi 검색, 치환
구호스트 서비스 오늘 날짜에서 분류코드가 110100인 파일 찾기 :%s/./U&/g 모든문자-

46. 파일내의 중복되는 행을 제거 : uniq
입력 파일에서 연속되는 행을 비교하여, 두 번째 이상의 동일한 행들을 제거하고 나머지는 출력파일로 출력 연속되어 표시되지 않으면 동일한 행이 존재할 수 있음. sort 명령을 사용하여 정렬한 후 사용하는 것이 타당 사용법uniq [-cdu] [+|숫자] [입력파일 [출력파일]] -c : 각 행이 연속적으로 나타난 횟수를 행의 시작부분에 표시 -d : 연속적으로 반복되는 행만 출력 -u : 연속적으로 반복되지 않는 행만 출력 +숫자 : 행의 처음 '숫자' 만큼의 문자는 무시 -숫자 : 행의 처음 '숫자' 만큼의 필드는 무시

47. 파일의 결합
여러 개의 텍스트 파일을 하나의 파일로 순차적으로 묶는데 사용 cat [파일명1] [파일명2] ...
% cat

행단위 결합 : paste 여러 파일에 대해여 행간 결합을 수행하거나 하나의 파일에 대해 연속되는 행들을 결합 둘이상의 파일에 대해서 테이블상의 하나의 열과 같이 취급하여 동일한 행번호 끼리 결합 paste [파일명1] [파일명2].. paste -d리스트 [파일명1] [파일명2] ... paste -s [-d리스트] [파일명] d : 행간 결합시 행간 구분문자들의 리스트 s : 한파일의 연속되는 행을 결합 % cat 두 파일을 동일한 필드 값에 따라 행 단위 결합 : join

관계형 데이터 베이스에서의 join 연산과 동일 키로 사용할 필드에 대해 정렬된 두 파일의 각 행에 대해 동일한 키 값을 갖는 행들을 결합 입력으로 사용될 두 파일은 키 값에 대해 오름 차순으로 정렬되어 있어야 함 출력 결과는 기본적으로 키 값이 먼저 표시되고, 첫번째 파일에서 키를 제외한 나머지 필드, 두번테 파일에서 키를 제외한 나머지 필드가 표시 필드 구분은 공백, 탭, 개행문자가 기본, 연속적으로 나타날 경우 하나로 취급
% cat

48. 파일의 암호화 : crypt
파일을 암호화 하여 키를 알지 못하는 사람은 내용을 볼 수 없도록 함 표준 입출력 사용

% cat < crypt.data1
Enter key:hello
test test
안녕하십니까?
%

49. 개행을 제외한 화면내의 보이지 않는 문자 출력
cat -v http://comp-cse.sch.ac.kr/~pl/lecture/linux/file2.html

50. 화일내의 포함된 특정문자열로 찾아서 내용만 출력하기
grep -h '20030305......01' ./R00*

51. 특정 파일의 화일명을 비슷하게 여러개 한꺼번에 바꾸기
ls *.* | awk '{print "mv",$1, $1 }' | sed "s/ ([a-zA-Z0-9]*).([a-zA-Z0-9]*)$/1._2/g"
현재디렉토리의 모든 *.* 파일을 *._* 형식으로 바꾼다. 더 간단하게
ls *.* | sed "s/([a-zA-Z0-9]*).([a-zA-Z0-9]*)/mv 1.2 1._2/g"
--------------------------------------------------------------------------------

52. 어제 날짜 구하기
$ date -v-1d "+%Y-%m-%d" [컴퓨터분류]

53. 원하지 않는 사용자 죽이기
[root@dream /root]# skill -KILL sunny
위의 명령을 내리면 sunny 라는 사용자를 완전히 추방시킬수 있습니다. 그런데 이렇게 완전히 추방시키는게 아니구, 특정 터미널에 접속해있는 사용자만 추방시켜야 할 때도 있겠죠? 그럴때는

[root@dream /root]# skill -KILL -v pts/14
이런식으로 하면 된다 그럼 pts/14 에 연결되어 있는 사용자가 죽게 됩니다.

54. UNIX상에서 한글출력이 깨져 나올경우
유닉스상에서 한글을 stdout출력할 경우 가끔 출력되는 문자들이 몽땅 깨져서 나오는 경우가 있다. 이때부터는 프로그램이 종료된 이후에도 쉘 프람프트를 비롯, 쉘에서 입력하는 모든 커맨드가 깨져서 나온다. 이는 ascii code 로 ^n 에 해당하는 문자가 출력될 때 나오는 현상으로 그 이후로는 MSB가 모두 켜지기 때문이다. 문자가 깨져나오는 이후부터 ascii code 로 ^o 에 해당하는 문자를 출력하면 반대로 된다. 쉘 커맨드 상에서라면, # echo ^v^o 라고 해야겠지만 커맨드가 깨져나오므로 shell이 해석을 못한다. 따라서, command line에서 ^v^o를 치고 enter 하면 된다

55. 현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자
추가하여 바꾸기

29. 기타 명령어 떼
alias(명령어 간소화하기)
apropos(관련된 명령어 찾기)
arch(컴퓨터 종류 알기)
arp(같은 서브넷의 IP 보여주기)
at(작업 시간 정하기)
atd(계획성 있는 작업 실행하기)
awk(특정 패턴 문자 처리하기)
a2p(펄 파일로 바꾸기)
badblocks(배드 블럭 검사하기)
bc(계산기)
biff(메일 수신 소리로 확인하기)
bg(후면작업; 배경화면 설정)
bind(키나 함수 순서 결합하기)
break(루프 빠져나가기)
cal(달력보기)
builtin(내부 명령어 알아보기)
case(조건 처리하기)
cat(화면상에서 파일 보기)
cd(디렉토리 변경하기)
cfdisk(디스크 설정하기)
chattr(파일 속성 변경하기)
chfn(사용자 정보 변경하기)
chgrp(파일, 디렉토리가 속했던 그룹 바꾸기)
chmod(파일 권한 바꾸기)
chown(파일 주인 바꾸기)
chsh(지정된 셸 바꾸기)
cksum(CRC값을 점검한다)
clear(화면 청소하기)
clock(CMOS 시각을 조정하기)
cmp(파일 비교하기)
colcrt(문자 변환 필터)
colrm(열 삭제하기)
column(가로 정렬하기)
comm(파일 비교 출력하기)
command(명령어 알아보기)
continue(루프 계속돌기)
cp(파일 복사하기)
cpio(복사본 만들기)
crontab(cron을 관리한다)
csplit(파일에 서식, 규칙 정하기)
cut(필요한 필드만 출력하기)
date(날짜 보기)
dd(블럭장치 읽고 쓰기)
debugfs(ext2 파일 시스템 디버깅하기)
declare(변수 선언하기)
df(파일 시스템의 사용량 보기)
dirs(디렉토리 목록 표시하기)
dmesg(부팅 메시지 보기)
dnsdomainname(DNS 이름 출력)
domainname(NIS 이름 출력&설정)
du(디렉토리와 파일의 용량 파악하기)
dumpe2fs(파일 시스템 정보 보기)
echo(표준 출력하기)
eject(장치 해제하기)
elm(메일 관련)
enable(내부 명령어 지정)
env(환경변수 출력하기)
eval(인수 읽기)
exec(셸 명령어 실행하기)
exit(종료하기)
expand(탭을 공백으로 변환하기)
export(변수 지정하기)
e2fsck(파일 시스템 복구하기)
fc(지정된 편집기 받기)
fdformat(플로피 디스크 포맷하기)
fdisk(파티션 나누기)
fg(지정된 작업을 전면 프로세스로 시작하기)
file(파일 종류 보기)
find(파일 찾기)
finger(사용자 정보 알기)
fold(정형화하기)
fmt(정형화하기)
for(반복 실행하기)
free(메모리 사용량 알아보기)
fsck(파일 시스템 검사하기)
fstab(파일 시스템에 대한 고정적인 정보 저장하기)
ftp(파일 전송 프로그램)
fuser(프로세스 ID 출력)
getkeycodes(매핑 테이블 출력하기)
grep(특정 문자(열) 검색하기)
gzexe(실행 파일 압축하기)
gzip(압축하기)
halt(시스템 종료하기)
hash(기억해 두기; index 역할)
head(파일의 앞부분 출력하기)
help(도움말 보여주기)
host(호스트 정보 보기)
history(사용 명령어 목록보기)
hostname(서버 이름 알기)
id(계정 정보 알기)
if(조건문 실행하기)
ifconfig(랜카드에 주소 할당하기)
imolamod(모듈 설치하기)
inetd(인터넷 서비스의 최상위 데몬)
init(실행 단계 정하기)
ispell(철자법 검사하기)
jobs(수행중인 프로세스 알기)
kbd_mode(키보드 모드 출력하기)
kill(프로세스 죽이기)
klogd(커널 로그 데몬)
ldd(공유 라이브러리의 의존성 알기)
less(페이지 단위로 출력하기)
let(정규식 표현하기)
lilo(부팅하기)
ln(링크하기)
locate(패턴에 맞는 파일 찾기)
login(로그인하기)
logger(시스템 로그 기록하기)
logname(사용자 로그인명 보여주기)
logout(로그인 셸 종료하기)
look(특정 단어 검색하기)
losetup(중복 장치 확인하기)
lpd(프린트 데몬)
lpq(현재 프린트 작업 상태 출력하기)
lpr(출력하기)
lprm(대기열에 있는 문서 삭제하기)
ls(디렉토리 내용보기)
lsattr(파일 시스템의 속성 보여주기)
lsdev(하드웨어 장치 출력하기)
lsmod(모듈 정보 출력하기)
mail(메일 관련)
make(컴파일하기)
man(매뉴얼 보기)
mattrib
mbadblocks
mcd
mcopy
mdel
mdeltree
mdir
mesg(메시지를 받을 수 있는지 확인하기)
mformat
minfo
mkdir (디렉토리 만들기)
mke2fs(파일 시스템 생성하기)
mkfs(파일 시스템 만들기)
mknod(특수 파일 만들기)
mkswap(스왑 영역 지정하기)
mlabel
mmd
mmount
mmove
mpartition
mount(장치 연결하기)
more(화면 단위로 출력하기)
mrd
mren
mtoolstest
mtype
mutt(메일 관련)
mv(파일 옮기기)
mzip
netstat(현재 네트웍 상황 보기)
nice(프로세스 우선 순위 변경하기)
od(8진수로 파일 보기)
passwd(암호 입력하기)
pidof(실행중인 프로그램의 프로세스 ID 찾기)
pine(메일 관련)
ping(네트웍 확인하기)
popd(pushd 취소)
ps(프로세스 纘?알기)
pstree(프로세스 상관관계 알기)
pwd(절대경로 보여주기)
quota(디스크 한계량 알기)
rarp(rarp 테이블 관리하기)
rcp(원격 호스트에 파일 복사하기)
rdev(루트, 스왑장치, 램 크기, 비디오 모드를 조사하고 설정하기)
rdate(네트웍으로 시간 설정하기)
reboot(재부팅하기)
rmmod(모듈 지우기)
readonly(읽기 전용으로 표시하기)
renice(프로세스 우선 순위 바꾸기)
reset(터미널 초기화하기)
restore(다시 저장하기)
rlogin(바로 접속하기)
rm(파일 지우기)
rmdir (디렉토리 지우기)
route(라우팅 테이블 추가/삭제하기)
rpm(프로그램 추가/삭제)
rpm2cpio(rpm을 cpio로 변환하기)
rsh(원격으로 명령어 실행하기)
rup(호스트 상태 출력하기)
rusers(호스트에 로그인한 사용자 출력하기)
rwall(호스트 사용자에게 메시지 뿌리기)
script(기록하기)
set(변수값 설정하기)
setup(시스템 관련 설정하기)
showmount(호스트의 마운트 정보 보여주기)
shutdown(전원 끄기)
sleep(잠시 쉬기)
source(스크립트 번역하기)
split(파일 나누기)
ssh(암호화된 원격 로그인하기)
stty(터미널라인 설정 보여주기)
su(계정 바꾸기)
suspend(셸 중단하기)
swapoff (스왑 해제하기)
swapon(스왑 활성화하기)
sync(버퍼 재설정하기)
syslogd(로그인 과정 설정하기)
tac(거꾸로 보기)
tail(문서 끝부분 출력하기)
talk(이야기하기)
tar(파일 묶기)
tcpdchk(tcp wrapper 설정하기)
tcpmatch(네트웍 요청에 대해 예측하기)
tee(표준 입력으로부터 표준 출력 만들기)
telnet(원격접속하기)
test(테스트하기)
times(셸에서의 사용자와 시스템 시간 출력하기)
top(cpu 프로세스 상황 보여주기)
tr(문자열 바꿔주기)
true(종료 코드 리턴하기)
type(유형 보기)
ul(밑줄 처리해서 보여주기)
ulimit(제한하기)
umask(매스크 모드 설정하기)
umount(장치 해제하기)
unalias(별명 제거하기)
uname(시스템 정보 보기)
unexpand(공백 문자를 탭으로 변환하기)
uniq(중복된 문장 찾기)
useradd(사용자 계정 만들기)
userdel(계정 삭제하기)
usermod(사용자 계정정보 수정하기)
unset(설정 변수 해제)
uptime(시스템 부하 평균 보여주기)
users(로그인된 사용자 보여주기)
w(시스템에 접속한 사용자 상황 알아보기)
wait(프로세스 기다리기)
wall(모든 사용자에게 메시지 보내기)
wc(문자, 단어, 라인수 세기)
whatis(명령어의 간단한 설명보기)
while(루프 명령어)
who(사용자 알기)
write(콘솔 상에서 간단한 메시지 보내기)
xcopy(반복적으로 복사하기)
XFree86
ypchfn(NIS에서 사용하는 chfn 명령어)
ypchsh(NIS에서 사용하는 chsh 명령어)
yppasswd(NIS에서 사용하는 passwd 명령어)
zcat(압축 파일 보기)
zcmp(압축 파일 비교하기)
zforce(강제로 gz 만들기)
zgrep(압축 상태에서 grep 실행하기)
zmore(압축 상태에서 more 실행하기)
znew(.Z 파일을 .gz로 다시 압축하기)

[*] 문서

문서: SOA(Site Open API) 활용법
제작: ky (thruthesky) <thruthesky@yahoo.co.kr>, Korean
연락: thruthesky@yahoo.co.kr http://jangnans.com
날짜: 2006년 12월 초(배포 2007년 1월 초)
요약: 본 문서를 통해서 블로그와 Open API 가 무엇인지, 그리고 Open API 구체적인 산물인 SOA의 활용에 대해서 설명합니다. (특히, 원격 블로깅에 대해서 초점을 맞추어서 설명을 합니다.)
요약: Web2.0 의 주요 기능 중 하나인 Open API 와 그 한 종류인 Site Open API 에 대해서 설명합니다. SOA 는 개인의 웹사이트에서 직접 제공할 수 있는 막강한 Open API 입니다. 이제 Open API 는 더 이상 대형 웹 사이트의 전유물이 아닙니다.
대상: 웹 서핑의 초보자에게는 블로그와 원격 블로깅에 대해서 설명을 합니다. 고급자에게는 Open API 와 SOA 의 전반적인 소개와 활용에 대해서 안내를 합니다.
문서의 시작 위치: http://jangnans.com
참고: http://siteapi.kldp.net
기타: 본 문서의 배포 시작 위치는 http://jangnans.com 입니다. 본 문서의 변동 사항은 이 곳에서 확인을 하실 수 있습니다. 본 문서를 재 배포하시는 것은 고마우나 이 주소를 삭제하시면 이 글을 읽는 분이 새로운 내용을 확인하지 못할 수 있으니, 본 주소는 삭제하지 마세요.
기타: Open API 에 대해서 많은 내용이 있습니다. 보다 자세한 정보를 제공하기 위해서 여러곳으로 링크를 통해 웹 페이지를 연결해 놓았습니다. 링크가 잘못된 것이 있거나 수정해야할 부분이 있으면 연락 주십시오.  (원격 편집을 바탕으로 블로그 관련 Open API 와 SOA 대해서 설명을 합니다.)

[-] 성질 급하신 분들을 위한 간추림

본 문서는 원격 블로깅과 중/소형 사이트를 위한 Site Open API 에 대해서 설명을 합니다.
원격 블로깅 실제 예제와 체험을 원하시면, http://jangnans.com/?cate=bbs&mode=read&idx=290 페이지를 참고하십시오. 원격 블로깅이 무엇인지 모르는 분은 꼭 이 링크를 따라서 체험을 해 보시길 권합니다. http://memories24.cafe24.com/zb5/tt2zb5.php?article_srl=827&PHPSESSID=96e93768e0179b071d4a117b27b3975a 링크를 참조해 보십시오. 도움을 될 것입니다.
Site Open API 에 대해서 알고 싶다면, http://siteapi.kldp.net 을 참고하십시오.
XML-RPC 에 대해서 알고 싶다면, http://xmlrpc.com 을 참고하십시오.
Blogger API, Meta Weblog API, Movable Type API 에 대해서 알고 싶다면, http://www.xmlrpc.com/metaWeblogApi 를 참고하십시오.
혹시 XML-RPC 나 Site Open API 와 관련하여 개발에 관심이 있다면, http://phpxmlrpc.sourceforge.net/ 를 참고하십시오.
Site Open API 는 중,소형 사이트(홈페이지)에 강력한 Open API를 제공합니다. SOA 버젼 0.4에는 Blogger API, Meta Weblog API 를 포함합니다.
2006 년 말 현제 Site Open API 를 사용가능 한 홈페이지는 제로보드4 로 제작된 홈페이지, 제로보드5 로 제작된 홈페이지, 그누보드4로 제작된 홈페이지, 알지보드로 제작된 홈페이지, 장난-홈툴즈로 제작된 홈페이지 들입니다.
Site Open API 와 호환이 가능한 윈도우즈 응용 소프트웨어는 무궁무진합니다. 본 문서의 관련 항목을 참조하십시오.


[-] 문서에 대해서
본 문서는 본인이 생각하는 Open API와 Site Open API 에 대해서 개인적인 생각을 기록했습니다. 물론 많은 분들에게 도움이 되기를 바랍니다.
혹시나 본 문서에 대해서 고쳐야할 점이 발견되면 꼭 연락을 주십시오.
카이(ky, thruthesky, <thruthesky@yahoo.co.kr>, http://jangnans.com)


[*] 서문
본 문서는 홈페이지의 정보를 이용하는데에 웹브라우저가 전부라는 것에 대한 개념을 깨뜨리고 그 보다 편하고 낳은 방법으로 인터넷을 즐기는 또 다른 방법에 대해서 가르켜줍니다.
뿐만 아니라 여러분의 홈페이지 방문자(사용자,회원)가 어떻게 더 낳은 방법으로 홈페이지의 정보를 이용할 수 있는지에 대해서 알려드립니다. 이 방법을 통해서 여러분의 홈페이지에 많은 극성팬이 생겨나기를 바랍니다.

어느 리서치에서 블로깅을 하는데에 사용하는 툴 중 60.9% 가 웹브라우저이고 나머지가 데스크탑 응용프로그램이라고 합니다. 상당히 부풀려진 결과라 생각합니다.
본인은 블로거들 중 90% 이상이 웹브라우저로 블로깅을 즐기고 있다고 판단합니다.
그러나 원격 블로깅 툴의 열기는 계속해서 급 상승 중입니다.

본 문서는 블로그와 관련된 개념의 정립과 블로깅을 좀 더 손쉽게 할 수 있는 방법을 제시할 것입니다. 그러기를 희망합니다.

블로깅과 관련된 좀 어려운 용어들을 살펴볼까요? 트랙백, RSS, Open API ... 본인이 잠깐 자리를 비운 사이에 인터넷은 많은 발전을 해 있더군요. 특히, 트랙백에 대한 개념이 잡히지 않아서 본인을 괴롭게 했었습니다.
본 문서에서는 이러한 것들에 대해서 약간의 설명을 합니다.
그리고 원격 블로깅과 관련된 XML-RPC, Open API, Blogger API 에 대해서도 짧게 설명합니다.




[-] 요점 정리
본 문서를 통해서 독자들에게 알리고 싶은 주요 내용은 다음과 같습니다.
- 블로그 Open API 를 통한 편리한 블로깅
- SOA(Site Open API)라는 막강한 Open API 를 여러분의 개인 홈페이지에 부착시키는 방법




[-] 블로깅

블로그란 web+log 가 합해져서 blog 로 표기되며, 네티즌이 자신의 관심사에 따라 자유롭게 칼럼, 일기, 취재 기사 따위를 올리는 웹 사이트를 말합니다. 흔히 말하는 1인 미디어의 대표적인 형태라 하겠습니다.

사전적 의미로 블로깅이란 다른 사람의 블로그에 방문하여 글을 보거나, 스크랩하여 자료를 모으는 것으로 모든 블로그 활동을 하는 것을 뜻하는 말로 사용됩니다.

블로그가 어떤 형식을 가져야한다는 규격이 없습니다. 있나요? 본인은 없다고 생각을 합니다. 블로그가 웹 게시판 1개로 구성이 되든, 블로그의 성격에 따라 자료실이나 기타 여러가지 형태의 구조를 가지든, 블로그를 운영하는 사람 마음이라 판단을 합니다. 하지만, 일반적으로 블로그는 자료실이나 게시판이 없이 블로그 운영자만 글을 쓰는 웹 페이지 형태로 간단하게 구성됩니다.


[-] XML-RPC
어려운 이야기입니다. 쉽게 한줄로 설명하고 넘어가겠습니다.
MS-윈도우즈 운영체제에서 유닉스에 존재하는 프로그램을 실행하는 것을 RPC(Remote Procedure Call)라 합니다. 그리고 이것을 인터넷에서 사용되는 XML(eXtended Markup Language)를 바탕으로 데이터를 교환하는 것을 XML-RPC 라고 합니다. XML-RPC 는 이렇게 웹브라우저(또는 웹 클라이언트)가 웹서버와 정보를 교환하는 방식중 하나입니다. 물론 표준이며 자세한 정보는 http://xmlrpc.com 에서 얻을 수 있습니다.
블로그에서 XML-RPC 는 Open API 서비스하는 바탕이됩니다.


[-] 웹 2.0
2006년 말 현재, 많은 이들이 웹 2.0 이라고 목소리를 높입니다. 웹 2.0 대열에 끼지 못하면 괜시리 뒤쳐지는 느낌을 받을 때 입니다. 과거 인터넷 투기 열풍(닷컴 거품 현상)으로 나라가 떠들썩했던 것이 연상됩니다. 뭐 어쨌든 나쁜 현상은 아니라 생각합니다.

웹 2.0 은 현재 표준이 없습니다. 너무 광범위 해서 표준이 안잡힐 것 같습니다.
웹 2.0의 두각은 최근이지만, 엮시나 오래전부터 존재해왔던 개념입니다. 단순하게 생각하면 한 개인의 아이디로 부터 시작을 하지만, 거기에 철학을 부여하고 서비스 정신을 부여하고 규격을 정하려는 움직임이 부산합니다.
아참, 한줄 정의가 필요하나요?
웹 2.0은 기존의 웹(WWW)보다 한단계 발전된 모습을 가르키는 것으로서 좀 더 낳은 기능들을 묶어서 서비스하는 것을 말합니다.

웹 2.0 의 기능으로 Ajax 니 뭐니... 주욱 나열하면서... 꼭 빠뜨리지 않고 포함되는 것 하나가 바로 Open API 입니다.

참고: http://blog.naver.com/quiz94/30004276107
참고: http://blog.naver.com/wooseokint1?Redirect=Log&logNo=110011276684

[-] UCC

UCC 가 뭐냐고 스스로 질문을 하고 UCC 는 그저 UCC 일 뿐이라고 결론을 낼지 모르겠습니다. 사실 우리나라 사람들이야 UCC 를 확대해서 복잡하게 해석할 뿐이지, UCC 는 그냥 User Crecated Contents 로서 그 이상도 아니고 이하도 아니라고 판다는하는게 100% 맞다고 생각을 합니다. 다만 현재(2006년 말) 흔히 얘기하는 UCC는 그 결과물의 형태가 동영상이라는 것을 중심으로 얘기합니다. UCC 를 통해서 스타가 탄생했다느니 양질의 UCC 제작을 위해서 서포트하는 서비스가 많이 등장했다느니, 기존의 이미지, 유머, 패러디, 이야기 만화, 댓글 등의 컨텐츠를 한단계 업그레이드 시켜 자신을 가장 잘 나타내기 위한 방법으로서의 UCC 니, UCC 의 저작권으로 인해서 수익을 창출한다느니, 차세대 비즈니스 모델이라니... 말이 많습니다.
UCC 는 UCC 일뿐입니다. 물론 여러가지 활용도가 있겠지만, 현재로서는 특별히 새로운 것 없이 단순히 기존의 사용자 컨텐츠를 통칭하는 용어 정도 입니다.
UCC 가 기존의 블로그를 대체하는 새로운 미디어로 떠오르며 각광을 받는다는 이야기가 있습니다. 어불성실입니다. UCC 는 UCC 고 블로그는 블로그일 뿐입니다. 둘의 연관 관계가 전혀 없는 것은 아니지만, 이런식의 억지 설정은 참으로 곤란한 일입니다.
그러나 이렇게 간단히 UCC 에 대해서 결론을 짓고 넘어가기에는 UCC 에 대한 인터넷의 열기가 너무 뜨겁게 달궈져 있습니다. 비록 새로운 것이 없는 UCC 이지만, 새로운 이름 UCC 를 통해서 변화를 시도하는 움직임이 너무 거셉니다.

http://blog.naver.com/hongjig?Redirect=Log&logNo=150011261731


[-] Open API
Open API 란? (한줄정의) 홈페이지 내의 유용한 정보를 홈페이지 외부에서 손쉽게 사용할 수 있게 해주는 기능입니다.
예를 들어, 자신의 집(또는 회사)를 찾아오게 하기 위해서 지도 서비스 홈페이지로 부터 지도를 제공받아서 자신의 홈페이지에 걸어놓을 수 있습니다.
다른 예로, ... 검색엔진의 검색어를 입력하고 결과를 보는 페이지를 자신의 홈페이지에 넣을 수 있습니다. 이러한 것이 하나의 Open API 입니다.
이러한 Open API 는 아주 오래전 부터 존재 해 왔던 웹사이트의 주요 서비스로 조용하면서도 끈질긴 생명력으로 최근까지 애용되고 있습니다. 최근에 웹 2.0의 주요 기능 중 하나로 꼽히면서 Open API 기능에 대한 효과를 인정 받고, 웹 서비스의 전면부로 나왔습니다.
과거에는 각 사이트에 개별적으로 간단한 인터페이스로 사이트내의 정보를 외부와 연결을 하였습니다. 물론 대형 서비스 업체들은 그에 걸맞은 스펙(규격 문서)을 제공하며 보다 낳은 서비스로 많은 유저를 확보하려고 노력을 해 왔습니다. 1990년 대 웹의 시작 시점부터 Open API 에 대한 표준 제정에 대해서 많은 움직임이 있었습니다만, 1990년 후반부에 들어서 Open API 의 표준이 하나씩 생겨나기 시작했습니다.

국내의 대형 포털사이트들은 이미 많은 Open API 를 제공하고 있으며 이를 바탕으로 사용자들이 보다 더 쾌적한 환경에서 정보 서비스 이용을 하고 있습니다.
대한민국의 1,2 위 순위를 다투는 최고의 사이트들은 각 사이트의 Open API 를 경쟁적으로 사용자들에게 제공하기 시작을 했으며 국내 최고라고 꼽는 인터넷(웹사이트) 업체를 예로 들자면, 개별 사이트 이용자들에게 어떻게 자사의 웹사이트에서 제공하는 Open API 를 활용할지에 대한 방법을 상세히, 그것도 CGI를 구성하는 스크립트 언어적인 설명을 포함해서 하는 것을 보니 왠지 사용자를 배려한다는 느낌보다 그렇게까지 해서라도 사용자를 참여시키려는 집착에 놀라울 따름입니다.

Open API ... 무엇인지 느낌으로 와 닿나요? 그렇지 않다면 한줄 정의를 외우세요.
더 알고 싶으시면, 검색 엔진에서 "Open API" 라고 쳐보세요. 정보는 널렸습니다. 굳이 몇가지 이곳에 링크를 기록하는 이유는 여러분들의 검색 시간을 덜고 좀 더 정확하고 알찬 정보를 제공하기 위해서입니다. 아래의 링크들을 확인하시면 Open API 의 열기가 얼마나 뜨거운지 아실것입니다.

http://www.newswire.co.kr/read_sub.php?id=198312&ca1=전자통신-
http://issue.nida.or.kr/board/007/060928153203001001.pdf
http://blog.naver.com/dasantea/30722991
http://www.hometown.co.kr/64
http://channy.creation.net/blog/?p=299
http://kr.ks.yahoo.com/service/ques_reply/ques_view.html?dnum=JAK&qnum=4650154&kscookie=1

[-] 표준 규격
(IETF(인터넷 엔지니어링 태스크 포스) 는 인터넷 기술 관련 표준을 정의하는 주체입니다. IETF 는 IAB(인터넷 아키텍쳐 위원회) 의 감독하에 표준을 제정합니다.)

XML-RPC 에 표준이 있듯 Open API 에도 표준이 있습니다. 이미 많은 표준 규격이 정의 되었으며 그 표준 규격을 바탕으로 지금도 많은 사이트에서 Open API 를 작성하고 사용자들에게 제공을 하고 있을것입니다. 그러나 개별 사이트에 꼭 맞는 Open API 규격은 현재로서는 찾을 수 없습니다. 새로운 규격이 필요하며 Site Open API 가 그 한 부분을 담당할 것입니다. 물론 Site Open API 는 표준(국제 표준이나 인터넷 표준)으로 등록되지 않았으며 실무 표준이라고도 얘기하지 않습니다. 하지만 개별 사이트를 위해서 Open API 의 기능을 하기 위해 규격된 Site Open API 는 서버와 클라이언트 구현물이 있으며 서버 개발과 클라이언트 개발에 도움을 제공하고 있는 것이 사실입니다. 만약 자사이트에 Open API 제공이 필요하다면 이미 시행착오를 겪으면서 규격된 Site Open API 를 선택하는 것은 어떨까요?




[-] SOA ( Site Open API )
Site Open API 는 정보를 다루는 공간을 블로그나 홈페이지에 국한하지 않고, 보다 넓은 영역에서 사용이 가능하도록 기존 XML-RPC 구현물(API)들의 기능을 보완, 확장하였으며 (혹은 진행중에 있으며) 많은 영역에서 다루어지는 정보를 보다 자유롭게 교환하기 위해서 개발된 XML-RPC 바탕의 새로운 Open API 입니다.
XML-RPC 에 대한 자세한 내용은 http://www.xmlrpc.com/http://www.xmlrpc.com/spec 를 참고하기 바랍니다. XML-RPC 에 대한 구현물(개발 방법, 개발 라이브러리)에 대해서는 http://www.xmlrpc.com/directory/1568/implementations 를 참고하십시오.
SOA 에 대한 정보는 http://siteapi.kldp.net 을 참고하십시오.

SOA 는 여러분의 홈페이지에 강력한 Open API 기능을 제공할 것입니다. Open API 는 더 이상 대형 사이트의 전유물이 아닙니다.

SOA 로 뭘 할 수 있을까요?
- SOA 는 Blogger API, Meta Weblog API 를 포함합니다. 이것은 곧 모든 블로깅 관련 툴을 사용할 수 있다는 뜻입니다.
- 여러분의 홈페이지를 위해서 SOA 만의 특별한 메소드가 존재합니다. 주요 기능은 홈페이지 정보의 검색입니다. 사용자 정보 검색, 글 정보 검색, 쇼핑몰 정보 검색 등 많은 정보를 외부에서 접근하게 할 수 있습니다.



[-] Blogger API, Meta Weblog API

Blogger API 는 블로그 사이트를 위해서 제작된 표준 XML-RPC 규칙을 따르는 하나의 완전한 Open API 입니다. Blogger API 는 오래전부터 최근까지 계속해서 발전을 하고 있습니다.
초기 Blogger API 의 기능을 보강한 것이 Meta Weblog API 입니다. 엮시 표준 XMLRPC 규칙을 준수합니다.
이러한 Open API 는 웹서버에 설치가 되어 서버의 역활을 합니다. 이를 통해서 블로그의 정보를 데스크톱 응용 프로그램으로 편집할 수 있습니다.
블로그 사이트의 정보에 접근(기록, 편집)하는 편집기들은 블로깅 클라이언트입니다. '원격 블로깅 툴(편집기)'이라는 표현을 쓰는 것이 올바르겠습니다. 이러한 편집기 프로그램은 무수히 많습니다. 소프트웨어 업체들이 앞다투어서 편집기를 선보이고 있습니다. 왜일까요? 그만큼 가치가 있고 블로거들이 선호를 하고 있기 때문입니다. 원격 블로깅 편집기에 대해서 자세한 것은 본 문서의 다른 항목을 참고하시기 바랍니다.

국내의 유명 블로그 제공 사이트에서 이 Open API 들을 100% 그대로 제공하면서 자사이트의 이름을 붙여 EGLOOX+ API(가칭) 로 소개한 바 있습니다. 물론 이것 하나만으로 많은 인기 몰이를 했습니다. 그 이유는? 당연히 그만큼 그 활용성이 인정되어서지 않을까 생각을 합니다.

요점정리를 해볼까요?
블로그와 관련된 Open API 로서 Blogger API, Meta Weblog API 가 있습니다. 이러한 것들은 XML-RPC 표준을 따릅니다. 이 Open API 를 통해서 원격 블로깅이 가능합니다.

그 외,
Blogger API, Meta Weblog API는 Site Open API 속에 모두 포함이됩니다. 따라서 Site Open API 서비스를 하는 홈페이지는 원격 블로깅이 가능하다는 것을 뜻합니다. 뿐만 아니라 SOA 만의 많은 기능을 그대로 이용할 수 있습니다.



[*] 원격 홈페이지 편집

"홈페이지를 편집한다." ... ?? 좀 더 명확하게는 "홈페이지의 내용물(정보)을 편집한다." 입니다.

이 문서에서 원격 블로깅을 하는 방법에 대해서 자세한 설명을 하지 않습니다. 그러나 충분한 개념과 그리고 관련된 유익한 정보를 얻을 수 있는 링크를 제공할 것입니다.

홈페이지 내용물을 편집하는데에는 여러가지 방법이 존재합니다. 홈페이지의 HTML 파일을 FTP 를 통해서 다운로드 해서 편집을 한 다음 다시 FTP 를 통해서 업로드하면 됩니다. FTP 를 지원하는 편집기에서는 다운로드/업로드 과정이 필요 없을 수 있습니다. 위즈위그 편집기라면 더 바랄것이 없죠. 이러한 사용자의 요구를 통해서 점점 쉽게 변했습니다. 편집기에서 FTP 를 직접 지원하고 위즈위그 기능을 제공합니다.
홈페이지의 HTML 파일 뿐만 아니라, 게시판의 내용을 변경하고자 한다면 어떻게 하면 좋을까요? 웹브라우저로 편집하면 되겠죠. 웹브라우저로 편집하는게 불편하지만 이미 손에 익어 있습니다.
그러나 점점 쉽게 변해가고 있습니다. 웹브라우저 내에 위즈위그 편집기가 포함이 됩니다. DHTML, XHTML 등등을 넘어서 ActiveX 컴포넌트, 또는 웹브라우저 자체에 편집기능을 포함하는 것도 있습니다.

홈페이지의 정보를 편집하는데에 있어서도 많이 편해졌습니다. 최근에는 Open API 를 통해서 훨씬 많이 편해졌습니다. 윈도우즈 응용프로그램을 통해서 직접 게시물을 수정할 수 있습니다.

본인이 직접 작성한 블로그 편집기가 있습니다. 윈도우즈 XP 에서 실행이되며(기타 운영체제에서 테스트되지 않았습니다.) 위즈위그 HTML 편집 기능을 포함합니다. 명칭은 '장난'입니다. '멀티 블로깅 툴-장난' 이라고 불려지고 싶구요, 한번 글 쓰기로 수십 수백개의 블로그에 글을 기록할 수 있습니다. 자세한 정보은 http://jangnans.com 을 참고하십시오.
(http://jangnans.com/?cate=bbs&mode=read&idx=289)

MS 사에서도 여러가지 편집기를 내 놓고 있습니다. MS 워드 프로세스 뿐만 아니라, Windows Live Writer 등 많은 편집기를 출시하고 있습니다. 이런 편집기들은 모두 Open API 를 지원합니다. 따라서 이런 툴을 이용해서 문서를 편집한 뒤 곧바로 게시판이나 블로그에 글을 등록할 수 있습니다.
MS 사 뿐만 아니라 국내의 많은 기업에서 웹 편집기를 쏟아내고 있습니다. 본인이 개인적으로 멀티 블로깅 툴을 만들 정도인데, 기업들이야 오죽하겠습니까. 많은 편집기가 유료 또는 무료로 사용이 가능합니다.

[-] 원격 블로깅

위 항목에서 설명한 '블로깅', '원격 홈페이지 편집'과 별 차이 없는 항목일 수 있습니다.

그러나 개념적인 방법을 정리해봅시다.

일반적으로 블로그에 글을 쓰기 위해서는 웹 브라우저로 블로그 사이트에 접속을 해서, 로그인을 하고, 글 쓰기 버튼을 클릭한 다음, 글을 쓰고 출판을 하게됩니다.
전혀 어려운것 없죠? 너무나 자연스러운 부분입니다. 사실은 아주 불편한 방법이지만, 너무나 익숙해져 버린 나머지 불편한 것인지 조차 판가름을 할 수 없습니다.

원격 블로깅은 윈도우즈에서 실행되는 응용 프로그램을 실행해서 글을 쓰고 저장을 하는 것입니다. 맨 처음에 블로그 정보를 기록하기 위해서 EndPoint 와 아이디, 비밀번호를 기록해야하며 필요한 경우 그 외에 몇가지 설정을 더 해야합니다.

너무나 불편한 웹브라우저로 글을 쓰는 것은 너무나 익숙해져 있는데, 아주 편한 원격 블로깅 툴로 글을 쓰는 것은 조금도 익숙하지 않아 불평이 이만 저만이 아닙니다. 원격 블로깅의 길이 너무 어려운 나머지 원격 블로깅을 하는 블로거들에게 욕을 바가지로 퍼붓습니다. 왜 익숙한 웹 브라우저를 놔 두고, 사서 고생을 하느냐구...

처음 하시는 분들에게는 엮시나 쉽지가 않습니다. 도움이 되기를 바라며 여기서는 개념에 대해서 설명을 하겠습니다.
우선 자신의 블로그에 글을 쓰기 위해서는 아이디와 비밀번호가 있어야합니다. 이것은 웹 브라우저로 블로그에 글을 쓰나 원격 블로깅 툴을 통해서 글을 쓰나 마찬가지입니다. 꼭 필요한 것입니다. 그리고 블로그 사이트 주소가 있어야합니다. 웹브라우저로 글을 쓰나 원격 블로깅 툴을 통해서 글을 쓰나 마찬가지인 부분입니다.
이것이 끝인가요?
네, 그렇습니다. 라고 말씀드리고 싶지만, 남은 것이 있습니다.
잘 만들어진 블로그 사이트의 Open API 와 잘 만들어진 원격 블로깅 툴의 만남이라면 이것이 끝입니다. 그러나 그렇지 못한 경우에는 다음과 같은 과정이 추가로 필요합니다.

- EndPoint 의 기록
- Open API 의 선택

원격 블로깅을 할 때에는 EndPoint와 OpenAPI의 선택이 필요합니다. 잘 만들어진 경우에는 이러한 것들이 자동으로 설정이 됩니다. 그러나 잘 만들어지지 못한 경우에는 수동으로 설정해야합니다. 그리고 이러한 정보는 사이트 관리자에게 물어서 알아내어야합니다.

정리해볼까요?
원격 블로깅을 하기 위해서는 블로그 사이트 주소, 아이디, 비밀번호가 필요합니다.
특별한 경우에는 EndPoint 와 OpenAPI 의 선택이 필요합니다. 이 정보는 사이트 관리자가 알고 있습니다.
이러한 정보를 원격 블로깅 툴에 설정을 하고, 글을 쓰면됩니다. 글을 편집하는 부분에 있어서는 웹브라우저보다 훨씬 낳은 느낌을 제공할 것입니다.



[-] 원격 홈페이지 편집 실제 예
블로그 Open API 는 블로그의 정보 편집 기능을 제공합니다. Site Open API 에는 블로그 Open API 가 포함이됩니다. Site Open API 는 블로그가 대상이 아니라, 사이트(홈페이지)가 대상입니다. 따라서 Site Open API 를 통해서 블로깅을 하는 것은 블로그의 정보를 편집하는 것이아니라 홈페이지의 게시물 같은 내용을 편집하는 것입니다. 블로그의 글을 편집하는 것이 아닌 자신의 홈페이지(또는 자긴이 가입된 홈페이지), 사이트라고 생각을 하면 됩니다.

원격 홈페이지 정보의 편집, 또는 원격 블로깅 방법에 대해서 궁금하시죠?
여기 그 정보가 있는 링크를 제공합니다.

http://thruthesky.webzero.co.kr/?cate=bbs&mode=read&idx=290

위 링크된 페이지에는 테스트용 글쓰기를 위한 준비가 되어 있습니다. 위 페이지의 설명에 따라 글을 등록해 보시면 누구나 손쉽게 원격 블로깅에 대해서 알 수 있을 것입니다.




[-] 추천 원격 블로깅 툴

다음은 여러분들에게 추천하는 웹 편집기입니다. 블로깅을 하신다면, 꼭 한번 사용해 보십시오. 아마 환장할 것입니다.
제 홈페이지에 원격 홈페이지(블로그, 사이트)편집에 대한 설명이 있습니다.
http://jangnans.com/?cate=bbs&mode=read&idx=290 링크를 참조하십시오.

** MS 사의 윈도우즈 라이브 라이터(Windows Live Writer)
MS 사의 제품을 소개하고 싶지는 않습니다. 하지만, 수십가지의 원격 사이트 편집기를 사용해 본 결과 가장 잘 만들어졌다고 개인적으로 판단이됩니다.
http://windowslivewriter.spaces.live.com/
http://nosyu.egloos.com/2732428
http://www.choboweb.com/2006/11/02/%ec%96%b4%eb%96%a4-%eb%b8%94%eb%a1%9c%ea%b7%b8-%ec%97%90%eb%94%94%ed%84%b0%eb%a5%bc-%ec%93%b0%ec%8b%9c%eb%82%98%ec%9a%94-windows-live-wirter/
http://idealist.egloos.com/2710808
http://jangnans.com/?cate=bbs&mode=read&idx=290

** Zoundry 블로그 Writer
사용하기가 쉬운편은 아니나, 사용해 본 것 중 가장 넓은 API 범위를 지원한다고 생각합니다.
http://www.zoundry.com/download.html
http://jangnans.com/?cate=bbs&mode=read&idx=290

** 퍼포먼스 (Performance) 파폭 에드온(Fire Fox Addon) http://performancing.com/firefox

** 장난 - 멀티블로깅 툴 (본인이 직접 만든, 유명하지 않은, 다소 불편한, 매스 블로깅 편집기.)
http://jangnans.com
http://lopy.egloos.com/498800
본인이 직접 만든 윈도우즈 용 위즈위그 블로그 편집기라서... 추천에 포함시킵니다.
특징: 멀티 블로깅(한번의 글 쓰기로 수십, 수백개의 블로그에 글 등록), 여러개의 글 한번에 삭제.



[-] 추천 하지 않는 편집기들. 그나마 쓸만 한 것들.
Site Open API 테스트를 위해서 직접 사용해 본 것들이다. 실제로 사용에 어려움이 있는 것들이 많았으며,
** Qumana http://www.qumana.com/download.htm


[0] 그 외 편집기들 (사용해 보지 않았거나 사용에 불편함이 있는 것들)

** MS Word 2007
http://plaming.egloos.com/2875028
http://www.tatterclub.com/admin/entry/MS-Word-2007%EB%A1%9C-%ED%85%8C%ED%84%B0%ED%88%B4%EC%A6%88%EC%97%90-%ED%8F%AC%EC%8A%A4%ED%8C%85%ED%95%98%EA%B8%B0
http://www.zziuni.pe.kr/zziuni/346
** ecto http://ecto.kung-foo.tv/
** 나모웹에디터
** Lycos의 블로깅 툴, Qumana http://lycos.qumana.com/
** Zoho Writer http://writer.zoho.com/jsp/home.jsp
** BlogJet http://www.blogjet.com/
** BlogDesk http://www.blogdesk.org/
** w.bloggar http://wbloggar.com/
** RocketPost 2 http://www.anconia.com/rocketpost/
** Semagic http://semagic.sourceforge.net/
** MySpace Blog Editor https://addons.mozilla.org/firefox/3229/
** WB Editor http://www.wbeditor.com/
** Post2Blog http://www.bytescout.com/post2blog.html
** xfy Blog Editor http://www.xfy.com/personal/blog/
** Bleezer http://larryborsato.com/bleezer/
** Blog Editor http://blog-editor.qarchive.org/downloads.html
** Alive Diary http://www.tucows.com/preview/411931
** Writely (Google Docs) http://www.writely.com/
** http://multiblog.skinmaster-co-uk.qarchive.org/

[-] 기타 블로그 Open API 관련 소프트웨어들
** http://www.newfreedownloads.com/Web-Authoring/Website-Promotion/Blog-Blaster.html
** http://www.stardock.com/products/blognavigator/
** http://www.coffeecup.com/flash-blogger/

[-] 추천 SOA 클라이언트
** 사이팅 http://jangnans.com
실시간 홈페이지 모니터링 툴

[*] SOA (Site Open API)

Open API 는 상당히 매력적인 것입니다. 우리가 현재 사용하고 있는 원격 블로깅 툴만 봐도 그 위력을 쉽게 알 수가 있습니다.
그동안 Open API 는 대형 인터넷 서비스 업체의 전유물로 인식이 되어왔습니다. 최근에는 국내의 설치형 블로그 소프트웨어 제작 사이트에서 블로그 Open API 의 기능을 기본적으로 제작해서 제공을 하고 있습니다.
하지만, 개별 사이트에서 Open API 를 제공하기란 만만치가 않습니다.
그러나 전혀 불가능한것도 아닙니다. 여기 SOA 가 있습니다. SOA 는 현제 http://siteapi.kldp.net 에서 개발이 이루어지고 있으며, 2006년 말 기점으로 제로보드4, 제로보드5, 그누보드4, 장난-홈툴즈, 알지보드 를 통해서 운영되는 홈페이지들은 모두 SOA 를 이용할 수 있습니다. 만약 여러분의 홈페이지(또는 블로그, 쇼핑몰)이 이러한 홈페이지 프로그램을 바탕으로 운영이 되고 있다면 지금 즉시 여러분의 홈페이지에 강력한 Open API 를 제공할 수 있습니다.
여러분의 홈페이지에 좀 더 낳은 기능을 제공하기 위해서 SOA 는 계속해서 변하고 있습니다. 혹시 여러분의 홈페이지에 맞도록 SOA 가 변경되지는 않았을까요? http://siteapi.kldp.net, http://jangnans.com 을 방문해서 살펴보십시오.

SOA 의 주요 기능은 아래와 같습니다.
- 다수의 사이트를 위한 정보의 규격.
- 사이트 내의 정보 검색.
- 사이트 내의 정보 편집. (원격 블로깅 툴과 같은 편집기로 홈페이지의 내용을 직접 편집)
- 사이트간의 정보 교류(연결).


물론 위에 나열된 대부분의 기능들은 대형 인터넷 서비스 사이트에서는 자체적으로 개발을 해서 제공을 하는 기능들입니다. 그러나 Site Open API 는 한 개인의 사이트가 아닌 많은 사이트들이 손 쉽게 이용할 수 있도록 규격되었습니다.

Site Open API 를 가장 잘 활용하는 소프트웨어 중 하나는 '사이팅'입니다. 사이팅은 실시간으로 홈페이지의 새로운 정보를 감지 할 수 있습니다. 예를 들어 홈페이지에 새로운 가입자나 새로운 글이 등록되었을 때, 웹브라우저의 도움 없이 실시간으로 그 정보를 확인할 수 있습니다. 실시간 홈페이지 모니터링 툴 '사이팅'은 http://jangnans.com 에서 얻을 수 있습니다. 본인의 경우 홈페이지가 여러개 됩니다. 사이팅 소프트웨어를 이용해서 여러개의 홈페이지들의 새로운 정보를 실시간으로 확인을 합니다. 누가 가입했는지, 어디 홈페이지에서 어떤 글이 올라왔는지, 광고글이 올라오지는 않는지... 홈페이지가 아무리 많아도 실시간으로 확인을 할 수 있습니다.


SOA 를 이용한 사이트간의 정보 교류는 포괄적인 의미의 기능입니다. 구체적인 내용은 http://jangnans.com 에서 얻을 수 있습니다.

위에 나열된 SOA 의 기능이 어쩌면 2006 년 말 현재의 주요 기능일지 모르겠습니다. 지속적인 개발이 이루어지고 있으며 영역을 넓혀가고 있습니다. http://jangnans.com 의 '장난 - 홈툴즈' 프로그램을 통해서 SOA 가 처음 제작되며, 차츰 다른 유명한 홈페이지 게시판 프로그램을 바탕으로 포팅을 하고 있습니다. 자신의 홈페이지에 직접 SOA 를 추가하기 위한 프로그래밍을 하거나 다른 플랫폼이나 언어를 통해서 구현을 원하시는 분은 연락을 주십시오. 도움이 될 수 있기를 바랍니다.

요점 정리 한번 할까요?
SOA(Site Open API)는 대형 사이트 뿐만 아니라, 중,소형 개인 사이트를 위해서 Open API 서비스를 위한 규격입니다. 국내의 유명 홈페이지 게시판 프로그램들에 기본적으로 제공이됩니다.


[*] 주의점

원격 블로깅이나 기타 Open API 와 관련된 작업을 할 때에 아이디와 비밀번호를 기록해야한는 경우가 있습니다., 이때 잘못된 생각을 가지고 아이디와 비밀번호를 다른 용도로 사용하는 툴이 있을 수 있습니다. 특히, 인증되지 않은 사이트에서 원격 블로깅이 가능하게 한다며 아이디와 비밀번호를 입력하라는 경우가 있습니다. 실제로 가능한 경우이며 이런 이유로 국내 대형 블로그 사이트가 Open API 의 서비스를 중지한 일이 발생했습니다.
어떠한 경우에서든지 타 사이트(잘 모르는 사이트)에 자신의 아이디와 비밀번호를 기록해서는 안됩니다. 물론 데스크톱 응용프로그램이라고 해서 100% 안전한 것은 아니지만, 하지만 그런 위험적인 요소가 훨씬 줄어듭니다.


[*] 기타

[-] Open API 관련 개발

Open API, XML-RPC 작업에 관심이 있다면, 다음의 링크를 참고하십시오.

xmlrpc & xml :
http://trio.co.kr/webrefer/xml/xml10.html
http://blog.naver.com/1234anwj?Redirect=Log&logNo=29772298
xmlrpc & RSS 2.0 :
http://kin.naver.com/knowhow/entry.php?d1id=8&dir_id=8&eid=9xPAUaXu6DWZw1UzR30Nu8IdmgsDgGgi
http://cafe.naver.com/bindung.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=117
http://blogs.law.harvard.edu/tech/rss
xmlrpc & Blogger API 프로토콜 :
http://www.blogger.com/developers/api/1_docs/
http://xmlrpc.free-conversant.com/docs/bloggerAPI

xmlrpc & metaWeblog API 프로토콜 :
http://www.xmlrpc.com/metaWeblogApi
http://www.xmlrpc.com/spec
http://blogs.labo-dotnet.com/vlad/services/metablogapi.aspx
http://www.sixapart.com/developers/xmlrpc/metaweblog_api/metaweblognewpost.html
http://txp.kusor.com/rpc-api/metaweblog-xml-rpc-api

기타 참고
http://en.wikipedia.org/wiki/MetaWeblog

[-] 보안

Site Open API 는 타 Open API 나 웹 서비스와 마찬가지로 HTTP 프로토콜을 사용합니다.
따라서 기존의 웹 브라우저를 놓고 보안의 위험성에 대해서 비교를 한다면, 웹브라우저보다 조금도 덜하거나 더하지 않습니다. 왜냐하면 Site Open API 그 자체가 기존의 웹브라우저 환경과 동일하기 때문입니다.
<head>
<script language="JavaScript">
<!--
function setCookie( name, value, expiredays ) {
    var todayDate = new Date();
        todayDate.setDate( todayDate.getDate() + expiredays );
        document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
    }

function closeWin() {
    if ( document.notice_form.chkbox.checked ){
        setCookie( "maindiv", "done" , 1 );
    }
    document.all['divpop'].style.visibility = "hidden";
}
//--> 
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> 


<!-- POPUP -->
<div id="divpop" style="position:absolute;left:395px;top:190;z-index:200;visibility:hidden;">
<table width=300 height=400 cellpadding=2 cellspacing=0>
<tr>
    <td style="border:1px #666666 solid" height=360 align=center bgcolor=white>
    여기에 내용 삽입
    </td>
</tr>
<tr>
        <form name="notice_form">
    <td align=right bgcolor=white>
        <input type="checkbox" name="chkbox" value="checkbox">오늘 하루 이 창을 열지 않음
        <a href="javascript:closeWin();"><B>[닫기]</B></a>
    </td>
</tr>
        </form>
</table>
</div> 

<script language="Javascript">
cookiedata = document.cookie;   
if ( cookiedata.indexOf("maindiv=done") < 0 ){     
    document.all['divpop'].style.visibility = "visible";
    }
    else {
        document.all['divpop'].style.visibility = "hidden";
}
</script>
 
 
 
 
 
많은 소스중에서 제일 괜찮더군요.
 
잘 사용하세요^^

'Web(웹) Study > Java Script' 카테고리의 다른 글

javascript 문자열 처리 함수 정리  (1) 2008.03.25
JavaScript 정규식  (0) 2008.03.25
자바스크립트와 쿠키(cookie) 사용법  (2) 2008.03.10
웹 비표준 innerHTML  (0) 2008.03.10
prototype.js  (0) 2008.03.10

직장에선 이렇게 처세하라!


1. 책상 서랍 두 번째에 감춰둔 사표부터 버려라.

'사표'가 과연 당신의 미래일까. 미래를 준비하는 것과 도망치는 길을
만들어두는 것은 다르다. 정말 그만둘 때가 되어 '일신상의 이유로
시작합니다.'라는 문구를 쓰는 데 1분이면 충분하다. 미리 써둔 사표는
당신이 회사에 있는 순간순간 불행을 각인시켜주는 것에 불과하다.



2. 회사를 학교로 착각하지 말라.

선생님의 편애를 원망하듯 상사의 편애를 따지고 드는 것은 금물.
고등학교를 졸업한 지가 언제인데… 아직도 당신은 회사가 학교로
보이나. 상사는 교사처럼 자신의 모든 학생(부하 직원)을 사랑할
의무가 없다. 오로지 업무 능력으로만 평가할 뿐.



3. 회사 안에서 혼자만 있을 수 있는 공간을 확보하라.

회의실 문을 잠그고 있거나 여자 화장실에 들어가는 것도 좋은
방법이다. 매번 불쾌한 감정이 그대로 드러나는 당신이라면
‘감정적’이라는 평가를 받지 않을 수 없다. 나만의 사각지대를
만들고 울건, 욕을 하건 그 안에서 해결하라. 나쁜 기분을 회복하는
데도 훨씬 효과적이다.



4. 퇴근 후 곧바로 집에 가지 말라.

특히 야근이 많은 직종일수록 필수. 회사 생활이 사회 생활의
전부가 되는 순간 우리는 여기에 목숨을 걸게 된다. 친한 친구를
만나거나 영화를 보거나 다른 모임에 참석하는 등의 퇴근 후 생활이
회사일을 객관적으로 받아들이는 데 도움을 준다. 침대에 누워
양을 세듯 고민거리를 헤아리는 대신 말이다.



5. 엘리베이터 안에서는 회사 이야기를 하지 말라.

모든 회사 임원과 관계자의 얼굴을 알고 있는가. 이 질문에
자신 있게 ‘예’라고 답할 수 없다면 엘리베이터 안에서는
꼭 입에 지퍼를 채워야 한다. 당신이 했던 가벼운 한마디가
그날 오후 중역회의의 안건이 될 수 있다.



6. 입에 붙은 신세 한탄은 신세를 망친다 .

‘에고~ 시집 가면 그만둬야죠’ ‘오래 다녀 뭐하겠어요’라는
식의 하소연이 입에 붙어 이제 자리와 상대를 불문하는 지경에
이르렀다. 어느 날 특별히 잘난 것 없는 입사 동기가 먼저
승진한다는 사실을 알게 됐고, 너무나 억울해 상사에게 “이런
처우를 받고는 더 이상 회사 못 다니겠어요”라며 비장의 카드를
꺼냈는데 상사가 말하길 “잘됐네, 자네 계속 다니기 싫어했잖아.”
난 결국 찍 소리도 못하고 진짜 사표를 써야 했다. 김인애(28세)



7. 끼리끼리 놀면 다르다.

동종 업계에 근무하는 다른 회사 사람들과의 교류는 언제나 새로운
정보의 창구가 된다. 이직 정보를 얻는 데도 유용하고, 사적인
자리에서 신제품의 경향이나 유용한 시장 정보를 얻을 수도 있다.
그럼 어디서 그런 모임을 찾아낼까. 'IT 광고홍보 마케팅 담당자들의
모임’ ‘ 파티&이벤트 업계 종사자들의 모임’ ‘외식 업계
종사자들의 모임’ 등 다양한 직업 동호회가 있다.



8. 매달 월급으로 자신을 위한 선물을 사라.

매달 급여가 가져다주는 잉여생산물의 매력을 즐길 필요가 있다.
그것이 명품이건, 근사한 한끼건 간에 나 자신에게 돌아오는 게
생기면 웬만한 고통도 감수할 파워가 생긴다.



9. 모든 이들에게 사랑받겠다는 꿈에서 깨어나라.

남들에게 사랑받기를 원하고 남들이 자기를 싫어하는 것을
두려워하는 대다수의 여성들. 정말이지 천만의 말씀 만만의 콩떡이다.
인기 절정의 이효리도 안티 팬이 수십만 명이고 부처나 예수 등
성인들도 모든 사람에게 이해받지 못해 종교도 이렇게 다양하지 않은가.
누가 나에 대해 험담하건 상사가 오해를 하건 그건 그들 맘이다.
좌절감을 느끼며 스스로를 질책할 이유가 없는 것이다.



10. 무슨 일이 있어도 울음은 터뜨리지 말라.

얼마 전 여사원이 많은 회사로 이직한 최부장의 이야기를 들어보자.
회식 중 적당히 술을 마신 부하 여직원이 갑작스레 눈물을 터뜨렸단다.
이유인즉슨‘과장님은 왜 K에게만 일을 주냐는 것’. 그녀가 속으로
얼마나 고민했는지는 알 수 없지만 10여 명의 동료(심지어 후배에
이르기까지) 앞에서 우는 것은 ‘나 바보예요’라는 전단지를 뿌리는
것과 같다. 당황한 상사의 눈에 그녀가 예쁘게 보였을 리도 만무하고.



11. 은행, 병원과 멀어져라.

점심 먹고 은행 30분, 한 달에 2~3번 병원 들렀다 출근... 같은
여자라도 이런 동료는 용서되지 않는다. 금융 업무는 인터넷 뱅킹으로
처리하고, 아플 때는 기어서라도 출근부터 한다. 앉아서 사색이 된
당신에게 상사가 두 번쯤 권하면 마지못해 병원에 가는 척 바로
퇴근하면 될 일.



12. 두 번에 한 번은 당신이 밥을 사라.

자신보다 나이 어린 남자 후배 앞에서 밥값을 아끼면서 선배로
대우받기를 원하는 팥쥐 근성부터 버려라.
남자 동료와의 식사는 결코 데이트가 아니다.



13. Yes건 No건 긍정으로 답하라.

주말에 출근해달라고 말하는 거래처의 부탁을 거절하고 싶다면
일단 ‘꼭 필요하면 나가야죠’로 답해라. 그 다음 그 전에 일을
끝낼 수 있는 방법을 찾아보고 그도 안 되면 적당한 이유를 만들어
날짜를 미룬다 해도 그는 당신이 진심이었다고 생각하고 결코 기분
나빠하지 않을 것이다.



14. ‘아마도’ ‘거의’ ‘대개’ ‘주로’와 같은 표현과 멀어져라.
 
‘A프로젝트 건은 전례와 비교할 때 문제가 없습니다’라는 문장에
앞의 단어를 넣어보자. ‘아마도 A프로젝트 건은 대개의 전례와
비교할 때 거의 문제가 없을 것 같습니다.’ 흐리멍텅한 말투는
결과물마저 흐리멍덩하게 보이도록 한다. 참고로 ‘…하지 않을까요?’
라는 접미사도 전혀 귀엽지 않으므로 쓰지 말 것.



15. 처음 받은 일은 ‘할 수 있다’로 답하라.

겸손의 의미로 “해본 적이 없어서 잘해낼 수 있을지 모르겠네요”
라고 답했을 때 이 말이 상대에게 ‘못하겠다’로 들릴지, '해본
적이 없다’로 들릴지 생각해보라. 무슨 일이든 처음은 있기 마련.
모르는 건 물어보면 된다. 소극적인 태도로는 상사 역시 불안감을
갖게 되고 다음 기회란 영영 멀어져버릴지 모른다.



16. 나쁜 결과는 오후에 옆에 앉아서 보고하라.

상사에게 좋지 않은 결과를 보고하는 타이밍도 의외로 중요하다.
컨디션에 따라 감정의 변화가 심한 오전보다는 어느 정도 심리적인
안정이 보장된 오후 시간이 좋다. 또 앉는 위치는 90도로 꺾인
옆자리가 안정적. 맞은편은 주로 설득이나 논쟁과 같은 네거티브
대화에 적절하며, 옆자리는 고민 상담과 같은 포지티브 대화에 유용하다.



17. 상사나 거래처와의 대화에서는 숫자를 활용하라.

숫자는 당신의 정보를 훨씬 가치 있어 보이도록 포장해준다.
더 많은, 더 높은 등의 애매한 표현보다는 10% 많은, 3포인트
상승한이라는 단어가 더 똑부러져 보이는 것처럼.

자바스크립트 쿠키는 CGI의 HTTP Cookie와 내용 및 작동하는 법은 같으나 약간의 차이가 있습니다. 아래는 자바스크립트 쿠키에 대한 개요입니다.

1. 자바스크립트에서 지원하는 사용자의 특정 정보를 저장하는 기법
2. 클라이언트의 브라우저에 저장되나 서버에는 저장되지 않습니다.
3. 일정 기간 동안만 유효하게 할 수 있고, 유효기간(만료기한)이 설정되지 않을 경우 브라우저 종료시 자동으로 사라집니다.
4. 클라이언트에는 브라우저가 실행중에는 메모리에, 종료될 경우 만료기한에 따라 cookies.txt라는 파일에 저장될 수 있습니다.
5. 웹 서버의 환경변수 HTTP_COOKIE에는 저장되지 않습니다.

자바스크립트 쿠키는 서버와는 무관하기 때문에 일반적으로 잘 사용하지는 않습니다. 그러나, 클라이언트 내에서는 얼마든지 쿠키의 정보유지기법을 사용할 수 있으므로 간단한 방문 기록 남기기 등에서는 쓰일 수 있습니다.

자바스크립트에서 쿠키를 참조하기 위해서는 document.cookie객체를 사용합니다. 아래는 가장 일반적으로 사용되는 쿠키 관련 자바스크립트 함수들입니다. 아래 함수의 주요 기능은 document.cookie객체의 문자열 조작을 통하여 쿠키로부터 값을 빼내는데 사용됩니다.

function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);
   if (endstr == -1) endstr = document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen) { //while open
      var j = i + alen;
      if (document.cookie.substring(i, j) == arg)
         return getCookieVal (j);
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
   } //while close
   return null;
}

function SetCookie (name, value) {
   var argv = SetCookie.arguments;
   var argc = SetCookie.arguments.length;
   var expires = (2 < argc) ? argv[2] : null;
   var path = (3 < argc) ? argv[3] : null;
   var domain = (4 < argc) ? argv[4] : null;
   var secure = (5 < argc) ? argv[5] : false;
   document.cookie = name + "=" + escape (value) +
      ((expires == null) ? "" :
         ("; expires=" + expires.toGMTString())) +
      ((path == null) ? "" : ("; path=" + path)) +
      ((domain == null) ? "" : ("; domain=" + domain)) +
      ((secure == true) ? "; secure" : "");
}

위의 함수에서 사용자가 쓸 함수는 GetCookie(), SetCookie()입니다. 사용하는 문법은 아래와 같습니다.

* GetCookie
설정되어 있는 쿠키의 값을 가져옵니다.

쿠키값 = GetCookie(name)

인수 설명)
name(필수 요소)
저장된 Cookie의 이름
 
예)
cookieval = GetCookie('myCookie');

* SetCookie
쿠키의 값을 설정한다.

SetCookie(name, value, [expires], [path], [domain], [secure])

인수 설명)
name(필수 요소)
Cookie에 저장하고자 하는 이름
value(필수 요소)
Cookie에 저장된 이름(name)에 대한 값
expires(생략 가능)
Cookie가 설정된 후 Cookie가 무효화되는 시간이다.
(GMT Type - "Wdy, DD-Mon-YYYY HH:MM:SS GMT")
설정된 시간이 지나게 되면, 이 Cookie는 사용할 수 없게 된다.
만약 expires에 설정된 시간보다 더 일찍 브라우저가 종료될 경우, 브라우저는 자동으로
cookies.txt라는 파일을 생성하여 그 정보를 이 파일에 저장해 둡니다.

Netscape 4.x의 경우)
C:\Program Files\Netscape\Users\[Profile name]\cookies.txt
Internet Explorer 4.x의 경우)
C:\windows\Cookies\[remote user name]@[domain].txt


path(생략 가능)
문서의 경로명을 설정합니다.
설정하지 않으면 현재 Cookie를 보내는 문서의 URL상의 경로(도메인 명 제외)로 설정됩니다.
domain(생략 가능)
웹 서버의 도메인 명을 설정합니다.
설정하지 않으면 현재 Cookie를 보내는 문서가 속한 도메인 명으로 설정됩니다.
secure(생략 가능)
HTTPS Server(HTTP over SSL)와 같은 Secure Server에서 Cookie를 보낼 경우 이 값을 설정해 줍니다.
 
예 1)
쿠키값만 설정할 경우
SetCookie('myCookie', 1234); 

예 2)
쿠키값 및 만료일을 설정할 경우
var ExpDate = new Date();
ExpDate.setTime(ExpDate.getTime() + 1000*60*60*24);
SetCookie('myCookie', 1234, ExpDate);

※ 위의 예제는 만료일을 쿠키가 생성되는 현재 시간 + 1일로 설정합니다.
만약, 만료일을 쿠키가 생성된 후 1시간으로 설정하겠다면 위의 예제에서 24(시간)를
1(시간) 로 바꾸어 주면 됩니다.


아래의 예제는 쿠키값을 설정하고, 만료일을 쿠키가 설정된 후 1시간 이후로 설정하는
예제입니다.

<html>
<head>
<title>JavaScript Cookie Test</title>
<script language=javascript>
<!--
var ExpDate = new Date();

function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);
   if (endstr == -1) endstr = document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;
   while (i < clen) { //while open
      var j = i + alen;
      if (document.cookie.substring(i, j) == arg)
         return getCookieVal (j);
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
   } //while close
 return null;
}

function SetCookie (name, value) {
   var argv = SetCookie.arguments;
   var argc = SetCookie.arguments.length;
   var expires = (2 < argc) ? argv[2] : null;
   var path = (3 < argc) ? argv[3] : null;
   var domain = (4 < argc) ? argv[4] : null;
   var secure = (5 < argc) ? argv[5] : false;
   document.cookie = name + "=" + escape (value) +
      ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
      ((path == null) ? "" : ("; path=" + path)) +
      ((domain == null) ? "" : ("; domain=" + domain)) +
      ((secure == true) ? "; secure" : "");
}

function SetCookieVal () {
   pathname = location.pathname;
   var myDomain = pathname.substring(0, pathname.lastIndexOf('/')) +'/';
   ExpDate.setTime(ExpDate.getTime() + 1000*60*60);
   SetCookie('MyCookie', 'Hello Cookie!', ExpDate, myDomain);
}
//-->
</script>
<body>
<script language=javascript>
<!--
   if(GetCookie('MyCookie')) {
      alert("Cookie Found");
      document.write(GetCookie('MyCookie') + '<br>');
   }
   else {
      SetCookieVal();
      document.write('새로운 쿠키값이 설정되었습니다. ');
      document.write('보고 싶으시면 Reload를 누르세요.<br>');
      document.write('이 쿠키는 ' + ExpDate.toString());
      document.write(' 에 자동 폭파됩니다.<br>');
   }
//-->
</script>
</body>
</html>

쿠키는 설정된 후에 브라우저가 활성화 되어 있고 만료일이 경과되지 않는 한 브라우저에 따라 설정된 디렉토리 내의 cookies.txt를 지우더라도 값이 유지된다는 점을 주의하기 바랍니다.

'Web(웹) Study > Java Script' 카테고리의 다른 글

JavaScript 정규식  (0) 2008.03.25
레이어 팝업 소스  (8) 2008.03.11
웹 비표준 innerHTML  (0) 2008.03.10
prototype.js  (0) 2008.03.10
Ajax 관련 링크들...  (0) 2008.02.27
사용자 삽입 이미지

한예슬식 남자고르기 프로젝트! 골라 먹는 재미에 푹 빠졌다! 그녀의 남자 농사가 시작된다!

1단계 _ 일단, 모든 가능성을 열어두고 , 찜(?)하라. 화려한 미모와, 착한 몸매, 게다가 잘 나가는 광고대행사의 AE라는 직함까지~ 지성과 미모를 겸비한 이 시대 최고의 완소녀 신미수. 그녀가 몸소 보여주는 연애비법 제1단계는 바로, 오픈 마인드! 최대한 많은 후보자를 거느린 채 일단, 어떤 상대와도 가능성(?)을 열어놓고 지내며 천천히 골라야 한다는 게 그녀의 작업원칙! 그런만큼, 그녀의 남자쇼핑 리스트엔 재벌 3세부터 고시생, 섹시한 연하남까지 다양한 남자들이 구비(?)되어있다. 하지만, 이렇게 용의주도한 미스신 앞에, 사사건건 태클을 거는 안티남이 나타났으니…속은 뒤집히지만 뭐, 모.든.가.능.성.(?)이 이 녀석에게도 예외는 아니겠지? 일단 안티남까지 쇼핑리스트에 추가~!

 2단계 _ 진짜 괜찮은 놈인지 간을 보라~! 돌다리도 두들겨 봐야한다고 하지 않았던가! 아무리 외모나 재력, 능력, 비젼이 좋더라도 재고, 또 재어야 후회가 없다. 줄 듯 안주는(?) 고도의 테크닉으로 수많은 남성들을 울리던 그녀의 데이트 목적은 오로지 ‘간보기!’

 3단계 _ 위기의 순간, 진품(?)은 정체를 드러낸다. 반품은 힘드니 제대로 고를 것~! 가장 결정적인 순간, 인간은 본성을 드러낸다. 이건, 연애에서도 마찬가지! 엄청난 용의주도함으로 늘 상상을 초월하던 양다리, 아니 다(多)다리의 달인인 미스신이지만, 그녀에게도 위기는 찾아온다. 완벽하다고 생각했던 그녀의 쇼핑리스트 속 남자들의 예상치 못한 반격으로 패닉상태에 빠진 미스신에게 엎친데 덮친격으로 그녀의 문어발 연애마저 꼬리 잡히기 시작하는데… 하지만 이런 때 영원한 충성심으로 무장한 채 그녀를 위기에서 구출, 그녀의 맘을 흡족케하는 남자가 바로 진품~!!! A/S도, 반품도 없는 “연애의 세계”에서 그녀가 고른 남자는 과연 누구일까…?!

'문. 화. 생. 활. > 영화감상' 카테고리의 다른 글

캐리비안의 해적 4 - 낯선 조류 (2011)  (0) 2011.05.21
11월 14일 강남CGV에서 미인도를 봤지...  (7) 2008.11.16
미쓰 홍당무  (0) 2008.10.17
이글아이  (0) 2008.10.10
점퍼 (Jumper, 2008) - ★☆  (0) 2008.03.10

+ Recent posts