'Know/ETC'에 해당되는 글 7건

  1. 2015.10.26 Install Docker for Windows
  2. 2009.06.30 youtube developer api
  3. 2006.10.23 소켓통신 참조
  4. 2006.08.10 [펌] Web 2.0 Conference Korea 발표 B/S
  5. 2005.11.14 WinCVS의 간략한 사용방법
  6. 2005.11.11 노출된 정보 최소화하기
  7. 2005.11.11 야후 미니사전

Install Docker for Windows

Know/ETC 2015.10.26 15:11

http://docs.docker.com/windows/step_one/


Docker를 Windows에 설치할 경우, default machine을 실행하지 못하고, 

에러코드 255나 1로 exit되는 경우가 있다.


예) 

Error setting up host only network on machine start: exit status 1

Unexpected error getting machine url: exit status 255


VM이 활성화 되어 있지 않거나, 

BIOS의 virtualization 옵션이 활성화 되어 있지 않을 경우 에러가 난다.


BIOS로 진입하여 해당 옵션을 enable로 활성화 시킬 경우, 정상적으로 Docker가 실행된다.


windows7일 경우 아래의 링크에서 HAV detection tool을 다운로드받아 실행하여 체크.


http://www.microsoft.com/en-us/download/details.aspx?id=592



'Know > ETC' 카테고리의 다른 글

Install Docker for Windows  (0) 2015.10.26
youtube developer api  (0) 2009.06.30
소켓통신 참조  (0) 2006.10.23
[펌] Web 2.0 Conference Korea 발표 B/S  (0) 2006.08.10
WinCVS의 간략한 사용방법  (0) 2005.11.14
노출된 정보 최소화하기  (0) 2005.11.11
Trackbacks 1 : Comments 0

youtube developer api

Know/ETC 2009.06.30 18:09
youtube에 타사이트에서 동영상을 올릴 수 있는 방법이 없을까 해서 서핑하던중

역시 개발자를 위해 제공하는 API가 있었다.

http://code.google.com/intl/ko/apis/youtube/2.0/developers_guide_java.html

http://code.google.com/intl/ko/apis/youtube/2.0/developers_guide_protocol.html#Browser_based_uploading


간단히 정리하면, 동영상을 올리는 두가지 방법이 제공이 되는데 아래와 같다.

Browser-based uploading
 - 브라우저의 form을 이용해서 올릴때 사용
Direct Uploading
 - Direct로 올릴때 사용

하는듯... 하다? ㅋㅋ

좀더 자세한건 집에가서 봐야겠구나..

아고 허리야.

'Know > ETC' 카테고리의 다른 글

Install Docker for Windows  (0) 2015.10.26
youtube developer api  (0) 2009.06.30
소켓통신 참조  (0) 2006.10.23
[펌] Web 2.0 Conference Korea 발표 B/S  (0) 2006.08.10
WinCVS의 간략한 사용방법  (0) 2005.11.14
노출된 정보 최소화하기  (0) 2005.11.11
Trackbacks 0 : Comments 0

소켓통신 참조

Know/ETC 2006.10.23 17:55
http://cafe.naver.com/goonin.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=6334

'Know > ETC' 카테고리의 다른 글

Install Docker for Windows  (0) 2015.10.26
youtube developer api  (0) 2009.06.30
소켓통신 참조  (0) 2006.10.23
[펌] Web 2.0 Conference Korea 발표 B/S  (0) 2006.08.10
WinCVS의 간략한 사용방법  (0) 2005.11.14
노출된 정보 최소화하기  (0) 2005.11.11
Trackbacks 0 : Comments 0

[펌] Web 2.0 Conference Korea 발표 B/S

Know/ETC 2006.08.10 17:30
[출처] http://channy.creation.net/blog/?p=269


웹 2.0 회사 들이 가지고 있는 대표적 기술 요소들을 한번 정리해 보고자 합니다. 열 가지 모두를 가지고 있어야만 웹 2.0 서비스는 아니지만 대략적인 공통적이라는 것을 알 수 있습니다. 중요한 점은 웹 2.0 회사들이 가진 이들 특징은 기존 웹 서비스가 가기지 못했던 웹 에 대한 기본기였다는 점입니다.


1. 웹 표준(XHTML/CSS)
2 브라우저 지원(Firefox, Safari)
3 유니코드 (UTF-8)
4 논리적 주소체계 (Logical URI)
5 컨텐츠 신디케이션(RSS/Atom, RDF)
6 오픈 API (REST, SOAP, Web Services)
7 집단 지성(Folksnomy, Tag)
8 가벼운 서비스 프레임웍(Python, Ruby on Rails)
9 풍부한 사용자 경험(Ajax, Flex)
10 확장 기능 (Firefox Extensions, Widget)


Web 2.0 컨퍼런스에 대한 기술적인 기반에 대한 발표 Agenda
1. 닷컴 버블 후 기술 기반 성공 사례
- Google, Amazon, Ebay, Bittorent…

2. 웹2.0 기반 기술의 아이디어 및 철학
2.1 사람 중심 시맨틱 웹
2.2 오픈 소스 및 오픈 스탠다드
2.3 지속적인 공개 베타

3. 웹2.0을 이루는 10가지 기술 요소
3.1. 웹 표준(XHTML/CSS)
3.2 브라우저 지원(Firefox, Safari)
3.3 유니코드 (UTF-8)
3.4 논리적 주소체계 (Logical URI)
3.5 컨텐츠 신디케이션(RSS/Atom, RDF)
3.6 오픈 API (REST, SOAP, Web Services)
3.7 집단 지성(Folksnomy, Tag)
3.8 가벼운 서비스 프레임웍(Python, Ruby on Rails)
3.9 풍부한 사용자 경험(Ajax, Flex)
3.10 확장 기능 (Firefox Extensions, Widget)

4. 향후 웹2.0 기술 트렌드
4.1 Ajax 기반 비지니스 응용
4.2 사용자 중심 아이덴티티(Identity)2.0
4.3 개발자 중심 생태계 시스템
4.4 Mashup, 플랫폼 협업
4.5 모바일 웹(MobileWeb) 2.0
4.6 소프트웨어 서비스(Software Service)

덧. 이러한 기반 기술에 대해 이정환 기자님이 정리해 주신 웹 2.0 시대를 여는 10가지 큰 변화에서 정리해 주셨습니다. 잘 정리해 주신 것 같아 보관 차원에서 인용을 했습니다.

1. 웹 표준을 지켜라.
한동안 테이블이냐 CSS냐의 논쟁이 개발자들 사이에 이슈로 떠올랐다. 쉽게 설명하면 테이블은 표, CSS(cascading style sheets)는 스타일 양식이라고 할 수 있다. 만약 2단 구성으로 페이지를 만들고 싶으면 간단히 2단 테이블을 만들어 그 안에 콘텐츠를 집어넣으면 된다. 문제는 이렇게 페이지를 만들어 놓으면 나중에 고치기가 매우 어렵다는 것이다. 2단 구성을 3단 구성으로 바꾸려면 소스를 하나하나 뜯어 고쳐야 한다.

CSS는 콘텐츠와 디자인을 분리하는 방식이다. 별도의 파일로 스타일 양식을 만들어 지정해 두고 그 파일만 고쳐주면 페이지 디자인이 바뀌게 된다. 테이블을 쓰는 것보다 직관적이지는 않지만 전체적으로 디자인 원칙을 잡는데 도움이 된다. 수많은 페이지의 디자인을 하나의 CSS 파일로 관리할 수도 있다는 이야기다. CSS는 월드 와이드 웹 국제 컨소시엄인 W3C가 권장하는 표준 웹 디자인 방식이다.

웹 2.0 시대에는 이처럼 콘텐츠와 디자인의 분리가 더욱 중요하게 됐다. 이를테면 시각 장애인들을 위한 페이지를 따로 만든다고 생각해 보자. 아직도 테이블을 쓰는 많은 개발자들은 페이지를 통째로 다시 짜는 작업을 해야 한다. 하나의 파일 안에 콘텐츠와 디자인을 엉망으로 뒤섞어 놓았기 때문이다. 그러나 CSS를 쓰는 개발자들은 간단히 새로운 CSS 파일을 지정해 주는 것만으로도 전혀 다른 새로운 페이지를 만들 수 있다.

정보를 모아서 보여주기만 하면 됐던 웹 1.0 시대에는 웹 디자인이 중요했다. 이왕이면 더 예쁘게 그리고 더 보기 편하게 보여줘야 했던 것이다. 그런데 웹 2.0 시대에는 보여주는 것만으로는 부족하다. 포장도 포장이지만 무엇을 어떻게 보여주느냐가 더 중요하게 된 것이다. 이제 웹 디자인 못지않게 데이터 디자인이 중요한 시대가 됐다. 정보를 어떻게 가공하고 활용하느냐가 성공의 관건이라는 이야기다.

표준화된 CSS 방식을 도입하면 디자인을 손쉽게 바꾸는 것은 물론이고 필요에 따라 그림 파일을 뺀 텍스트 파일만 불러올 수 있고 휴대전화나 PDA 버전으로 만들 수도 있다. 시각 장애인 전용 페이지도 손쉽게 만들 수 있다. 개발과 유지·보수에 드는 비용과 시간도 크게 줄어든다. 무엇보다도 데이터의 가공과 활용이 훨씬 자유롭게 된다. 콘텐츠와 디자인이 분리될 때 데이터 디자인이 비로소 가능하게 된다는 이야기다.

웹 2.0 시대에는 운영체제나 브라우저, 표시장치에 관계없이 어디에서나 접근 가능한 페이지가 필요하게 된다. 윈도우즈에서나 맥OS에서나 리눅스에서나 또는 인터넷 익스플로러나 파이어폭스, 사파리, 오페라 등등 온갖 브라우저에서, 그리고 컴퓨터 모니터뿐만 아니라 휴대전화의 작은 화면에서도 같은 콘텐츠를 각각 최적화된 디자인으로 볼 수 있어야 한다. 콘텐츠를 가공하고 활용할 새로운 가능성을 열어두는 것이다.

CSS 방식을 도입하면 트래픽도 크게 줄어든다. 마이크로소프트는 2004년 홈페이지를 개편하면서 테이블을 모두 빼고 웹 표준을 적용했다. 메인 페이지를 기준으로 74개의 테이블이 사라졌고 페이지 용량이 40KB에서 15KB로 줄어들었다. 그 결과 하루 924GB, 연간으로 하면 329TB, 무려 CD 46만5천장 분량의 트래픽을 줄일 수 있었다. 우리나라에서도 정보통신부 등 정부기관 홈페이지가 앞장서서 웹 표준 CSS 방식을 도입하는 추세다.

2. 모든 브라우저를 지원하라.
그동안 개발자들은 인터넷 익스플로러에 맞춰서 사이트를 개발해 왔다. 그래서 익스플로러에서는 보이지만 다른 브라우저에서는 보이지 않는 사이트도 많았다. 우리나라의 경우 최근까지 익스플로러의 시장 점유율이 99%에 이를 정도였다. 익스플로러가 아니면 보이지 않기 때문에 다들 익스플로러를 쓰게 되고 다들 익스플로러로 접속하기 때문에 개발자들도 굳이 다른 브라우저를 지원할 필요를 느끼지 못했던 것이다.

그런데 생각해보자. 10만명의 1%는 1천명이지만 1천만명의 1%는 10만명이다. 당신이 개발자라면 이 10만명을 결코 무시해서는 안 된다. 게다가 세계적으로 익스플로러의 시장 점유율은 갈수록 떨어지고 있다. 익스플로러를 버리고 파이어폭스를 쓰는 사용자들이 이미 10%를 넘어섰다. 이 비율은 앞으로 더욱 늘어날 것으로 보인다. 한번쯤 당신의 사이트가 파이어폭스에서 어떻게 보이는지 살펴볼 필요가 있다.

파이어폭스를 쓰는 사용자들은 파이어폭스를 지원하지 않는 사이트에 잘 가지 않게 된다. 주목할 것은 이들이 대부분 웹 2.0 시대의 오피니언 리더라는 사실이다. 이들은 발 빠르게 변화를 따라잡고 유행을 선도하고 이슈를 제기한다. 파이어폭스를 지원하지 않는다는 건 이들을 받아들이지 않겠다는 의미다. 익스플로러의 시장 점유율이 떨어지는 것보다 더 빠른 속도로 당신의 사이트는 사용자들을 잃게 될 수 있다.

핵심은 이제 익스플로러가 유일한 브라우저가 아닐 수도 있다는 것이다. 익스플로러 뿐만 아니라 파이어폭스를 비롯해 모든 브라우저를 받아들이는 최선의 대안은 결국 철저하게 표준을 따르는 것이다.

3. 문자 인코딩을 UTF-8로 바꿔라.

컴퓨터의 이진수를 문자로 바꾸는 과정을 인코딩이라고 하는데 당연히 쓰는 언어에 따라 인코딩 체계가 다 다르다. 우리나라 사이트는 그동안 대부분 EUC-KR이라는 방식을 사용해 왔다. 그런데 문제는 한글이 아닌 다른 언어로 된 운영체제에서는 이 방식의 페이지를 읽지 못한다는 것이다. 이를테면 ‘공기업 민영화’라는 단어는 ISO 방식에서 ‘°ø±â¾÷ ¹Î¿µÈ­’로 보인다. 이런 문제를 해결하는 대안이 바로 유니코드라고 불리는 UTF-8 방식이다.

UTF-8은 한글과 한자를 비롯해 4만자에 이르는 세계 대부분 나라의 언어를 포함하고 있다. 만국 공통의 문자 부호 체계인 셈이다. UTF-8 방식으로 인코딩된 페이지는 세계 어느 나라 어느 언어로 된 운영체제에서도 특별한 설정 없이 우리가 보는 것과 똑같은 페이지를 보여준다. 세계적으로 웹 2.0 시대를 주도하는 사이트들은 이미 UTF-8 인코딩을 적용해 한글뿐만 아니라 세계 모든 나라의 언어를 자유롭게 쓰고 읽을 수 있다.

파일 이름이 한글로 된 페이지가 열리지 않았던 경험이 다들 한번쯤 있을 것이다. 브라우저가 EUC-KR 방식으로 인코딩된 페이지의 주소 읽지 못하기 때문이다. 브라우저의 설정을 바꿔주면 되지만 더 근본적인 대안은 페이지를 처음부터 UTF-8로 만드는 것이다. 사용자들에게 설정을 바꿀 것을 요구하지 말고 누구나 쉽게 불편없이 접근할 수 있도록 표준을 따르는 사이트를 만들라는 것이다. 그게 웹 2.0의 기본 철학이다.

인코딩 문제만 해결된다면 우리나라의 사이트가 세계를 무대로 활동하는 것도 얼마든지 가능하다. 세계 모든 나라를 상대로 활동하는 구글의 경우만 봐도 잘 알 수 있다.

4. 짧고 이해하기 쉬운 주소를 만들어라.
웹 2.0 시대에는 페이지의 주소가 더욱 중요한 의미를 갖는다. 주소는 수많은 페이지들을 서로 연계하고 가치를 부여하는 링크의 기본이기 때문이다. 쉽게 복사해서 붙여 넣을 수 있을 만큼 짧아야 하고 한번 보고 외울 수 있을 만큼 직관적이면 더욱 좋다. 본문의 내용을 예측할 수 있도록 파일 이름에 의미를 담아내는 것도 한 방법이다. 관리자의 입장이 아니라 사용자의 입장에서 생각해야 한다는 이야기다.

관리하기 위한 주소가 아니라 보여지고 복사되고 링크되기 위한 주소라는 발상의 전환이 중요하다. 무엇보다도 사용자들에게 이 주소가 앞으로 영원히 바뀌지 않는다는 확신을 줄 수 있어야 한다.

5. 콘텐츠의 유통 방식을 고민하라.
웹 1.0 시대에 사용자들은 뉴스를 보려면 뉴스 사이트를 직접 찾아가야 했다. 브라우저의 검색창에 주소를 직접 입력하기도 하고 주소를 즐겨찾기에 넣어두고 클릭해서 찾아가기도 했다. 그런데 웹 2.0 시대에는 굳이 뉴스 사이트를 찾아가지 않아도 뉴스를 읽을 수 있는 방법이 많다. 콘텐츠의 유통을 고민하는 개발자라면 RSS를 주목해야 한다. RSS(Really Simple Syndication)는 ‘정말 간단한 발행’의 약자다.

신문을 보려고 신문사까지 찾아갈 필요가 없는 것처럼 이제 뉴스를 보려고 굳이 뉴스 사이트를 찾아갈 필요가 없게 됐다. 뉴스 사이트의 RSS 주소만 알면 실시간으로 최신 뉴스를 확인할 수 있다. 자주 찾아가는 블로그의 RSS 주소를 모두 모아놓고 새로 올라온 글만 찾아 읽을 수도 있다. RSS는 콘텐츠의 발행과 구독이라는 새로운 정보 유통 방식을 만들어 냈다. 이제 시작일 뿐이지만 그 가능성은 무궁무진하다.

이를테면 네이버 뉴스에서는 특정 주제로 검색을 하고 그 검색 결과를 RSS로 만들 수 있다. 이 주소를 RSS 구독기에 집어넣으면 새로운 뉴스가 뜰 때마다 바로 바로 확인할 수 있게 된다. 굳이 뉴스를 찾으러 가지 않아도 찾아와서 알려주는 시대가 된 것이다. RSS 주소를 모아서 링크를 뽑아내 조합하면 전혀 다른 뉴스 사이트를 만들 수도 있다. 이 사이트는 특정 주제의 뉴스만 모아 실시간으로 업데이트하게 된다.

MP3 플레이어 아이포드를 활용한 포드캐스팅도 돋보인다. 포드캐스팅은 아이포드(iPod)와 방송(broadcasting)의 합성어인데 음성 파일을 만들어 주기적으로 업데이트하고 그 목록을 RSS로 제공하는 것을 말한다. 이 주소를 입력해 두면 컴퓨터에 연결할 때마다 자동으로 아이포드에 새로 업데이트된 파일이 저장된다. RSS는 이제 텍스트뿐만 아니라 멀티미디어까지 포괄해 콘텐츠 유통의 광범위한 표준으로 자리 잡고 있다.

6. API를 공개해 사용자들을 끌어들여라.
구글(아마존, 이베이)은 굳이 사용자들을 잡아두려고 하지 않는다. 그냥 잠깐 들러서 놀다 가라는 식이다. 사용자들이 더 쉽고 편리하게 찾아올 수 있도록 구글은 수많은 API를 공개하고 있다. API(Application Programming Interface)는 응용 프로그램 인터페이스의 약자로 이 경우 구글과 다른 사이트가 소통하는 방식을 말한다. 구글의 API를 활용하면 구글의 서비스를 가져다가 아무데나 자유롭게 붙여 쓸 수 있다.

가장 간단하게는 당신의 개인 홈페이지에서 직접 구글의 검색 서비스를 제공할 수도 있다. 당신은 검색 서비스를 공짜로 얻어서 좋고 구글은 사용자가 늘어서 좋다. 좀 더 복잡하게는 구글의 지도 서비스를 가져다가 특정 위치를 클릭하면 그곳의 뉴스가 뜨는 사이트를 만들 수도 있다. 당신이 부동산 정보 사이트를 운영한다면 매매 정보를 지도와 결합해서 고객들에게 보여줄 수도 있다.

구글은 이를 공짜로 내줄 뿐만 아니라 누구나 쉽게 가져다 쓸 수 있도록 API까지 공개하고 있는 것이다. 구글은 사용자들을 붙잡아 두지는 않지만 계속해서 찾아오게 만든다. 그리고 결국 구글에 의존하도록 만든다. 수많은 사용자들이 구글을 활용해 돈을 벌려고 뛰어들고 구글 역시 그 과정에서 새로운 수익모델을 찾는다. 이처럼 API를 조합해 전혀 다른 새로운 서비스를 만들어 내는 걸 매쉬 업(혼합, mash-up)이라고 한다.

PC에서 인텔의 CPU가 차지하는 역할처럼 이 매쉬 업 서비스의 핵심은 결국 데이터다. CPU 없이 PC가 돌아가지 않는 것처럼 이제 구글 없이는 아무것도 할 수 없는 기업들이 늘어나고 있다. 핵심 데이터를 구글이 쥐고 있기 때문이다. 더 많이 개방하고 더 많이 내줄수록 구글의 영향력은 더욱 커진다. 최근에는 구글 뿐만 아니라 야후와 마이크로소프트도 잇달아 API를 공개하고 구글을 견제하기 시작했다.

7. 집단지성을 활용하라.
웹 2.0과 함께 폭소노미라는 말이 유행이다. 폭소노미(Folksonomy)는 굳이 풀어쓰면 대중(fork)의 분류(nomos) 법칙(order)이라는 뜻이다. 플리커나 딜리셔스에서 쓰는 태그가 대표적인 폭소노미의 사례다. 사용자들이 사진을 올리고 직접 태그를 붙여두면 사진 검색이 훨씬 편리하고 정확해진다. 딜리셔스의 경우 수많은 태그를 모으면 넘쳐나는 정보들 가운데 우선순위를 가리는데 큰 도움이 된다. 이게 바로 집단지성의 힘이다.

폭소노미 역시 이제 시작 단계다. 태그를 수평적으로 늘어놓을 게 아니라 넘쳐나는 태그들 사이의 계층 관계를 잡을 필요도 있고 숨은 문맥을 읽어낼 필요도 있다. 게다가 아직도 대부분의 사용자들은 태그를 귀찮아한다. 폭소노미의 관건은 어떻게 사용자들을 불러모으고 적극적인 참여를 끌어낼 것이냐다. 사용자들이 직접 태그를 붙이도록 만드는 게 가장 확실하겠지만 결코 쉬운 일은 아니다.

집단지성의 더 명확한 사례는 구글의 페이지 랭크라고 볼 수 있다. 백악관 홈페이지에는 ‘백악관’이라는 한글 단어가 전혀 없지만 구글에서 ‘백악관’이라고 치면 바로 이곳으로 올 수 있다. 수많은 사용자들의 자발적인 링크가 이곳을 가리키고 있기 때문이다. 구글은 가장 많은 링크가 가리키는 곳을 우선순위로 올려놓는다. 아마존의 서평이나 이베이의 평판 시스템도 집단지성이 새로운 가치를 만들어내는 좋은 사례다.

집단지성을 논의할 때는 시맨틱 웹이라는 개념을 빼놓을 수 없다. 시맨틱(semantic) 웹은 의미를 살린 웹이라는 뜻인데 다른 말로 하면 좀 더 인간 중심의 웹, 또는 사람을 더 잘 이해하는 웹이라고 할 수 있다. 이를테면 태그에서 집단지성을 읽는 게 아니라 텍스트의 행간을 직접 읽고 핵심을 짚어낼 수 있어야 한다는 것이다. 시맨틱 웹은 그래서 기계가 더 잘 이해할 수 있도록 콘텐츠를 표준화·구조화해야 해야 한다는 의미도 된다.

8. 가벼운 플랫폼을 써라.
개발자들 사이에서는 몇 년 전부터 PHP를 비롯해 파이썬이나 펄 같은 스크립트 언어가 부쩍 인기다. 자바나 C, C++, 비주얼 베이직 같은 전통적인 프로그래밍 언어보다 배우기도 쉽고 개발과 유지·보수도 훨씬 간단하기 때문이다. 굳이 닭 잡는데 소 잡는 칼을 꺼낼 필요가 없기 때문이기도 하다. 리눅스와 아파치, MySQL 등 공개 소프트웨어를 조합한 LAMP나 루비 온 레일즈 같은 개발 플랫폼은 기존의 자바나 닷넷 프레임을 위협하는 지경까지 왔다.

이들 공개 개발 플랫폼의 장점은 무엇보다도 가볍고 빠른데다 라이브러리가 많고 꾸준히 업데이트되고 있다는 것이다. 과거와 달리 기능도 크게 개선됐다. 웹 2.0 시대에 들어서면서 서버·클라이언트 환경 보다는 인터넷 기반 개발 환경이 더욱 중요하게 된 것도 가벼운 개발 플랫폼이 주목받는 이유다.

9. Ajax, 더 많은 기능을 제공하라.

지난해 6월 다음 커뮤니케이션의 메일 주소록에는 작은 변화가 있었다. 전에는 한 사람의 주소를 입력하면 엔터 키를 누르고 페이지가 바뀌고 난 다음에야 다시 새로운 사람의 주소를 입력할 수 있었다. 그런데 지금은 엔터 키를 누르면 새로운 목록이 추가될 뿐 페이지는 바뀌지 않는다. 그 자리에서 바로 주소를 계속 입력할 수 있다. AJAX의 수많은 응용 사례 가운데 하나다.

AJAX는 비동기식 자바 스크립트와 XML의 합성어로 ‘에이잭스’라고 읽는다. 구글의 지도 서비스나 검색 사이트의 추천 검색어 서비스 등이 AJAX의 대표적인 사례다. 다음의 메일 주소록의 경우 처음 이 페이지를 열면 브라우저가 해야 할 명령까지 미리 따라 온다. 그래서 주소를 입력하고 엔터 키를 누르면 굳이 서버에 묻지 않고도 바로 새로운 목록을 추가할 수 있는 것이다. 페이지를 다시 열지 않고도 서버와 데이터를 주고받을 수 있다는 이야기다.

구글의 개인화 서비스는 더욱 놀랍다. 마우스로 끌어다 옮기는 것만으로도 메뉴 구성을 마음먹은 대로 바꿀 수 있다. 아무런 프로그램도 따로 설치할 필요 없고 바꾼 결과는 그대로 저장된다. 보이는 대로 적용되는 이른바 위지위그(WYSIWYG) 방식이 웹에도 도입되기 시작한 것이다. 과거 엑티브 엑스나 플래시로 구현했던 기능들을 머지않아 AJAX가 모두 대체할 것으로 보인다.

특별히 새롭거나 복잡한 기능은 아니지만 AJAX의 핵심은 사용자들에게 더 편리하고 직관적인 서비스를 제공한다는 것이다. 사용자들은 기다리는 시간이 줄어들고 대신 브라우저가 더 많은 일을 맡게 된다. 이런 간단한 기능뿐만 아니라 엑셀이나 워드 같은 복잡한 소프트웨어도 웹으로 옮겨가는 추세다. 프로그램을 설치하지 않고도 마이크로소프트 오피스와 거의 비슷한 기능을 이용할 수 있는 씽크프리 같은 사이트도 있다.

10. 브라우저의 한계를 넘어서라.
마이크로소프트는 아예 라이브닷컴을 통해 소프트웨어 서비스를 계획하고 있다. 웹에서 오피스 등의 소프트웨어를 쓸 수 있게 만든다는 것이다. 이제 소프트웨어의 판매가 아니라 서비스로 개념이 바뀌는 것이다. 심지어 이제는 인터넷만 연결돼 있다면 윈도우즈가 없어도 지금까지 해왔던 모든 걸 할 수 있게 될 거라는 전망도 나온다. 웹과 어플리케이션의 결합을 일컬어 웨블리케이션(weblication)이라고 한다.

마이크로소프트는 윈도우즈의 차기 버전 비스타에서 아예 검색 기능을 운영체제에 통합시킬 계획이다. 한편 야후를 비롯한 포털 사이트들이 내놓고 있는 위젯 서비스를 보면 바탕화면에 검색 창이나 날씨 정보를 띄우는 등 브라우저의 한계를 벗어난 새로운 실험을 모색하고 있다. 서로의 영역을 침범하고 있는 셈이다. 바야흐로 웨블리케이션 시대, 마이크로소프트와 구글 또는 야후의 한판 맞대결도 중요한 관심거리다. 여기에 새로운 기회가 있다.

'Know > ETC' 카테고리의 다른 글

youtube developer api  (0) 2009.06.30
소켓통신 참조  (0) 2006.10.23
[펌] Web 2.0 Conference Korea 발표 B/S  (0) 2006.08.10
WinCVS의 간략한 사용방법  (0) 2005.11.14
노출된 정보 최소화하기  (0) 2005.11.11
야후 미니사전  (0) 2005.11.11
Trackbacks 0 : Comments 0

WinCVS의 간략한 사용방법

Know/ETC 2005.11.14 11:42
[HTML]

출처:: [ KLDP ]


WinCVS의 간략한 사용방법





  • 일단 그림만 올리기로 합니다. 시간여유가 생길때마다 업데이트를 할 예정입니다.

  • 현재는 간략한 사용방법이라 칭하였지만, 많은 분들의 도움이 있다면 상세한 사용법이 될수도 있으리라 생각됩니다.

  • 문서 작성이 완료되면 TortoiseCVS에 대한 문서를 작성할까 생각하고 있습니다. -- 쫑아

  • 글을 작성은 했으나, 작성된 글을 받아놓지 않아서 다시 쓸까 합니다. 이 글 보시고, 혹시 실수로 받아놓은 분이 있다면, 주저하지 마시고 올려주시면 고맙겠습니다.








MS Windows 환경에서 가장 많이 알려진 CVS client를 꼽으라면 WinCVS가 아닐까 합니다. 이에 대한 간략한 사용방법에 대해서 기술하도록 하겠습니다.








Contents



1 어디서 다운로드 하는가요?

2 처음 실행화면

3 모듈 생성하기(Import module ...)

4 모듈 가져오기(Checkout module ...)


4.1 주 모듈(Main trunk) 가져오기

4.2 파생 모듈(Branch) 가져오기


5 모듈 갱신하기(Update/Commit selection...)


5.1 작업공간 갱신하기(Update selection...)

5.2 저장소 갱신하기(Commit selection...)


6 충돌 해결하기(Conflict)


6.1 해결 방법


7 파생모듈 생성하기(Create a branch/tag by module...)


7.1 태그 생성하기(Create a tag by module...)

7.2 파생 모듈 생성하기(Create a branch by module...)


8 파일 추가/삭제하기(Add/Remove/Erase selection)


8.1 파일 추가하기(Add selection)

8.2 파일 삭제하기(Remove selection)

8.3 파일 지우기(Erase selection)


9 변경사항 보기(Log/Status/Diff/Graph selection)


9.1 기록 보기(Log selection...)

9.2 상태 보기(Status selection)

9.3 차이점 보기(Diff selection...)

9.4 그래프 보기(Graph selection...)


9.4.1 리비젼 가져오기(Retrieve revision)

9.4.2 리비젼 삭제하기(Delete revisions)



10 팝업메뉴 설정하기(Customize this menu...)









1 어디서 다운로드 하는가요? #



CVS/FAQ 페이지에도 기술되어 있듯이 [http]http://cvsgui.sourceforge.net 에서 다운로드 받으실 수 있습니다. 다운로드 페이지를 찾기가 어려우시다고요? 2003년 10월 30일 현재 [http]http://cvsgui.sourceforge.net/download.html#WINCVS 에서 다운로드 가능합니다. 여기에서는 1.3 BETA 2를 기준으로 작성되었으나 안정된 버전을 원하신다면 1.2를 사용하셔도 무방합니다.
설치는 일반적인 윈도우즈 프로그램과 대동소이하므로 잘 하시리라 믿습니다. :)






2 처음 실행화면 #





wincvs_run.png

WinCVS만 실행 시킨 화면입니다.
CVS는 Client/Server 구조로 이루어져 있으므로 우리는 CVS를 사용하기 위해서는 Server에 대한 설정을 해 주어야 합니다. 서버에 우리가 사용할 소스코드라던가 모든 파일들이 존재하게 됩니다. 이 파일들이 존재하는 위치를 CVSROOT라고 부릅니다. CVSROOT는 접속방법부터 어떤 사용자가 어느 호스트의 어느 디렉토리를 사용할것인가를 모두 기술하게 됩니다. 아래는 예제로 WinCVS를 설정한 장면입니다. 설정을 위해서는 Admin -> Preferences 로 들어가시면 됩니다.






wincvs_Preferences.png

위의 예제는 pserver이라는 방법으로 사용자 인증을 거치며, Server의 /var/lib/cvs에 CVS가 관리하는 파일들이 있음을 의미합니다. Server의 주소는 confide.jemiro.net이며, 사용자의 이름은 confide입니다. 이를 모두 기록하면 아래쪽의 CVSROOT라는 곳의 내용이 자동으로 완성됩니다. 물론 CVSROOT부분을 작성하셔도 위쪽의 내용이 자동으로 기입됩니다.
이제 CVSROOT 설정이 끝났으므로 서버에 사용자 인증(login)을 받아볼까요?






wincvs_login1.png

로그인


wincvs_login2.png

로그인시 나타나는 창 - CVSROOT 확인?


wincvs_login3.png

로그인이 완료된 모습 - return값이 0






3 모듈 생성하기(Import module ...) #



CVS 클라이언트는 CVS서버에 있는 프로젝트 저장소를 이용하게 되는데, 이 공간을 이용하는 단위가 저장소(모듈 또는 디렉토리)단위입니다.
저장소 단위란 표현보다는 모듈단위란 표현이 적절할것 같아 지금부터는 모듈단위라고 설명합니다.




생성될 모듈은 CVS서버의 프로젝트 저장소에 위치하며, 모듈을 생성하기 위해서는 import명령을 사용하여 모듈을 생성할 수 있습니다.





  • 다음은 jane 프로젝트의 저장소를 표현한 예제 입니다.




/jane (project)
+-- bin (module)
+-- config (module)
+-- help (module)
+-- src (module)
+-- samples (module)
+-- lib (module)
+-- CVSROOT (jane 프로젝트에 대한 CVS 환경설정 디렉토리-프로젝트 저장소 생성시 자동 생성됨)






그럼 모듈을 생성하는 방법을 예제를 바탕으로 알아보도록 하겠습니다.




StudyProject 디렉토리의 소스파일 2개를 StudyProject란 모듈명으로 CVS 서버에 모듈을 생성하도록 하겠습니다.




아래는 두 파일에 대한 소스코드입니다.


#!vim sh
#:::Hello.c:::
#include <stdio.h>
#include "Hello.h"



int main()
{
PrintHello();

return 0;
}



void PrintHello()
{
printf("Hello, world!\n");
}















#:::Hello.h:::
#ifndef HELLO_H_
#define HELLO_H_

void PrintHello();

#endif








다음은 모듈을 생성하는 작업진행절차입니다.

  • Remote --> Import module ... 을 선택한다. 또는 ( Tree View에서 팝업메뉴로 Import module..을 선택한다. )

  • 폴더 찾아보기 대화상자가 나타난다.

  • 해당 디렉토리를 선택한다(여기서는 StudyProject를 선택한 예입니다).

  • Import filter란 대화상자가 나타난다(이상이 없을시 Continue 버튼을 누른다).

  • Import settings 대화상자가 나타난다(모듈명과 모듈에 대한 주석을 기술하고 확인 버튼을 누른다).

  • CVS 서버에 해당 모듈이 생성된다(이상이 없을시).








wincvs_example_project.png

예제 프로젝트 파일들 화면






wincvs_import1.png

import 과정1 화면 - WinCVS가 파일들의 특성파악(Binary/Text)






wincvs_import2.png

import 과정2 화면 - 모듈 설명적기






wincvs_import3.png

import 과정3 화면 - 완료




위 과정을 통해서 CVS 서버의 프로젝트 저장소에 StudyProject모듈을 생성했습니다.
이제 이 모듈(StudyProject)을 사용하기 위해서는 checkout명령을 사용하여 CVS서버에 있는 모듈을
내 컴퓨터의 작업공간으로 가져와 작업을 하면 됩니다.






4 모듈 가져오기(Checkout module ...) #



CVS 서버에서 CVS 클라이언트로 모듈을 가져오는 이유가 기술되어야함




CVS 서버의 프로젝트 저장소에 있는 모듈을 가져오기 위해서는 checkout이란 명령을 사용하며, 모듈을 가져오는 방법으로는
주 모듈(Main trunk)을 가져오는 방법과 특정 Tag 또는 파생 모듈(Branch)를 가져오는 방법이 있습니다.




4.1 주 모듈(Main trunk) 가져오기 #



주 모듈(Main trunck)을 가져오기 위해서는 다음과 같은 작업진행절차를 따릅니다.

  • Remote --> Checkout module ... 을 선택한다. 또는 ( Tree View에서 팝업메뉴로 Checkout module..을 선택한다. )

  • Checkout settings란 대화상자가 나타난다.

  • Checkout settings탭에서 해당 모듈명을 기술한다.(여기서는 StudyProject를 기술하면 됩니다).

  • Checkout settings탭에서 작업공간에 저장될 디렉토리를 선택한다(선택된 디렉토리안에 모듈명으로 디렉토리를 생성한다).

  • General탭에서 CVS서버의 프로토콜을 설정한다(기본설정은Preferences에서 설정한 값들이 나타난다).

  • Globals탭에서 Checkout read-only 옵션이 설정되었다면, 설정을 해제한다.

  • 확인 버튼을 누른다.










4.2 파생 모듈(Branch) 가져오기 #



파생 모듈(Branch)를 가져오는 방법은 주 모듈(Main trunk)을 가져오는 방법과 동일하며, 단지 차이점이란 파생 모듈(Branch)명을 기술하는 부분이 존재한다는 사실입니다. 주의) 파생 모듈(Branch)를 사용하기 위해서는 파생 모듈(Branch)를 생성해야만 합니다.




파생 모듈(Branch)을 가져오기 위해서는 다음과 같은 작업진행절차를 따릅니다.

  • Remote --> Checkout module ... 을 선택한다. 또는 ( Tree View에서 팝업메뉴로 Checkout module..을 선택한다. )

  • Checkout settings란 대화상자가 나타난다.

  • Checkout settings탭에서 해당 모듈명을 기술한다.(여기서는 StudyProject를 기술하면 됩니다).

  • Checkout settings탭에서 작업공간에 저장될 디렉토리를 선택한다(선택된 디렉토리안에 모듈명으로 디렉토리를 생성한다).

  • Checkout options탭에서 "By revision/tag/branch"옵션을 설정한다(파생 모듈(Branch)명을 기술한다).

  • General탭에서 CVS서버의 프로토콜을 설정한다(기본설정은Preferences에서 설정한 값들이 나타난다).

  • Globals탭에서 Checkout read-only 옵션이 설정되었다면, 설정을 해제한다.

  • 확인 버튼을 누른다.










5 모듈 갱신하기(Update/Commit selection...) #



모듈을 갱신한다는 것은 내 컴퓨터에서 작업한 모듈과 CVS 서버의 프로젝트 저장소에 있는 모듈을 일치시키는 작업을 말합니다.
이렇게 함으로써, 갱신된 파일(모듈에 소속된 파일)에 대한 리비젼(revision)이 하나 증가합니다(예 1.2 -> 1.3).




모듈을 갱신하는 방법에는 작업 공간을 갱신하는 방법(Update)과 저장소를 갱신하는 방법(Commit)이 있습니다.




주의) 참고로 갱신의 단위로는 파일,디렉토리, 모듈등이 있으며, 여기서는 모듈단위를 사용합니다.






5.1 작업공간 갱신하기(Update selection...) #



작업 공간을 갱신한다는 것은 최신의 작업 모듈로 변경한다고 보시면 됩니다. 최신의 작업 모듈을 가져오는 방법으로는 두가지 방법이 있습니다.
위에서 사용한 checkout이란 방법과 지금 보게될 update하는 방법입니다. 이 update명령을 사용하는 것이 좀더 직관적이라 할수 있습니다.
추가 설명 필요함(갱신에는 여러 경우가 존재할수 있음)




작업공간을 갱신하기 위해서는 다음과 같은 작업진행절차를 따릅니다.

  • Tree View 또는 File List View에서 모듈 명을 선택한다(해당 디렉토리 명을 선택한다).

  • Modify --> Update selection을 선택한다(모듈이 선택된 후에만 이 메뉴아이템은 활성화 됩니다).

  • Update setting이란 대화상자가 나타난다.

  • 각 탭의 세부 항목을 설정한다(갱신인 경우 설정하지 않아도 됩니다).

  • 확인 버튼을 누른다.(갱신이 된 파일이 있는 경우는 메세지 영역에 M으로 시작되는 메세지가 나옵니다. 또한 File List View의 아이콘이 빨간색으로 변경됩니다.)







5.2 저장소 갱신하기(Commit selection...) #



내 컴퓨터의 작업 공간에서 작업한 모듈들을 팀원이 공유하기 위해서는 반드시 CVS서버의 프로젝트 저장소에 모듈을 갱신해야 합니다.
이렇게 함으로써 팀원들은 자신의 작업 공간을 갱신함으로써 최신의 모듈을 유지할수 있습니다.




저장소을 갱신하기 위해서는 다음과 같은 작업진행절차를 따릅니다.

  • Tree View 또는 File List View에서 모듈 명을 선택한다(해당 디렉토리 명을 선택한다).

  • Modify --> Commit selection을 선택한다(모듈이 선택된 후에만 이 메뉴아이템은 활성화 됩니다).

  • Commit setting이란 대화상자가 나타난다.

  • 각 탭의 세부 항목을 설정한다(변경사항에 대한 메세지를 기록합니다).

  • 확인 버튼을 누른다.










6 충돌 해결하기(Conflict) #



충돌(Conflict)이란 갱신을 하는 시점에서 발생하는 메세지로, 내 컴퓨터의 작업공간에서 수정본과 CVS서버의 프로젝트 저장소에 있는 최신 모듈과의 사이에 같은 영역(함수,파일,등등)에서 수정이 일어날때 발생합니다. 이는 자동으로 해결될 소지가 아니기 때문에(의미적인 부분들기 때문에 CVS서버가 판단을 할수 없습니다) 반드시 수정한 팀원(관련자)과 상의를 하는것이 좋습니다.




다음은 충돌 발생시 메세지 입니다.


RCS file: /testcvs/StudyProject/Hello.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
Merging differences between 1.1.1.1 and 1.2 into Hello.c
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in Hello.c
C Hello.c


해석을 덧붙이자면:


RCS file: /testcvs/StudyProject/Hello.c,v //testcvs란 프로젝트 저장소의 StudyProject 모듈에 있는 Hello.c에 대해서
retrieving revision 1.1.1.1 // 내 컴퓨터의 작업 공간에 있는 리비젼(Revision)이 1.1.1.1 이며
retrieving revision 1.2 // CVS 서버에 있는 리비젼(Revision)은 1.2입니다.
Merging differences between 1.1.1.1 and 1.2 into Hello.c // hello.c 파일에 리비젼 1.2와 리비젼 1.1.1.1의 차이점을 합한다.
rcsmerge: warning: conflicts during merge // 합치는 중에 충돌이 발생했다는 경고문구입니다.
cvs server: conflicts found in Hello.c // 그래서 cvs서버는 hello.c파일에서 충돌(Conflicts)들을 찾았다고 보고합니다.
C Hello.c // 그리고 C란 충돌표시(Conflicts)와 파일명을 알려줍니다.






다음은 충돌이 있는 파일의 일부(Hello.c파일의 PrintHello함수) 입니다.


void PrintHello()
{
printf("Hello, world!\n");
<<<<<<< Hello.c
printf("It's not fun\n");
=======

printf("It's fun!\n");
>>>>>>> 1.2
}


해석을 덧붙이자면:


void PrintHello()
{
printf("Hello, world!\n");
<<<<<<< Hello.c // 내 컴퓨터의 작업공간에서 작업한 내용이 먼저 표시됩니다.
printf("It's not fun\n"); // 내 컴퓨터의 작업공간에서 작업한 내용(Revision 1.1.1.1을 기반으로 수정함)
======= // 작업한 내용이 끝났다는 표시입니다.
// CVS 서버의 최신 리비젼(Revision-1.2)의 내용
printf("It's fun!\n"); // CVS 서버의 최신 리비젼(Revision-1.2)의 내용(누군가에 의해 두라인이 수정되었다는 의미)
>>>>>>> 1.2 // CVS 서버의 내용이 끝났다는 표시입니다.
}








6.1 해결 방법 #



충돌이 발생시는 여러 해결방안이 있을거라 생각되면, 위 경우는 다음과 같은 방법으로 해결하면 됩니다.





  • 수정한 담당자와 논의를 한다.

  • 그래서 적절한 결론을 내린다(여기서는 두라인 모두 추가하는 방향으로 결론을 짓습니다).

  • 그리고 수정 후 다시 저장소 갱신하기(Commit selection...)을 한다.

  • 그럼 CVS 서버는 해당 파일에 대한 리비젼(Revision)을 하나 증가시킵니다(1.2-> 1.3으로).

  • 그런 후에 팀원들은 다시 작업공간 갱신하기(Update selection...)을 수행한다.



논의후 수정한 내용입니다.


void PrintHello()
{
printf("Hello, world!\n");
printf("It's not fun\n");
printf("It's fun!\n");
}










7 파생모듈 생성하기(Create a branch/tag by module...) #



파생모듈(branch)을 생성한다는 것은 CVS 서버의 프로젝트 저장소에 있는 모듈의 복사본을 하나 더 만드는 작업을 말합니다.
이렇게 함으로써, 새 모듈(버젼)에 대한 작업을 진행할 수 있습니다.




파생모듈(branch)을 생성하는 기본 방법은 먼저 태그를 생성하고 파생모듈(branch)을 생성하는 방법을 사용합니다.






7.1 태그 생성하기(Create a tag by module...) #



태그를 생성한다는 것은 특정 지점까지 작업을 했다고 표시해 두는 것입니다. 이렇게 함으로써, 이후에 필요한 특정 지점으로 복귀가 편리합니다.




태그를 생성하기 위해서는 다음과 같은 작업진행절차를 따릅니다.





  • Create --> Create a tag by module...을 선택한다.

  • Creating tag settings이란 대화상자가 나타난다.

  • Creating tag settings탭의 세부 항목을 설정한다.

    • New tag name : 새로운 태그명을 입력한다.

    • Module to tag : 기준이 되는 모듈명을 입력한다.

    • 추가적으로 시간(date)이나 태그(tag), 파생모듈(branch)등으로 태그를 입력할 시점을 설정할 수 있다.


  • 확인 버튼을 누른다.










7.2 파생 모듈 생성하기(Create a branch by module...) #



파생모듈(branch)을 생성하기 위해서는 다음과 같은 작업진행절차를 따릅니다.





  • Create --> Create a branch by module...을 선택한다.

  • Creating tag settings이란 대화상자가 나타난다.

  • Creating branch settings탭의 세부 항목을 설정한다.

    • New branch name : 새로운 파생모듈명을 입력한다.

    • Module to fork : 기준이 되는 모듈명을 입력한다.

    • 추가적으로 시간(date)이나 태그(tag), 리비전(revision)등으로 파생모듈(branch)를 입력할 시점을 설정할 수 있다.


  • 확인 버튼을 누른다.












8 파일 추가/삭제하기(Add/Remove/Erase selection) #



내 컴퓨터의 작업 공간에서 모듈을 작업하다보면 새로 생성된 파일, 또는 삭제해야할 파일들이 있습니다. 이럴때는 다음과 같은 명령어를 사용하여 작업하면 됩니다.




8.1 파일 추가하기(Add selection) #



파일을 CVS 서버에 추가하기 위해서는 다음과 같은 작업진행절차를 따릅니다.





  • Tree View 또는 File List View에서 파일 명을 선택한다(또는 디렉토리 명을 선택한다).

  • Modify --> Add selection을 선택한다(새로 생성된 파일에 대해서 이 메뉴아이템은 활성화 됩니다).

    (또는 팝업메뉴에서 Add selection을 선택한다-메뉴가 없다면 아래 팝업메뉴 설정하기 참조한다.)

  • 추가된 파일을 CVS 서버에 적용하기 위해서는 반드시 저장소 갱신하기(Commit selection...)을 수행한다.










8.2 파일 삭제하기(Remove selection) #



파일을 CVS 서버에서 삭제하기 위해서는 다음과 같은 작업진행절차를 따릅니다.





  • Tree View 또는 File List View에서 파일 명을 선택한다(또는 디렉토리 명을 선택한다).

  • Modify --> Delete selection을 선택한다.

    (또는 팝업메뉴에서 Delete selection을 선택한다-메뉴가 없다면 아래 팝업메뉴 설정하기 참조한다.)

  • 삭제된 파일을 CVS 서버에 적용하기 위해서는 반드시 저장소 갱신하기(Commit selection...)을 수행한다.










8.3 파일 지우기(Erase selection) #



파일을 내 컴퓨터의 작업 공간에서 지우기 위해서는 다음과 같은 작업진행절차를 따릅니다.





  • Tree View 또는 File List View에서 파일 명을 선택한다(또는 디렉토리 명을 선택한다).

  • Modify --> Erase selection을 선택한다.

    (또는 팝업메뉴에서 Erase selection을 선택한다-메뉴가 없다면 아래 팝업메뉴 설정하기 참조한다.)

  • 내 컴퓨터의 작업 공간에서 파일이 지워진다.

  • 지워진 파일은 CVS서버의 모듈에는 영향을 미치지 못하며 작업공간 갱신하기(Update selection...)을 수행하면 다시 갱신된다.










9 변경사항 보기(Log/Status/Diff/Graph selection) #







9.1 기록 보기(Log selection...) #







9.2 상태 보기(Status selection) #







9.3 차이점 보기(Diff selection...) #







9.4 그래프 보기(Graph selection...) #







9.4.1 리비젼 가져오기(Retrieve revision) #






9.4.2 리비젼 삭제하기(Delete revisions) #






10 팝업메뉴 설정하기(Customize this menu...) #









[/HTML]

'Know > ETC' 카테고리의 다른 글

youtube developer api  (0) 2009.06.30
소켓통신 참조  (0) 2006.10.23
[펌] Web 2.0 Conference Korea 발표 B/S  (0) 2006.08.10
WinCVS의 간략한 사용방법  (0) 2005.11.14
노출된 정보 최소화하기  (0) 2005.11.11
야후 미니사전  (0) 2005.11.11
Trackbacks 0 : Comments 0

노출된 정보 최소화하기

Know/ETC 2005.11.11 16:22
[HTML]

출처 : 안랩코코넛





네트워크 상에서 공격자가 공격을 시작하기 전에 보통 3가지 작업을 진행하게 됩니다.

그 첫번쩨가 Footprinting, 두번째가 Scanning,
세번째가 Enumeration 입니다.







각 단계를 간단히 살펴보면,

Footprinting은 공격자가 조직의 보안 상태 정보를 알아내기 위한 단계로 이름, 전자우편주소, 전화번호,
팩스 번호, IP 블럭, DNS서버, 메일서버 등 인터넷에서 손쉽게 얻을 수 있는 정보를 수집하는 단계입니다.

Scanning은 해당 시스템이 살아 있는지 탐지하여 각 시스템의 실행되고 있는 TCP/UDP 서비스, 접속
가능한 IP 주소 , 운영체제 타입 등을 수집하게 됩니다.

마지막으로 Enumeration은 시스템의 resource name을 알아내기 위해 사용하는 것으로 시스템에
접속할 수 있는 정보들을 수집하며, 사용자 및 그룹 이름, 운영체제, 라우팅 테이블, SNMP 정보를 얻어내여 목록화하는
작업입니다.

어떻게 보면 사소하게 여겨질 수 있는 이러한 정보들이 외부로 노출된다면 공격자에게 미끼를 던져주는 경우가 될 수 있습니다.
그러기에 기본적으로 자주 사용하는 서비스(TELNET, HTTP, DNS, SMTP)에 대한 정보를 외부로 노출하지 않는
방법에 대하여 알아보기로 하겠습니다.

1) TELNET 배너제거하기

먼저 telnet 의 경우 로그인시 시스템 OS 및 Kernel 버전을 출력하게 됩니다. 이는 공격자에게 시스템 정보를
제공함으로 해당 정보를 이용한 취약성을 노릴 수 있으므로 노출되지 않도록 세팅할 필요가 있습니다.







해결책 및 변경

- /etc/xinetd.d/telnet

서버에 다음과 같은 인수를 추가하여 베너를 제거합니다.

Server_args = -h

변경된 설정을 적용하여 위해 killall -HUP xinetd 를 실행합니다


권장사항으로는 telnet 서비스를 사용치 말고 SSH를 사용해야 한다는 것입니다.

이는 telnet의 경우 암호화를 제공하지 않기 때문에 네트워크상에 텍스트 형식으로 전송되어 스니핑을 통한 패킷캡쳐가
가능하기 때문입니다. 굳이 telnet을 사용해야 한다면 방화벽을 사용하여 신뢰된 영역에서만 telnet service를
사용하도록 해야 합니다.

피? SSH service인 경우도 오래된 버전이 아닌 최신 버젼의 프로그램을 사용하시길 권고드립니다.


2) HTTP server 버전 및 사용 프로그램내용 제거하기

아래와 같이 telnet을 이용하여 웹서버가 어떤 OS를 사용하는지 웹어플리케이션은 어떤 종류를 사용하는지 확인이
가능합니다. 이는 버전에 따른 취약성을 가지고 공격자가 공격을 시도할 수 있는 빌미를 제공하게 되므로 이러한 정보를
노출해서는 안됩니다.


2-1) Windows Web Application











윈도우 웹서버 IIS5.0인 경우에는 IISLockdown을 사용하여 노출된 웹서버 정보를 삭제할 수 있으며, IISLockdown의
다운로드 및 설치방법은 다음 사이트를 참조하시면 됩니다.


< IISLockdown tool 다운로드 >

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=DDE9EFC0-BB30-47EB-9A61-FD755D23CDEC


< IISLockdown tool 설치 방법>

http://support.microsoft.com/default.aspx?scid=kb;ko;325864#3


* IISLockdown tool 을 사용할 경우에는 사용방법에 대한
충분한 숙지가 필요합니다.




IISLockdown tool 설치 후에 다음 urlscan.ini 파일에서 RemoveServerHeader 값을
1로 세팅을 하게 되면 아래 그림과 같이 웹서버에 대한 정보노출을 막을 수 있습니다.










IIS6.0인 경우에는 다음 레지스트리값을 1로 수정하여 웹서버 정보노출을 피할 수

있습니다.

HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parpameters\DisableServerHeader

< 참조사이트 >

http://ms.inity.co.kr/korea/technet/community/columns/insider/iisi1004.asp


2-2) Linux Web Application






리눅스 시스템의 경우 아파치웹서버를 많이 사용하며 위와 같이 아파치버젼과 PHP버전이 함께 공개되는 경우가 흔하므로
아래와 같이 httpd.conf 파일의 내용을 수정하고 웹서버 데몬을 재시작 함으로써 정보노출을 제거할 수 있습니다.











3) DNS 존 transfer 설정 변경

DNS의 경우 일반적인 Domain Name을 쿼리할 때에는 UDP 프로토콜(udp 53 port)을 사용하며 zonefile을
전송할 때에는 TCP 프로토콜(tcp 53 port)을 사용하게 됩니다. 여기서 zonefile은 DNS server가
가지고 있는 정보를 소유하고 있는 파일입니다.







이러한 중요정보를 외부로 그대로 노출해서는 안되는데, nslookup, dig를 통하여 DNS server의 버전정보나
어떤 IP를 가진 서버가 어떤 역할을 하는지에 대한 정보를 빼낼수 있습니다. 그러므로, 아래와 같이 named.conf라는
설정파일을 수정하여 신뢰된 특정서버에서만 zone transfer를 허용해 주어야 하며, 아예 zone transfer를
허용하고 싶지 않다면 방화벽에서 tcp 53은 open하지 말아야 합니다.







위와 같이 설정을 한 후에 다시금 named의 설정을 적용하려면 아래와 같이 하면 됩니다.







4) SMTP 목록화 방어하기

아래 그림과 같이 telnet이나 netcat을 사용하여 SMTP 서비스의 버전확인 및 여러 명령어를 실행할 수 있습니다.
피?공격자는 전자메일 메시지를 조직에 보낼 수 있습니다.


- VRFY : 사용 가능한 사용자의 이름 확인

- EXPN : 계정과 메일링 리스트의 실제 전달 주소를 확인

- DATA : 메시지 본문을 입력하도록 함

- EXPAND : 사용자의 메일 계정을 출력하고 그룹 계정 일때는 그룹 멤버의

                 모든 메일 계정을 출력함

- HELO : SMTP 세션을 초기화하고 식별할 수 있는 데이터를 교환함

- HELP : 도움말 출력

- MAIL : 메일 작업의 초기화

- QUIT : 현재세션을 종료하고 연결을 끊음

- RCPT : 수신자를 명시

- RESET : 재 작업을 중지






Windows Exchange 서버 4.0대부터는 expn, vrfy 명령이 기본적으로 중지되어 있습니다.


<참조사이트>

http://support.microsoft.com/kb/q289521/

http://support.microsoft.com/support/kb/articles/Q175/8/42.ASP


Sendmail의 경우에는 설정파일인 senmail.cf 에 아래의 내용이 있는지 확인을 하고

없을 경우에 novrfy, noexpn을 추가하여 sendmail daemon을 다시 시작해 주어야 합니다.







다음과 같은 시스템을 사용할 경우 아래의 참조사이트를 통해 SMTP Banner를 수정할 수

있습니다.

- Microsoft Exchange 2000 Server Standard Edition

- The operating system : Microsoft Windows 2000


< 참조사이트 >

http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q281224


지금까지 네트워크 상에서 쉽게 노출된 정보가 있음을 보았으며 이에 대한 해결책을 살펴보았습니다. 공개된 서비스와
시스템의 경우 사소한 것이라도 외부에 정보가 노출되지 않도록 보안에 더 신경을 써야 합니다. 하지만, 이것보다 더
중요한 것은 사용하는 서비스의 취약성유무를 정기적으로 확인하여 패치 및 프로그램 업데이트에 신경 써야 합니다.

Denfense in Depth!! 100% 완벽한 보안은 없지만, 다방면의 보완을 통해 더 견고한 보안을 수립할
수 있습니다.


[/HTML]

'Know > ETC' 카테고리의 다른 글

youtube developer api  (0) 2009.06.30
소켓통신 참조  (0) 2006.10.23
[펌] Web 2.0 Conference Korea 발표 B/S  (0) 2006.08.10
WinCVS의 간략한 사용방법  (0) 2005.11.14
노출된 정보 최소화하기  (0) 2005.11.11
야후 미니사전  (0) 2005.11.11
Trackbacks 0 : Comments 0

야후 미니사전

Know/ETC 2005.11.11 14:17



예전에 MS 영한사전이 생각나서

서핑하다가 야후의 미니사전이란걸 찾게 되었다.







그림과 같이,

빨간펜을 텍스트위에 옮기거나, 텍스트위를 alt+click 하면

해당 단어의 뜻이 ~

이걸 놔두고 단어하나하나마다 창을 열고.. ㅠㅠ

편하게 써야겠다~

'Know > ETC' 카테고리의 다른 글

youtube developer api  (0) 2009.06.30
소켓통신 참조  (0) 2006.10.23
[펌] Web 2.0 Conference Korea 발표 B/S  (0) 2006.08.10
WinCVS의 간략한 사용방법  (0) 2005.11.14
노출된 정보 최소화하기  (0) 2005.11.11
야후 미니사전  (0) 2005.11.11
Trackbacks 0 : Comments 0