2009년 10월 14일 수요일

블로그 이전 합니다.

블로그 이전하기에는 너무 활동이 없었지만 좀 더 열심히 해볼려는 마음에
텍스트 큐브로 이전을 하게 되었습니다.
주소는 아래와 같습니다.

http://namineya.textcube.com/

좀 더 열심히 부지런히 해서 가꾸어 나가겠습니다.
그럼 즐거운 하루되세요^^


2009년 5월 12일 화요일

플랫폼(platform)이란 무엇인가?

플랫폼이란 무엇인가


플랫폼이란 소프트웨어가 작동할 수 있도록 하는 일종의 프레임워크를 말한다.

개인이나 단체가 소프트웨어가 위에서 자유롭게 활동 또는 작동할 수 있도록 기본이 되는 탄탄한 골격이다.

플랫폼의 의미는 플랫폼 위에서 일어나는 활동의 기본이 되는 모든 구조까지 확장할 수 있다.

여기서 말하는 활동이란 경제적 활동이 될 수도, 사회적 상호작용이 될 수도, 새로운 기술을 생성해내는 

커뮤니티 활동이 될 수도, 예술작품을 창조하는 협업활동이 될 수도 있다.

플랫폼의 주 역할은 그 상위에서 활동이 활발하게 일어나고 활동의 주체들이 서로 연결되어 가치를 창출할 

수 있도록 최대한 지원하는 것이다.

Web2.0 시대에서는 어느 정도의 도구와 활동 기반만 주어지면 다양한 이유와 목적으로 웹상 곳곳에서 사람들이 

몰려들어 각종 활동을 벌이면서 경제적 가치를 창출한다.  따라서 플랫폼으로 구성된 환경의 가장 큰 장점은 플랫폼

제공자가 직접 아무것도 하지 않아도 플랫폼을 사용하는 이들이 자발적으로 무엇인가를 만들어준다는 데서 찾을 

수 있다.

성공적인 플랫폼이 되기 위해서는 몇 가지 기본적으로 지켜야 하는 원칙이 있다.

네트워크 안에 있는 구성원의 참여도를 높이고 협업을 통하여 부가적인 경제적 가치를 만들어낼 수 있도록 윤활유

역활을 하는데 필수적이다.

1. 플랫폼은 상위 네트워크 구성원에게 개발성을 제공하고 자율성을 허락해야 한다.

2. 플랫폼은 상위 네트워크 구성원이 활동할 수 있는 진입장벽이 낮아야 한다.

: '메트컬프의 법칙'에 따르면 네트워크의 규모가 커질 때 성장을 위한 비용은 직선적으로 증가하지만 그 

  가치는 기하급수적으로 증가한다.

3. 플랫폼은 상위 네트워크 구성원이 부가적인 가치를 창출할 수 있도록 최대한 장려해야 한다.

: 경제적인 가치창출이 일어날 수 있도록 어느 정도 방향을 잡고 인도를 하는 것이 필요하며, 상위에서 

  일어나는 것을 유심히 관찰하며 더 큰 활동이 일어날 수 있도록 지원하고 이로 인해 더 큰 가치를 창출

  할 수 있도록 하는 것이 중요하다.

어떤 가치를 사용자에게 전달하기 위한 프로세스 내에는 기본적으로 크게 두 가지 작업이 일어난다.

하나. 가치를 생성해내는 P단계 (Productions)

하나. 생성된 것 중 소비자가 원하는 것을 선택하고 소비자가 원하는 형태로 다듬고 포장하고 전달하는 F단계 (Filtering)

: 필러링이란 플랫폼에서 존재하는 여러 가지 중에서 가장 좋은 것을 소비자의 니즈에 맞게 걸러서 전달한다는 

  개인화의 의미를 내포하고 있다.

플랫폼의 성곤은 바로 이 P단계와 F단계에서 참여의 문이 모두에게 열려있다는 데에 있다.

2009년 2월 23일 월요일

인코딩 용어 설명 - 코덱, 비트레이트, 키프레임

초보자가 동영상 인코딩을 처음 접하면, 모르는 용어가 많아서 혼란스러운 경우가 많습니다.

이러한 어려움을 줄이고자 동영상 인코딩시 알아야할 용어들을 정리해 봅니다.

* 코덱
동영상 파일은 음성과 영상 데이터로 이루어 지며, 파일의 크기를 줄이기 위해서 이 데이터를
압축하여서 저장하게 됩니다. ( 압축을 하지 않을 경우 최대 100배 정도 파일 크기가 커집니다. )
인코딩시 압축(COding)을 하고, 재생시 압축을 푸는(DECoding) 모듈을 합쳐서 코덱(CODEC)이라고 부릅니다.
영상 코덱은 MPEG4, XVID, DIVX, WMV 등이 많이 사용되며, 음성 코덱은 MP3,WMV,AAC 등이
보통 많이 사용됩니다.

* 비트레이트
동영상 인코딩시 사용되는 압축 방식은 손실압축입니다. 데이타의 양은 줄어들지만 원본의 데이타를 100% 보존하는것이 아니라 손실시키면서 줄이는 방식이므로 압축을 많이 할수록 화질/음질이 많이 떨어지게 됩니다.
비트레이트는 1초간의 영상/음성을 얼마만큼의 데이타를 차지하게 압축을 할것인지를 지정하는 단위 입니다.
비트레이트가 높을수록 압축율이 떨어지면서 화질/음질이 좋게 되고 비트레이트가 낮으면 인코딩된 파일의 크기는 줄어들지만 그만큼 화질/음질도 나빠지게 됩니다.
비트레이트의 정확한 단위는 BITS PER SECOND 이며 8BIT 는 1BYTE 이므로 800kbps 로 인코딩
된 동영상은 재생시간 1초당 100kbytes 의 크기를 가지게 됩니다.

* 키프레임
초기의 영상 코덱은 화면 한장 한장을 jpeg 처럼 이미지 파일로 압축하여 저장하는 방식을 사용 하였습니다.
이런방식은 구현하기 매우 쉽다는 장점이 있지만, 화면이 전혀 움직이지 않는 경우에도 많은 데이타를 사용하여야 하기 때문에 압축율을 높이기가 쉽지 않게 됩니다. 이러한 단점을 극복하기 위해서 mpeg 코덱부터는 영상의 변화율을 감지하여서 변화된 부분의 데이타만을 저장하는 방식으로 압축 효율을 높이기 시작하였습니다.
이러한 방식의 문제점은, 데이타가 화면의 변화된 내용만을 담고 있으므로 동영상 재생시 중간으로
점프하고자 할 경우 처리가 매우 어려워 지기 때문에 중간 중간에 키프레임이라는 영상의 모든 정보를 가지고 있는 부분을 만들어 두는 방식을 사용하게 됩니다.
보통의 경우 키프레임은 5~10초에 하나씩 만들게 되며 특수한 경우 1초 정도로 짧게 설정하여야 할
경우도 있습니다.
( 키프레임의 짧게 설정하면 탐색시 유리하지만, 용량대비 화질이 나빠지는 단점이 있습니다. )

비트레이트 개념의 이해

동영상 파일은 내부적으로 음성 데이타 + 영상 데이타 두가지로 이루어 진다.

동영상 파일의 크기는 이 두가지 데이타를 합한 크기와 같게 되는데, 이때 어떠한 데이타가

얼마만큼의 크기를 차지하는가를 표현하는 방법이 비트레이트라는 개념이다.


비트레이트의 단위는 BITS PER SEC (bps) 이며, 음성이든 영상이든 1초동안 재생하는데 필요한

데이타의 크기를 의미한다.

예를 들자면 128kbps MP3 오디오 데이타의 재생시간이 3분 이라면 128kbits*60*3 이

해당 데이타의 크기인 것이다.

다시 계산하자면, 8bits 는 1BYTE 이기 때문에 128*1024*60*3/8 = 2.8MBytes 가 된다.

이 계산 방식은 영상에도 동일하게 적용된다.

영상이 1.5mbps, 음성이 128k 인 1시간짜리 동영상의 크기는

(1.5*1024+128)*1024*60*60/8 = 731MBytes 로 계산이 된다.


따라서 인코딩된 동영상파일의 크기는 [비트레이트*재생 시간] 에 비례하며, 영상의 크기,프레임수,

원본의 크기 와 같은 다른 요소는 전혀 영향을 끼치지 못한다.



이와 관련된 질문과 답변을 정리하면,

질문 1) 원본파일은 100MB 인데, 인코딩하니까 200MB가 되었네요.
: 비트레이트 설정을 원본보다 높게 설정하면 오히려 파일의 크기가 커진다. 하지만 절대로 화질이 더 좋아지거나 하는일은 없다.

질문 2) 이 프로그램은 저 프로그램에 비해서 인코딩하면 화질은 좋은데, 파일이 커져요
: 프로그램과 상관없이 인코딩 설정에서 비트레이트를 동일하게 맞추면 동일한 크기의 파일이 생성된다. 따라서, 파일 크기가 다른 동영상의 화질 비교는 의미가 없으며, 동일한 설정으로 동일한 크기로 생성된 파일의 화질을 비교하여야 한다.

질문 3) 동영상의 해상도가 커지면 파일도 커지는것 아닌가요?
: 동영상의 해상도,프레임수는 파일의 크기와 전혀 상관없다. 인코딩 설정에서 비트레이트를 고정하면 해상도와 프레임수를 바꾸어도 결과물의 파일 크기는 동일하게 나온다.
따라서, 원하는 동영상의 해상도와 프레임수에 따라서 적절한 최상의 비트레이트의 값을 알고 있어야 효율적인 동영상 인코딩이 가능해 진다.

키프레임 간격 설정이란?

동영상 파일은 키프레임이라고 하는, 동영상 재생시 이정표와 같은 역할을 하는 프레임이 몇초마다 하나씩 존재합니다.

키프레임을 길게 설정할 경우, 같은 화질일 경우 동영상 파일의 크기가 작아진다는 장점이 있지만,
동영상 재생 프로그램에서 탐색 기능을 이용할 경우 탐색 시간이 느려진다는 단점이 발생하며,

반대로 키프레임을 짧게 설정할 경우( 5초 이하 )는 이와로 반대로 파일의 크기가 약간 더 커지는 대신
탐색기능이 빠르게 작동하는 장점이 있습니다.

보통 PC에서는 성능이 빠르기 때문에 키프레임의 간격이 10초 이상 되어도 별다른 문제가 없지만,
휴대용 기기의 경우 5초 이하로 짧게 설정해 주는것이 좋습니다.

2009년 1월 9일 금요일

Subversion Installation for Fedora

Subversion 을 설치하고, Apache 의 WebDAV 모듈을 이용하여 버젼을 관리하는 방법을 설명합니다.

1. Subversion Install

[root@www ~]# yum -y install subversion

2. WebDAV Module Install

[root@www ~]# yum -y install mod_dav_svn

3. Create svn linux user

adduser svn (not set password)

chmod 755 /home/svn

svn 작업 디렉토리를 /home/svn 로 하기로 합니다.

4. Create repository

[root@www svn]# svnadmin create /home/svn/test

[root@www svn]# chown -R apache.apache /home/svn

svn 작업 디렉토리 밑에 svn 이 관리하기위한 test 라는 레포지토리를 만듭니다. 프로젝트에 따라서 생성해 주면 되겠지요. 그리고 나서 svn 의 하위 디렉토리는 apache 가 관리할 수 있도록 소유권을 모두 apache 유저로 합니다.

5. Add svn user

[root@www svn]# htpasswd -c /home/svn/.htpasswd richard (-c only 1st time)

New password:

Re-type new password:

Adding password for user richard

svn 으로 작업이 가능한 유저를 추가합니다. -c 옵션은 create 의 약자로 파일이 없을때 처음에만 실행해 주면 됩니다.

5. Create or Modify /etc/httpd/conf.d/subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so 
LoadModule authz_svn_module   modules/mod_authz_svn.so

 
DAV svn 
SVNParentPath /home/svn

# Limit write permission to list of valid users. 
# 
# Require SSL connection for password protection. 
# SSLRequireSSL

AuthType Basic 
AuthName "Subversion repository" 
AuthUserFile /home/svn/.htpasswd 
Require valid-user 
# 

마지막으로 subversion 의 환경설정파일을 위와같이 생성해 줍니다. (yum 으로 설치했을 경우 자동으로 디폴트 환경설정 파일이 생성되어 있습니다.) 여기서 굵은 글씨의 ~ 부분에서 # 주석문을 해제하였을 경우 모든 사람이 읽기가 가능해 집니다.

6. Everything is OK?

http://my-domain/svn/test/ 로 접속하여 아래와 같은 화면이 나타나면 성공적으로 설치된 것입니다. (설정에 따라 인증을 거쳐 아래의 화면이 나타날 수도 있습니다.) 

Revision 0: /


Powered by Subversion version 1.4.3 (r23084).

7. What is next?

TortoiseSVN 를 이용해 보는 것은 어떨까요? :)

- References

http://d.hatena.ne.jp/kazf/searchdiary?word=subversion

http://www.gside.org/Gentoo/subversion/subversion.h