Wednesday, June 27, 2012

벡터 스페이스 모델(Vector Space Model)과 TF-IDF Weight




 2012년 현재의 시대에 정보검색의 방법으로 학계나 현업에서 인정받는 기술은 바로 구글의 페이지랭크 알고리즘이다. 때문에 사람들은 구글의 페이지랭크가 검색엔진 결과에 대한 랭킹을 가장 잘 표현하는 것으로 생각하기 쉽지만 어떻게 보면 그것 자체가 가장 큰 맹신일 지도 모른다. 때문에 많은 사람들이 검색쿼리 이면의 뜻을 알기 위해 노력하고 있고 그 문맥을 찾아내는 시맨틱 검색을 비롯한 3세대 검색기술이 점차 발전되고 있다.

 물론 새로운 기술이 도입되었다 하더라고 기술이라는 것은 항상 완벽한 것은 아니고 어제가 있었기 때문에 오늘이 있었다는 사실을 간과해서는 안된다. 특히 검색엔진 기술에 있어서 벡터 스페이스 모델(Vector Space Model)은 지금도 대부분 검색엔진에서 사용하고 있는 기술이라는 점에서 구시대의 기술이라고 치부할 수 없는 우수한 기술이 되겠다. 


  • 벡터 스페이스(Vector Space Model)은 말그대로 검색쿼리로 입력된 단어들을 웹페이지에서 찾아 벡터 형태로 배열을 구성하여 점수를 구성하는 것이다. 점수를 구성하는 방법은 TF-IDF(Term Frequency - Inverted Document  Frequency)이다.  http://en.wikipedia.org/wiki/Vector_space_model
  • TF-IDF(Term Frequency - Inverted Document  Frequency)를 구할 때는 단어 뜻대로 웹페이지에서 검색쿼리 단어의 빈도의 수와 전체 웹페이지에서의 단어의 빈도수(계산방식은 여러가지임)의 곱의  값(w)를 이용하여 코싸인 유사도를 계산하여 그 값을 통해서 쿼리에 대한 코싸인 유사도와 다큐멘트에 대한 코싸인 유사도를 비교하여 쿼리에 대하여 값이 근사한 다큐멘트 순으로 검색결과를 출력한다.  http://en.wikipedia.org/wiki/Tf*idf


  • 코싸인 유사도(Cosine Similirity)는 일반적으로 두 벡터의 각도의 코싸인값을 측정하여 두 벡터의 유사도를 측정하는 방법이다. 예를들어 위 그림에서 q의 벡터값과 d1, d3의 벡터값을 기준으로 q에 가까운 순으로 검색결과를 출력하게 된다. 코싸인 유사도는 일반수학에서 벡터의 내적을 구하는 것과 같다.   http://en.wikipedia.org/wiki/Cosine_similarity

 겉으로보면 벡터 등이 출현하여 마치 어려운 수학 같지만 실질적 내용은 그렇게 어려운 내용은 아니다. 중요한 것은 이러한 내용을 어떻게 생각해냈느냐 이다. 굳이 수학이 들어가지 않아도 좋다. 모두가 수긍하고 납득할 만한 내용이기만 해도 된다. 이것은 비단 과학 뿐만이 아니라 다른 모든 분야도 마찬가지다. 사람들을 편리하게 하거나 나만의 철학으로 무장하여 무언가 창조적인 것을 만들어내는 것이다. 





Tuesday, June 26, 2012

HTTP 403 사용권한없음(403 Forbidden)



 웹서비스를 준비하다보면 가끔 HTTP 403 사용권한없음(403 Forbidden)에러에 맞닥드리게 된다. 이럴 경우 구글링을 통해서 해결책을 찾게 되는데 국내나 국외나 그 해결책이 각각 다르다. 여기서 중요한 것은 이 문제가 왜 발생했는지는 이해하는 것이다.

 HTTP 403 사용권한없음(403 Forbidden)은 웹서버안의 파일(html, php등)에 접근할수 없기 때문에 일어나는 현상이다.즉 403사용권한없음이 발생할 경우 권한에 관련된 오류를 찾아야 하는 것이다. 이 문제에 대한 해결책은 여러가지이다.

 예를들면 웹서버안의 html페이지의 파일명이 index.html이 아니라면 이러한 문제가 발생하기도 한다. 이럴경우 파일명을 index.html로 바꿔주면 바로 해결이 될 수 있다. 만약 이러한 문제가 아니라면 권한관련 설정을 변경해줘야 한다.

http://www.ehow.com/how_5180610_fix-http-forbidden-error.html
 http://en.wikipedia.org/wiki/HTTP_403
http://www.boutell.com/newfaq/definitions/403forbidden.html

Sunday, June 24, 2012

클라우드 컴퓨팅이란 무엇인가?




  바야흐로 클라우스 시대다. 한국에서는 네이버 N드라이브, 다음 클라우드, KT클라우드 등이 있고 아마존도 한국지사를 설립하고 본격적으로 클라우드 컴퓨팅 비즈니스를 본격적으로 시작하려고 하고 있다. 이렇게 우리 주변에서 클라우드에 대해 직접적으로 떠들고 있지만 사람들은 아직도 클라우드에 대해 자세히 알고 있지 못하는 듯 하다. 예를들면 웹상에 데이터를 저장하고 그것을 어디에서나 다운로드 하고, 또는 모바일에서 영화 컨텐츠를 보다가 집에가서 데스크탑 컴퓨터로 중단된 부분부터 다시 보는 등의 것들이 클라우드라고 쉽게 생각하는 것이다. 하지만 클라우드 컴퓨팅은 그렇게 간단한 것이 아니다. 우리 생각하는 수준 이상으로 클라우드에는 미래의 어떤 부분을 대체하고 있는 것이다. 마치 제레미 리프킨이 소유의 종말(The Age of Access)에서 말한 내용들이 실제로 벌어지고 있는 것이다. 



 배리 소신스키의 클라우드 컴퓨팅 바이블은 이러한 클라우드에 대한 우리의 관심사와 중요부분을 알려주는 일종의 소개서이다. 하지만 단순히 소개서라고 하기에는 많은 양을 담았고 실질적인 내용도 담았다. 물론 이 책이 무조건 좋다고 말하는 것은 아니다. 클라우드는 책 한 권으로 끝나는 그러한 단순한 서비스의 개념이 아니기 때문이다. 


 예를들면 다음은 이 책에서 언급된 클라우드 컴퓨팅의 분류에 대한 내용중 일부이다. 


  1.  클라우드컴퓨팅의 정의 
  • 클라우드 컴퓨팅은 네트워크상에 분산되어 있는 컴퓨터를 가상화시킨 후 인터넷과 네트워 크 환경에 접근하여 실행하는 애플리케이션과 서비스를 말한다. 일반적으로 배치모델과 서비스모델로 구분한다.
  • 배치모델 : 클라우드 인프라의 위치와 운영기준에 따른 분류
  • 서비스모델 : 사용자가 클라우드 컴퓨팅 서비스에 접근할 수 있는 형태에 따른 분류

2. 클라우드 서비스의 구분
  
  1) 배치모델

  • 공공(Public)클라우드 : 공공클라우드 인프라는 거대한 it산업 전반에서 사용가능하며 클라우드 서비스를 판매한 업체에 의해 소유
  • 사설(private)클라우드 : 폐쇄적으로 운영되며 인프라는 해당기관 또는 타사에 의해 관리됨. 사설클라우드의 인프라위치는 내부 또는 외부가 됨
  • 하이브리드(hybrid)클라우드 : 해당 조직의 유일한 정체성을 포함한(그러나 일정 단위로써 함께 묶인) 여러가지 클라우드 배치모델의 조합임, 하이브리드 클라우드는 데이터와 애플리케이션에 접근하기 위한 애플리케이션 이식성 같은 표준 또는 소유권을 제공함
  • 커뮤니티 클라우드 : 공통으로 사용해야 하는 기능이나 목적을 위해 만들어진 클라우드 배치모델임. 그러나 목적, 정책, 보안 규제요구사항 등을 공유. 커뮤니티 클라우드는 조직의 구성원 또는 외부에 의해서 관리됨. 

  2) 서비스모델
  • IaaS(Infrastructure as a Service: IaaS는 사용자가 가상머신, 가상장치, 가상인프라와 같은 하드웨어 자원을 사용할 수 있도록 서비스 제공함. 즉 서비스 공급자는 사용자들이 서로 다른 개발목적을 가지고 있어도 모든 인프라를 관리해줌, 운영체제, 어플리케이션, 시스템에 대한 사용자 인터페이스 등을 모두 관리할 수 있음. 예-Amazon EC2 등
  • Platform as a Service:PaaS
  • 는 사용자에게 가상머신, 운영체제, 어플리케이션, 서비스 개발 프레임워크, 트랜젝션 관리구조 등을 제공. 사용자는 클라우드 인프라상에 있는 어플리케이션을 제공할 수 있으며 PaaS서비스 공급자가 지원해주는 언어와 툴로 프로그램된 어플리케이션을 사용할 수 있음. 서비스공급자는 클라우드인프라, 운영체제, 사용가능한 소프트웨어를 관리하여 서비스, 해당 어플리케이션 관리책임은 사용자가 짐. 예-force.com, google appengine, windows azure platform 
  • Software as a Service:SaaS
  • 는 어플리케이션관리, 사용자인터페이스를 포함하는 서비스모델. SaaS 모델은 씬(thin) 클라이언트 인터페이스를 통해서 사용자에게 애플리케이션을 제공하고 사용자는 어플리케이션과 사용자간의 상호작용을 시작하면서 마칠 때까지 데이터를 관리할 책임이 주어집니다. 어플리케이션 다운로드부터 인프라 구축까지ㅏ 모든 과정이 벤더의 책임임. 
3. 클라우드 서비스의 장단점

 1) 장점
  • 주문형셀프서비스
  • 광대역 네트워크접근 : 모든 운영체제, 디바이스를 지원
  • 자원풀링 : 멀티테넌트 사용을 지원하면 자원이 유동적으로 할당 및 재할당
  • 민첩한 탄력성 : 무제한이어야 하고 언제나 얼마든지 구매할 수 있어야 함
  • 종량제 서비스
  • 저비용
  • 쉬운사용성
 2) 단점
  • 사용자화 되지 않은 소프트웨어를 사용해야 함
  • WAN연결때문에 고유의 대기시간을 기다려야 하는 어려움이 있음 
  • 고용량데이터 전송시 클라우드는 좋은 모델이 아님
  • 무국적시스템으로 통신요청시 통신상의 단절이 생기게 됨 이경우 추가적인 관리기능 개발로 인해 큰 성능하락을 가져옴. 
 이렇게 클라우드는 서비스분류에서만 봐도 주요 IT기업들이 앞다투어 진출하고 있는 비즈니스의 금맥일지도 모르는 것이며 우리 생활을 급속도로 바꿔놓을 수 있는 그러한 서비스이자 비즈니스 모델인 것이다. 즉 지금이라도 클라우드에 대해 다시 한 번 곰곰히 생각해볼 필요가 있다. 그러면 다음 문제를 한 번 풀어보자. 당신이 기업의 담당자라면 어떤 클라우드를 구축할 것인가?(고려대학교 컴퓨터정보통신대학원 정보산업론 기말시험문제중 일부임)

 * NIST(National Institute of Standards and Technology)는 클라우드 컴퓨팅의 Deployment Model을 정의 하였다. 다음과 같은 경우 어떤 model이 적합한지 그리그 그 이유를 설명하시오.


  "고려대학교는 학교 전산설비를 클라우드 컴퓨팅의 형태로 전환하기로 결정하였다. 학교의 중앙전산원에 클라우드 컴퓨팅 센터를 설치하고  학내의 모든 학사업무 등을 클라우드 컴퓨팅에 수용하였다. 그러나 입시와 수강신청 기간에는 클라우드 컴퓨팅 센터의 설비규모로는 부족해 보이나 일년중 한 두 번 사용하기 위하여 용량을 증설하기에는 경제성이 없다."

Friday, June 22, 2012

소프트웨어보안(Software Security) 도입시 고려사항



 소프트웨어보안이라는 말 자체가 소프트웨어로 시작되므로 마치 보안(Security)라는 것 자체가 소프트웨어에 적용되는 것 같지만 보안의 시작은 모든 부분에 적용되는 것에 주의해야 한다. 즉 보안의 적용이 하드웨어이던, 소프트웨어던 간에 종합적인 관점에서 보안요소를 고려해야 한다는 것이다. 

 또한 보안요소는 초기부터 고려해야 한다는 것이 매우 중요한 체크사항이 되겠다. 보안요소 없이 어떤 서비스를 오픈하거나 출시했을 경우 예를들어 차후에 보안관련 장비를 도입할 경우 아무리 노력해도 초기에 도입을 고려했던 것보다 높은 비용을 부담하게 되는 것이다. 하지만 초기에 보안요소를 도입하는 사례는 자주 보지 못했다. 특히 기업의 경우에 보안을 중요한 요소로 고려하는데 있어 핵심은 오너가 보안요소를 중요하게 생각하냐는 것이다. 본질적인 서비스의 기능에 보안이 포함되지 않으므로 오너는 보안을 부차적인 요소로 간주하게 되는 것이다. 하지만 소잃고 외양간 고치듯 보안요소는 초기부터 고려해야 함을 잊지 말아야 한다. 

 아래 링크는 미국 국토부의 보안프로젝트의 사이트이다. build security in이라는 문장에서 보듯이 보안을 어떻게 사용하고 도입했느냐에 대한 기획과 최고의 사례를 잘 정리해놓은 사이트이다. 물론 정부, 민간이 동시에 참여하여 만든 사이트이다. 한국에도 이러한 협업이 많이 이루어지길 바란다. 



Thursday, June 21, 2012

리눅스 우분투 다운로드

우리는 일반적으로 컴퓨터를 구입시부터 OS가 윈도우즈로 장착되어 사용하기 때문에 마치 MS의 윈도우즈외에는 다른 제품은 생각조차도 않하는 경우가 많다. 하지만 이미 애플의 아이패드나 아이폰의 등장으로 OS에 대해서 새롭게 생각하게 되는기회인 것 같다. 그런 측면에서 리눅스는 윈도우즈를 제외하고 한 번쯤은 사용해볼 만한 대안이라고 추천하고 싶다.
최근 우분투라는 리눅스 OS가 출시되어 좋은 반응을 얻고 있다. 인터넷이나 오피스, IDE환경 또한 제공되고 있어 도전해볼만한 SW라고 하겠다.


http://www.ubuntu.com/download/desktop

우분투 설치시에는 먼저 가상머신을 설치후 그 위에 설치해보는 것도 좋은 방법이라고 본다.
권장 가상머신은 다음과 같다.

https://www.virtualbox.org/wiki/Downloads