GNU 자유 문서 사용 허가서 1.2판

[출처] http://korea.gnu.org/people/chsong/copyleft/fdl-1.2.ko.html

 [철학적 GNU 이미지] [ 영어 | 한국어 ]


This is an unofficial translation of the GNU Free Documentation License version 1.2 into Korean. It was not published by the Free Software Foundation, and does not legally state the distribution terms for  documents that uses the GNU FDL version 1.2 -- only the original English text of the GNU FDL version 1.2 does that. However, We hope that this translation will help Korean speakers understand the GNU FDL version 1.2 better.

이 문서는 자유 소프트웨어 재단(Free Software Foundation)의 GNU Free Documentation License 1.2판을 한국어로 번역한 것입니다. 이 문서는 GNU Free Documentation License 1.2판이 내포하고 있는 호혜적인 자유와 공유의 정신을 보다 많은 사람들에게 알리기 위한 희망에서 작성되었지만, 자유 소프트웨어 재단의 공식 문서로 취급될 수는 없습니다. 이는 원래의 문서가 의도하고 있는 내용이 왜곡되지 않고 법률적으로 유효하기 위해 선행되어야 할 양국의 현행 법률과 언어의 적합성 여부에 대한 전문가들의 검토 작업에 많은 시간과 비용이 필요하기 때문입니다. 또한 공식 번역문으로 인정된 문서라 하더라도 다른 언어로의 번역에 따른 위험 부담은 여전히 남아 있게 됩니다. 따라서 자유 소프트웨어 재단은 오역이나 해석상의 난점으로 인해 발생될 지 모를 혼란과 분쟁의 가능성을 미연에 방지하고, 문서가 담고 있는 내용과 취지를 보다 많은 사람들에게 알리려는 상반된 목적을, 한국어 번역문을 공식적으로 승인하지 않는 방법으로 양립시키고 있습니다.

자유 소프트웨어 재단은 어떠한 언어에 대한 번역문도 공식적으로 인정하지 않고 있으며, 그러한 계획 또한 갖고 있지 않습니다. 자유 소프트웨어 재단은 GNU Free Documentation License 1.2판을 실무에 적용할 경우, 오직 영문판에 의해서만 그 법률적 효력이 올바르게 발생될 수 있음을 권고합니다. 이 번역문은 법률적 검토와 문서간의 동일성 여부에 대한 검증을 거치지 않은 것이며, 이로 인해 야기될 수 있을 지도 모를 법률적인 문제에 대해 어떠한 형태의 보증도 제공하지 않습니다. GNU Free Documantation License 1.2판을 상업 목적의 실무에 사용하려고 할 경우에는 변호사나 변리사에게 직접 자문을 구하시기 바랍니다. 그러나 대부분의 일반 사용자들에게는 이 번역문이 전달하려고 하는 내용과 취지를 이해하는 것만으로도 충분한 가치가 있을 것입니다.

한국어 개정: 2005년 9월 1일 송창훈 <chsong@gnu.org>


목 차


GNU 자유 문서 사용 허가서

1.2 판, 2002년 11월

Copyright (C) 2000  Free Software Foundation, Inc.51 Franklin St, Fifth Floor, Boston, MA  02111-1307  USA누구든지 본 사용 허가서를 있는 그대로 복제하고 배포할 수있습니다. 그러나 본문에 대한 수정은 허용되지 않습니다. 

제0조. 전문

본 사용 허가서의 목적은 첫째, 매뉴얼이나 책 또는 다른 실용적이고 유용한 문서들을 ``자유''롭게 만들기 위한 것입니다. 여기서 말하는 ``자유''란 무료가 아닌 구속되지 않는다는 관점에서의 자유를 의미합니다. 즉, 상업적이든 비상업적이든 간에 누구나 그것을 수정하거나 그렇지 않은 상태에서 복제 및 재배포할 수 있는 실질적인 자유를 보장하기 위한 것입니다. 둘째, 본 사용 허가서는 저작자나 발행인에게 다른 사람들이 가한 수정에 책임지지 않고 그들의 저작물에 대한 공로를 인정 받을 수 있는 길을 보장하기 위한 것입니다.

본 사용 허가서는 일종의 ``카피레프트''입니다. 즉, 문서의 2차적 저작물 또한 같은 의미에서 자유로워야 한다는 것을 의미합니다. 이것은 자유 소프트웨어를 위해서 고안된 카피레프트 사용 허가서인 GNU 일반 공중 사용 허가서를 보완합니다.

자유 소프트웨어는 자유 문서를 필요로 하기 때문에 본 사용 허가서는 자유 소프트웨어 매뉴얼에 사용되기 위해서 고안되었습니다. 자유 프로그램에는 소프트웨어에서와 같은 자유가 제공되는 매뉴얼이 함께 수반되어야 합니다. 그러나 본 사용 허가서가 단지 소프트웨어 매뉴얼에만 한정되는 것은 아닙니다. 이것은 문서의 주제나 그것이 인쇄물로 발행되었는지의 여부에 상관없이 모든 종류의 문서 저작물에 사용될 수 있습니다. 교육이나 참고를 목적으로 하는 저작물에는 원칙적으로 본 사용 허가서를 사용할 것을 추천합니다.

제1조. 적용 범위와 정의

본 사용 허가서는 GNU 자유 문서 사용 허가서(이하, ``GFDL''이라고 칭합니다.)의 규정에 따라 배포될 수 있다는 사항이 저작권자에 의해서 명시된, 매체의 종류에 무관하게 제작된 모든 매뉴얼과 문서 저작물에 적용될 수 있으며, 공중의 누구라도 피양도자가 될 수 있습니다. 저작권자의 이러한 명시는 GFDL의 조건들을 만족시키는 한, 저작물을 사용하는데 있어 사용료와 유효 기간이 없는 전세계적으로 유효한 허가를 부여합니다. 본 사용 허가서에서 사용되는 문서(文書,  document)는 GFDL에 의해서 양도된 매뉴얼 또는 문서 저작물의 의미합니다. 또한 공중(公衆, public)이란 불특정 다수의 사람을 의미하고, 피양도자(被讓渡者, licensee)란 GFDL에 의해서 매뉴얼 또는 문서 저작물을 양도받은 사람을 의미합니다. 복제 또는 개작의 대상이 되는 독자적인 문서 창작물의 최초 발행물은 원문서(原文書, original  document)라고 합니다.

문서의 수정판(修正版, modified version)이란 원문서가 그대로 복제 또는 개작되거나, 다른 언어로 번역된 문서의 전부나 일부를 포함하고 있는 저작물을 의미합니다.

문서의 2차구성부(二次構成部, secondary section)란 문서의 저작자나 발행인과 문서의 전체 주제(또는 관련 내용)과의 관계만을 설명하거나, 문서의 전체 주제와 직접적인 관계가 없는 내용을 포함하고 있는 머리말과 목차 등의 서두나 부록 부분을 가리킵니다. (따라서 문서가 수학 교과서의 일부였을 경우, 이 문서의 2차구성부에는 수학적 설명이 포함된 부분이 들어 있지 않습니다.) 2차구성부에 포함될 수 있는 내용은 문서의 주제나 관련 사항에 대한 개정 이력이나 법률적, 상업적, 철학적, 윤리적, 정치적 입장 등입니다.

변경불가부분(變更不可部分, invariant section)이란 문서가 본 사용 허가서에 의해서 배포된다는 사실이, 해당 부분이 변경불가부분이라는 제목과 함께 명시된 2차 구성부의 한 형태를 의미합니다. 만약 2차구성부의 정의에 부합되지 않는 부분(section)이 있다면, 이러한 부분은 변경불가부분으로 설정할 수 없습니다. 문서의 변경불가부분에는 내용이 없을 수도 있습니다. 만약 문서 안에 변경불가부분에 대한 구분이 명시되어 있지 않다면, 해당 문서에는 변경불가부분이 없는 것입니다.

표지구절(表紙句節, cover texts)이란 문서가 본 사용 허가서에 의해서 배포된다는 사실이 문서의 앞 표지나 뒷 표지에 언급되는 짧은 문장을 의미합니다. 앞 표지구절은 5음절 안밖으로, 그리고 뒷 표지구절은 25음절 안밖으로 기술되어야 합니다.

문서의 투명(透明, transparent) 복제물이란 문서를 수정할 수 있게 그 사양이 공중에게 공개되어 있고 일반적인 문서 편집기, (픽셀로 구성된 이미지의 경우) 일반적인 페인트 프로그램, (그림의 경우) 널리 사용되는 그림 편집기로 그 내용을 출력시키거나 직접 수정하기에 용이하며 조판 프로그램에 입력하기에 적당하거나 조판 프로그램에 입력할 수 있는 다양한 형태의 포맷으로 자동으로 번역되기에 용이한 형태로 만들어진 기계로 판독 가능한 복제물을 의미합니다. 투명 파일이라 하더라도 피양도자가 문서를 개작하는 것을 방해하거나 금지하기 위해서 기존의 마크업이나 마크업이 없는 상태를 변경시킨 파일 포맷은 투명한 것이 아닙니다. 투명 복제물이 아닌 것을 불투명(不透明, opaque) 복제물이라고 합니다.

투명 복제물로 적절한 예는 마크업이 포함되지 않은 평범한 ASCII 포맷과 Texinfo 입력 포맷, LaTeX 입력 포맷, 공개적으로 이용되는 DTD를 사용하는 SGML이나 XML, 그리고 사람이 직접 개작할 수 있는 표준 규약을 준수하는 간단한 형식의 HTML, PostScript 또는 PDF 포맷입니다. 투명 이미지 포맷의 예로는 PNG, XCF 그리고 JPG가 있습니다. 불투명 복제물에는 PostScript와 PDF, 독점 워드 프로세서에서만 읽고 편집할 수 있는 독점 포맷, 일반적으로 통용되지 않는 DTD와 처리 도구가 필요한 SGML 및 XML 포맷, 그리고 출력 목적만을 위해서 특정 워드 프로세서로 자동 생성한 HTML, PostScript 또는 PDF 포맷이 포함됩니다.

제목 페이지(title page)란 인쇄된 책의 경우에는 문서의 제목이 표시된 페이지 자체뿐만 아니라 보다 쉽게 이해되는데 필요하다고 판단되어 본 사용 허가서가 제목 페이지에 함께 포함시킬 것을 규정한 후속 페이지들을 모두 의미합니다. 제목 페이지가 없는 저작물의 경우, 제목 페이지는 본문이 시작되기 전에 저작물의 제목에 가장 근접한 형태가 나타난 페이지를 의미합니다.

``XYZ 표제'' 부분은 그 제목이 정확히 XYZ이거나 XYZ를 다른 언어로 번역한 다음 괄호 안에 XYZ를 포함시킨 형태로 표제를 붙인 전체 문서 중 일부분을 의미합니다.(XYZ는 ``감사의 글'', ``헌사'', ``추천사'' 또는 ``개정이력'' 등과 같은 특정한 부분의 표제를 가리킵니다.) 문서를 개작할 때 ``표제를 보존''한다는 것은 이러한 정의에 따라 `XYZ 표제''가 붙은 부분이 남아 있도록 한다는 것을 뜻합니다.

문서에 본 사용 허가서가 적용된다는 점을 명시한 부분 다음에 ``보증의 결여(Warranty Disclaimer)''에 대한 부분을 추가시킬 수 있습니다. ``보증의 결여''에 대한 부분은 문맥상 본 사용 허가서에 포함된 것으로 간주되지만, 그 의미는 보증이 결여된다는 사실 자체만에 국한됩니다. ``보증의 결여''라는 말에 포함될 지 모를 다른 종류의 함축들은 모두 무효이며 본 사용 허가서의 효력에 영향을 주지 않습니다.

제2조. 동일 복제

문서의 피양도자는 본 사용 허가서에 어떠한 사항도 추가하지 않은 상태에서 본 사용 허가서와 저작권 사항 그리고 문서의 모든 복제물에 본 사용 허가서가 동일하게 적용된다는 사항을 명시하고 이를 문서의 복제물과 함께 제공하는 한, 어떠한 정보 매체에 의해서도 상업적이나 비상업적인 목적으로 문서를 복제하거나 배포할 수 있습니다. 문서를 복제하거나 배포할 경우에는 임의의 피양도자가 문서를 열람하거나 복제할 수 없도록 방해하거나 통제할 수 있는 어떠한 기술적 수단도 사용해서는 안됩니다. 그러나 복제물을 제공하는데 따른 보상을 청구할 수는 있습니다. 만약, 충분히 많은 양의 복제물을 배포할 경우에는 제3조의 규정들을 함께 준수해야만 합니다.

또한 위의 조건을 준수하는 한, 피양도자는 문서의 복제물을 대여하거나 공개적으로 전시할 수 있습니다.

제3조. 대량 복제

만약, 인쇄물 또는 일반적으로 인쇄된 표지를 갖고 있는 매체의 형태로 문서의 복제물을 100부 이상 발행하며, 문서의 사용 허가서가 표지 구절의 사용을 규정하고 있는 경우에는 인쇄물의 앞 표지와 뒷 표지에 삽입될 앞 표지 구절과 뒷 표지 구절이 명확하고 읽기 쉬운 형태로 모든 복제물에 포함되어야 합니다. 또한 복제물의 발행인에 대한 정보가 양쪽 표지 모두에 명확하고 읽기 쉬운 형태로 명시되어야 합니다. 앞 표지에는 문서의 완전한 제목이, 제목을 구성하는 모든 문자들이 동일한 수준의 식별력을 가질 수 있도록 표시되어야 합니다. 표지에는 추가적인 문장이나 도형, 그림 등의 요소를 추가하는 것이 가능합니다. 문서의 제목이 유지되고 이러한 조건들을 만족하는 한, 표지만 변경시킨 복제물은 표지 이외의 다른 부분에 대한 동일 복제로 간주됩니다.

앞 표지나 뒷 표지에 표시될 표지 구절의 내용이 너무 많아서 읽기 힘든 경우에는 실제 표지에는 (적당한 만큼만) 기재하고, 나머지 내용들은 인접 페이지에 표시할 수 있습니다.

100부 이상의 불투명 복제물을 발행하거나 배포하는 경우, 모든 불투명 복제물에 기계 판독이 가능한 투명 복제물을 함께 첨부하거나, 추가된 것이 없는 완벽한 투명 복제물이 있는 공개적인 접근이 가능한 컴퓨터 네트워크의 위치를 각 불투명 복제물에 명시하여 네트워크를 사용하는 일반 공중이 공개 표준을 준수하는 네트워크 프로토콜을 이용하여 비용없이 익명으로 다운로드 받을 수 있도록 해야 합니다. 후자의 경우, 불투명 복제물을 대량으로 배포하기 시작할 때에는 매우 신중한 접근을 해야 하는데, 불투명 복제물을 공중에게 (본인이 직접 또는 대리인을 통해서, 또는 소매업자를 통해서) 배포한 마지막 시점으로부터 적어도 1년 뒤까지 투명 복제물이 명시된 위치에서 접근될 수 있는 상태로 확실히 남아있도록 해야 합니다.

강제 조항은 아니지만, 복제물을 대량으로 배포하기 전에 충분한 시간적 여유를 두고 문서의 저작자와 연락해서 저작자에게 문서의 최신 개정판을 제공할 수 있는 기회를 주어야 합니다.

제4조. 개작

문서의 수정판은 수정판이 명백하게 본 사용 허가서에 의해서 관리되는 조건 하에서 제2조와 제3조의 규정에 의해서 복제 및 배포될 수 있습니다. 즉, 수정판은 문서의 역할을 유지해야 하며, 수정판의 복제물을 양도받은 임의의 피양도자는 개작과 배포에 대한 동일한 권리를 양수받게 됩니다. 또한 수정판에 대해서 다음의 규정들을 준수해야만 합니다.

A. 수정판의 제목 페이지에는 (표지가 있다면 표지에도) 문서와 그 이전 판의 문서와 구별되는 제목을 사용해야 합니다. (문서의 개정 이력란이 존재한다면 이러한 사실이 등재되어야 합니다.) 그러나 이전 판의 발행인이 허락한다면, 이전 판과 같은 제목을 사용할 수 있습니다.

B. 원저작자들이 이 규정을 면제한 경우가 아니라면, 수정판의 제목 페이지에는 적어도 5명의 문서의 원저작자 (5명보다 적다면 원저작자 모두)와 함께, 개작에 책임이 있는 1인 이상의 개인 또는 단체를 저작자로 명시해야 합니다.

C. 수정판의 발행인 성명을 제목 페이지에 발행인으로서 명시합니다.

D. 문서의 모든 저작권 표시를 수정판에 유지해야 합니다.

E. 문서의 저작권 표시 부분에 자신이 개작한 것에 대한 적절한 저작권 사항을 추가해서 수정판에 표시합니다.

F. 저작권 표시 바로 다음에, 본 사용 허가서의 규정 하에 공중이 수정판을 사용할 수 있다는 사용 허가 표시를 본 사용 허가서의 부록에 나와있는 형식으로 포함시킵니다.

G. 문서의 사용 허가 표시에 포함되어 있던 변경 불가 부분의 목록과 명시할 것을 요구한 표지 구절을 수정판에도 모두 그대로 유지시킵니다.

H. 본 사용 허가서를 변경 없이 그대로 포함시킵니다.

I. ``개정이력(履歷, history) 표제'' 부분과 이 ``표제를 보존''하고 적어도 수정판의 제목, 연도, 수정판 저작자, 발행인에 대한 항목을 제목 페이지에서 명시한 것과 동일하게 이 부분에 추가합니다. 문서에 ``개정이력 표제'' 부분이 없을 경우에는 제목 페이지와 동일하게 문서의 제목과 연도, 저작자, 발행인을 명시한 이력 부분을 새롭게 만들고 앞에서 언급한 대로 수정판에 대한 사항을 추가합니다.

J. 공중이 투명 복제물에 접근할 수 있게 하기 위해서 문서에 명시한 네트워크 주소가 존재한다면 이를 수정판에도 그대로 유지시킵니다. 문서의 이전 판에 포함되어 있던 네트워크 주소가 문서에 기재되어 있는 경우에도, 이를 소급해서 수정판에 그대로 유지합니다. 네트워크 주소는 ``개정 이력 표제'' 부분에 기재될 수도 있습니다. 만일 네트워크 주소가 문서보다 적어도 4년 전에 발행된 저작물을 위한 것이거나 네트워크 주소가 최초로 포함된 문서의 발행인이 허락했다면 이를 생략할 수 있습니다.

K. ``감사의 글(acknowledgements) 표제'' 또는 ``헌사(dedications) 표제'' 부분이 있다면, ``표제를 보전''하고 이 부분에 기재되어 있는 기여자에 대한 감사의 글과 헌사의 내용 및 어조를 수정판에도 모두 유지합니다.

L. 문서의 모든 변경 불가 부분은 제목과 본문을 변경하지 않고 수정판에 그대로 유지시킵니다. 장(chapter) 또는 절(section) 번호나 이에 상당하는 것은 변경 불가 부분의 제목의 일부분으로 간주되지 않습니다.

M. ``추천사(endorsements) 표제'' 부분은 수정판에서 모두 누락시킵니다. 이러한 부분이 수정판에 포함되어서는 안됩니다.

N. 기존의 어떠한 부분도 수정판에서 ``추천사 표제'' 부분으로 표제를 바꾸지 말고 제목을 개명하는 부분이 변경 불가 부분의 어떠한 표제와도 충돌되지 않도록 합니다.

O. ``보증의 결여'' 부분은 모두 그대로 보존합니다.

만일 수정판이 문서에 포함되어 있지 않던 새로운 서두 부분이나 부록을 2차 구성부의 형태로 포함하게 되면, 이러한 부분의 전체나 일부를 선택에 따라 변경 불가 부분으로 설정할 수 있습니다. 변경 불가 부분을 새롭게 설정하기 위해서는 수정판의 사용권 허가 표시 부분에 포함되어 있는 변경 불가 부분 목록에 제목을 추가시킵니다. 이때 그 제목들은 다른 부분의 제목들과 구별되어야 합니다.

수정판에만 한정된 추천사가 다양한 주체들에 의해서 제공될 경우에는, 예를 들어 동료들의 비평문이나 수정판을 특정한 표준의 권위있는 정의로 인정한다는 관련 기관의 승인이 있을 경우에는 ``추천사 표제'' 부분을 추가할 수 있습니다.

수정판의 표지 구절 목록 말미에는 앞 표지 구절과 뒷 표지 구절로 각각 5단어와 25단어 미만의 문장을 덧붙일 수 있습니다. 한 개인 또는 한 단체는 (또는 단체에 의해서 만들어진 협약을 통해서) 오직 한 개의 문장만을 각각 앞 표지 구절과 뒷 표지 구절에 추가할 수 있습니다. 만약 문서의 표지 구절에 이미 특정인이나 특정인이 대표하는 단체의 협약에 의해서 포함된 문장이 존재할 경우에는 동일인에 의해서 표지 구절 문장이 추가될 수 없습니다. 그러나 문서의 발행인으로부터 명시적인 승인을 받은 경우에는 기존의 문장을 수정판에서 새로운 문장으로 대체할 수 있습니다.

문서의 저작자(들)과 발행인(들)은 본 사용 허가서를 통해서 수정판을 선전하는데 그들의 이름이 사용되거나, 명시적 또는 묵시적인 형태로 그들의 이름이 수정판을 추천하는데 사용되는 것을 허용한 것은 아닙니다.

제5조. 문서의 결합

수정판에 대해서 정의된 제4조의 규정에 따라서 본 사용 허가서에 의해서 특정 문서를 다른 문서들과 결합할 수 있습니다. 단, 문서를 결합할 때는 결합 저작물을 구성하는 개별 문서들의 변경 불가 부분들을 결합 문서에 그대로 포함시켜야 하며 그 목록을 결합 저작물의 저작권 표시 부분에 명시해야 합니다. 또한 모든 ``보증의 결여'' 부분을 그대로 보존해야 합니다.

결합 저작물에는 본 사용 허가서의 복제물 1부만 포함시키면 되며 여러 개의 동일한 변경 불가 부분 또한 하나로 통합될 수 있습니다. 만약, 동일한 이름을 갖는 변경 불가 부분이 여러 개 존재하지만 그 내용이 다른 경우에는 각각의 내용과 관련된 저작자와 발행자가 알려져 있을 경우에는 해당 정보를 각 부분의 말미에 괄호안에 명시하고 그렇지 않은 경우에는 숫자를 이용해서 구분합니다. 결합 저작물의 저작권 표시 부분에 있는 변경 불가 부분 목록에 포함된 제목도 같은 방식으로 조정합니다.

원문서에 존재하던 ``개정 이력 표제'' 부분은 모두 통합하여, 단일한 ``개정 이력 표제'' 부분을 결합 저작물 안에 유지해야 합니다. ``감사의 글 표제''와 ``헌사 표제'' 부분도 같은 방식으로 조정합니다. 단, ``추천사 표제'' 부분은 모두 삭제해야 합니다.

제6조. 문서의 수집

본 사용 허가서에 의해서 배포된 문서들을 모아서 구성된 수집 저작물을 만들 수 있습니다. 또한 개별 문서에 포함되어 있던 본 사용 허가서의 복제물들을 한 개로 대체하여 수집 저작물에 포함시킬 수 있습니다. 이 경우, 다른 모든 부분들은 본 사용 허가서에 규정된 제2조 동일 복제 규정을 준수해야 합니다.

수집 저작물로부터 하나의 문서를 발췌해서 개별 배포할 경우에는 본 사용 허가서의 복제물을 발췌한 문서에 첨부하고 그 이외의 다른 부분들은 모두 제2조에 규정된 동일 복제 조항을 준수해야 합니다.

제7조. 독자적 저작물과의 집합 저작물 구성

문서 또는 문서의 2차적 저작물을 독자적인 문서나 저작물과 함께 대량 저장 매체 또는 배포 매체에 구성한 편집물을 만들 경우에는 저작물의 구성에 따른 편집 저작권이 주장되지 않는 한, 저작물 전체를 본 사용 허가서가 규정하는 수정판으로 간주하지 않습니다. 이러한 편집물을 집합 저작물이라고 부르며, 편집 과정에서 문서와 함께 구성된 독자적 저작물이 문서로부터 파생된 것이 아니라면 본 사용 허가서가 적용되지 않습니다.

제3조의 표지 구절에 대한 요구가 집합 저작물 안의 문서의 복제물에 적용되는 경우에는, 문서의 양이 전체 편집물의 1/2 보다 작은 경우에는 문서의 표지 구절은 편집물 안에서 문서가 위치해 있는 곳의 표지 부분, 또는 전자적 형태의 문서였을 경우에는 전자적으로 이에 해당하는 부분에 포함되어도 무방합니다. 그러나 그렇지 않은 경우에는 표지 구절이 전체 편집물의 인쇄된 표지 부분에 나타나야 합니다.

제8조. 번역

번역은 일종의 개작으로 간주됩니다. 따라서 문서의 번역물은 제4조의 규정에 따라 배포될 수 있습니다. 변경 불가 부분을 번역물로 대체하기 위해서는 저작권자의 명시적인 승인을 얻어야 합니다. 그러나 변경 불가 부분의 전체 또는 일부에 대한 번역문을 원문과 함께 표시할 경우에는 저작권자로부터 별도의 승인을 얻을 필요가 없습니다. 본 사용 허가서와 사용권 고지 사항 및 보증의 결여 부분에 대한 번역판을 첨부할 경우에는 영어 원판들을 함께 제공해야 합니다. 영어 원판과 번역판 사이에 충돌이 발생할 경우에는 영문 원판이 우선합니다.

문서의 일부분이 ``감사의 글''과 ``헌사'', ``개정이력'' 표제를 갖고 있을 경우에는 (제1조에 따른) 표제를 보존시키는 (제4조의) 요건은 번역에 따라 전형적으로 실제 표제를 바꿀 필요가 있을 것입니다.

제9조. 권리의 소멸

본 허가서에 의해서 명시적으로 이루어 지지 않는 한 문서에 대한 복제와 개작, 양도, 배포가 성립될 수 없습니다. 이와 관련된 어떠한 행위도 무효이며 본 허가서가 보장한 권리는 자동으로 소멸됩니다. 그러나 본 허가서의 규정에 따라 문서의 복제물이나 권리를 양도받았던 제3자는 본 허가서의 규정들을 준수하는 한, 배포자의 권리 소멸에 관계없이 사용상의 권리를 계속해서 유지할 수 있습니다.

제10조. 본 사용 허가서의 향후 개정

자유 소프트웨어 재단은 때때로 본 사용 허가서의 개정판이나 신판을 공표할 수 있습니다. 새롭게 공표될 판은 당면한 문제나 현안을 처리하기 위해서 세부적인 내용에 차이가 발생할 수 있지만, 그 근본 정신에는 변함이 없을 것입니다 http://www.gnu.org/copyleft/의 내용을 참고하시기 바랍니다.

각각의 판들은 판번호를 사용해서 구별됩니다. 특정한 판번호와 그 이후 판을 따른다는 사항이 명시된 문서에는 해당 판이나 그 이후에 발행된 어떠한 판을 선택해서 적용해도 무방하고, 판번호를 명시하고 있지 않은 경우에는 자유 소프트웨어 재단이 공표한 어떠한 판번호의 판을 적용해도 무방합니다.

부록: 문서에 GFDL을 적용하는 방법

작성한 문서에 본 사용 허가서를 적용하기 위해서는 본 사용 허가서의 복제물을 문서에 첨부하고 다음과 같은 저작권 및 사용 허가 표시를 제목 페이지 다음에 추가합니다.



Copyright (c) 연도, 본인 성명

GNU 자유 문서 사용 허가서 1.2판 또는 자유 소프트웨어 재단에서 발행한 이후 판의 규정에 따라 본 문서를 복제하거나 개작 및 배포할 수 있습니다. 본 문서에는 변경 불가 부분이 없으며, 앞 표지 구절과 뒷 표지 구절도 없습니다. 본 사용 허가서의 전체 내용은 ``GNU 자유 문서 사용 허가서'' 부분에 포함되어 있습니다.


만약, 변경 불가 부분과 앞 표지 구절 및 뒷 표지 구절이 있는 경우라면 다음과 같이 변경할 수 있습니다.



본 문서의 변경 불가 부분은 ``xxx''이고 앞 표지 구절은 ``xxx'', 뒷 표지 구절은 ``xxx''입니다.


만약, 문서가 프로그램 코드의 예를 상당 부분 포함하고 있다면 GNU 일반 공중 사용 허가서와 같은 자유 소프트웨어 사용 허가서를 사용해서 프로그램 코드가 자유소프트웨어에서 사용될 수 있도록 사용 허가를 병행할 것을 추천합니다.


아래는 어느 프로그래밍 언어에서든 아주 유용하게 쓰일 수 있는 정규 표현식 유형들(Reqular Expression Patterns)을 모아봤다.

전자우편 주소:/^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/URL:/^(file|gopher|news|nntp|telnet|https?|ftps?|sftp):\/\/([a-z0-9-]+\.)+[a-z0-9]{2,4}.*$/HTML 태그 - HTML tags:/\<(/?[^\>]+)\>/전화 번호 - 예, 123-123-2344 혹은 123-1234-1234:/(\d{3}).*(\d{3}).*(\d{4})/날짜 - 예, 3/28/2007 혹은 3/28/07:/^\d{1,2}\/\d{1,2}\/\d{2,4}$/jpg, gif 또는 png 확장자를 가진 그림 파일명:/([^\s]+(?=\.(jpg|gif|png))\.\2)/1부터 50 사이의 번호 - 1과 50 포함:/^[1-9]{1}$|^[1-4]{1}[0-9]{1}$|^50$/16 진수로 된 색깔 번호:/#?([A-Fa-f0-9]){3}(([A-Fa-f0-9]){3})?/적어도 소문자 하나, 대문자 하나, 숫자 하나가 포함되어 있는 문자열(8글자 이상 15글자 이하) - 올바른 암호 형식을 확인할 때 사용될 수 있음:/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15}/

정규식과 관련해서, 완성된 정규식 유형을 특정 예문을 놓고 제대로 된 것인지 바로 확인해 보고 싶을 때는 Mac OS X 용 어플리케이션으로 Reggy가 쓸만하고, 또 위젯 형태의 Regex Widget라는 놈과 Firefox Extension인 Regular Expressions Tester도 있다. 물론 자주 사용되는 정규식 유형의 경우 이미 다른 사람들이 쓰고 있는 것이 있을 테니 Regular Expression Library에 공개되어 있는 것 중에서 알맞은 것을 찾아볼 수도 있을 것이다.

다음은 쓸만한 온라인 정규식 테스트 도구:

tizen 개발 스크린 샷 (tizen developing screen shot)


[MySQL] MySQL 4.1.x 문자셋, 인코딩, UTF-8
[출처] http://kwon37xi.egloos.com/1634768오밤중에 잠이 안와서 MySQL 갖고 노는 중..

현재 나의 Fedora Core 3 UTF-8 리눅스 상에서, JDBC와 한글 문제를 일으키지 않는 MySQL 4.1.x 설정 상태는...

기존 버전에서는 "euc-kr"로 표기되는 문자셋이 "euckr"로 바뀌었다.

/etc/my.cnf
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
[mysqldump]
default-character-set=utf8


JDBC Driver URL
jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=UTF8


현재 문자셋 정보 보기
show variables like 'c%';

결과
character_set_client : utf8
character_set_connection : utf8
character_set_database : utf8
character_set_results : utf8
character_set_server : utf8
character_set_system : utf8
character_sets_dir : /usr/share/mysql/charsets/
collation_connection : utf8_general_ci
collation_database : utf8_general_ci
collation_server : utf8_general_ci


이미 생성된 DATABASE의 문자셋 바꾸기
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;
mysql> ALTER DATABASE [DB명] DEFAULT CHARACTER SET utf8;


이미 데이터가 들어간 테이블의 문자셋 변환
create table test (merong varchar(20) collate latin1_general_ci);

이렇게 만들어진 테이블에 한글 데이터를 넣은 후 필드를 euckr 로 변경하려면
다음처럼 해야 합니다.

alter table test modify merong binary(100);
alter table test modify merong varchar(20) collate euckr_korean_ci;

binary 로 바꾸면 문자셋 특성이 사라지기 때문에 이런 변환과정을 거쳐야
합니다(메뉴얼에 의하면). 그냥 바꾸면 문자들이 손상됩니다.

참조 : Database.sarang.net에 올라온 글

DB와 테이블 생성시 지정 from MySQL and UTF-8

Database:
(CREATE | ALTER) DATABASE ... DEFAULT CHARACTER SET utf8

Table:
(CREATE | ALTER) TABLE ... DEFAULT CHARACTER SET utf8


기존 EUC-KR 데이타를 4.1.x로 옮기기
http://okjsp.pe.kr/bbs?act=VIEW&seq=43402&bbs=bbs2&keyfield=subject&keyword=mysql&pg=0

* MySQL의 기본 인코딩(default encoding)을 UTF8으로 설정하기 : 이미 euc-kr 등으로 존재하는 DB를 UTF-8로 변경하는 방법등을 소개한다.

1) 데이트 강간을 위한 ‘악마의 술잔’ 한모금에 블랙아웃…24시간내 검사 못하면 미제사건

2) 죽음의 性도착증 ‘자기 색정사’ 혼절직전의 성적 쾌감 탐닉…‘질식에 중독되다’

3) 친구와 함께 차안에서 아내에 몹쓸짓 한 남편 사고로 위장한 최악의 선택

4) 살해당한 아내의 눈속에 담긴 죽음의 비밀 흔해서 더 잔인한 위장 살인의 실체는

5) 강간 후 살해된 여성, 그리고 부검의 반전 죽을 때까지 여성이고 싶었던 여성의 사연

6) 천안 母 女살인범, 현장에서 대변만 보지 않았더라도… ‘미세증거물’ 속에 숨은 사건의 진상

7) 정자가 수상한 정액…‘씨없는 발바리’ 과학수사 얕봤다가 정관수술까지 한 연쇄 성폭행범

8) 변태성욕 30대 살인마의 아주 특별한 핏자국 혈흔속 性염색체의 오묘한 비밀

9) “그날 조폭은 왜 하필 남진의 허벅지를 찔렀나?”… 칼잡이는 당신의 ‘치명적 급소’를 노린다

10) 소변 참으며 물 마시던 20대女, 갑자기 몸을 뒤틀며… 생명을 앗아가는 ‘죽음의 물’

11) 자살한 40대 노래방 여주인, 살인범은 알고 있었다 생활반응이 알려준 사건의 진실

12) 불탄 시신의 마지막 호흡이 범인을 지목하다 화재사망 속 숨어있는 타살흔적 증거는

13) 車 운전석에서 질식해 숨진 그녀의 주먹쥔 양팔

14) 백골로 발견된 미모의 20대女, 성형수술만 안 했어도… 가련한 여성의 한 풀어준 그것

15) 무참히 살해된 20대女…6년만에 살인범 잡고보니… 274만개의 눈이 잡은 연쇄살인범의 정체

16) 이태원 옷집 주인 살인사건…20대 여성이 지목한 범인은? 찢어진 장부의 증언

17) 물속에서 떠오른 그녀의 흰손…토막살인범 잡고보니 바다에서 건진 시신 신원찾기

18) 헤어드라이어로 조강지처 살해한 50대의 계략… 몸에 남은 ‘전류반’은 못 숨겼네

19) 자살이라 보기엔 너무 폭력적인 죽음…왜? 가해자·피해자는 하나였다

20) 아파트 침대 밑 女 시신 2구…잔인한 ‘진실게임’ 결과는? 누명 벗겨준 거짓말 탐지기

21) 자다가 갑자기 세상을 뜨는 젊은 남자들…누구의 저주인가? 청장년 급사증후군의 비밀

22) 70% 부패한 시신 유일한 증거는 ‘어금니’ 억울한 죽음 단서 된 치아

23) 살인현장에 남은 별무늬 운동화 자국의 비밀 60대 노인의 치밀한 트릭

24) 택시 안에서 숨진 20대 직장女 살인범은 과연… 돈 버리고 납치한 이상한 택시 강도

25) 그녀가 남긴 담배꽁초 감식결과 놀라운 사실이 살인 현장에 남은 립스틱의 반전

26) 목졸리고 훼손된 60대 시신… 그것은 범인의 속임수였다 ‘파란 옷’ 입었던 살인마

27) 40대 여인 유일 목격자 경비 최면 걸자 법최면이 일러준 범인의 얼굴

28) 소리없이 사라진 30대 새댁, 알고보니 들짐승이… 부러진 다리뼈가 범인을 지목하다

29) 살인자가 남기고 간 화장품 향기, 그것은 ‘트릭’이었다 강릉 40대女 살인사건의 전말

30) 동거女 잔혹하게 살해한 30대, 시신이 물속에서 떠오르자… 살인후 물속으로 던진 사건 그후

31) 최악의 女연쇄살인범 김선자, 5명 독살과 비참한 최후 청산염으로 가족, 친구 무차별 살해

32) 살해된 20대女의 수표에 ‘검은 악마’의 정체가 담기다 완전범죄를 꿈꾸던 엽기 살인마

33) 억울한 10대 소녀의 죽음…두줄 상처의 비밀 추락에 의한 자살? 몸을 통해 타살 증언하다

34) 하얀 피부와 사후강직이 일러준 토막살인의 진실 전철역 화장실에 유기된 30대女의 시신

'생활의 발견' 카테고리의 다른 글

고령자 유망직업 20가지  (0) 2012.05.01
승자와 패자  (0) 2012.04.29
[최근] 범죄 사건 사례  (0) 2012.02.08
게임소설 쓰는 법  (0) 2011.12.04
게임소설이란 무엇인가? 위키백과에서  (0) 2011.12.04

Do Androids Dream of LEGO MINDSTORMS?

11/10/2010

[출처] http://mindstorms.lego.com/en-us/News/ReadMore/Default.aspx?id=227417

Do Androids Dream of LEGO MINDSTORMS?
Now there is a new way to play with your MINDSTORMS robots!

If you are the owner of a LEGO MINDSTORMS NXT set and have an Android smartphone and you want to have some quick and fun action with your robots, now you have the possibility to get some fun and easy play - for free!

We are happy to announce the launch of the MINDdroid application for ALL Android phone (1.6 or higher), that will allow you to get instant access and control to your NXT robot, and give the ability to control by the flick of a wrist!

The MINDdroid app is a remote-control application that allows you to create a wireless connection directly with your NXT, and once a connection is established, you can tilt and turn your phone to make the robot move forward, turn to the sides, and by pressing an action button on the phone's screen, activate the Action motor. If you have a Shooterbot or other robot using two motors for motion and have a spare motor for actions, you are in for a lot of fun!

To download the MINDdroid application to your Android phone, you can scan this QR code with your scanning application, or visit the App Market through your Android phone.

The MINDdroid Application has been developed by some dedicated AFOLs (Adult Fans of LEGO) and software specialists Günther and Shawn, in collaboration with the LEGO MINDSTORMS team:

About the developers:

Shawn Brown started off with two of the original "Expert Builder" sets (which became the Technic line) back in 1978 when he was in grade school in Minnesota, USA. He now lives in Tokyo, Japan with his wife and son, does Java programming, teaches grade school and enjoys building things for the intellectual satisfaction of it.

Günther Hölzl is a professor at the Höhere Technische Bundeslehranstalt (Higher Technical Learning Institute) specialising in Internet and Software engineering, Biomedical information technology and Project management, based in Klagenfurt, Austria, where he lives with his wife and two children.

We are looking forward to see how you play with the MINDdroid app, and expect to see more apps coming for the various smart devices in the future!

The LEGO MINDSTORMS team

To learn more about how to connect wirelessly to your NXT microcontroller via Bluetooth, or to create individual names for your NXT please check the 'NXT Technology' pages in your User Guide, that comes with the LEGO MINDSTORMS NXT sets.

The source code for MINDdroid is released under the GPL v3 license and it is freely downloadable here:

http://github.com/NXT/LEGO-MINDSTORMS-MINDdroid

Let us know if you can make it better!

LEGO logo, icons, backgrounds and sounds are protected by copyright laws and are excluded from GLP v3 license.
­© 2010 The LEGO Group.


아두이노로 할 수 있는 아이디어 및 프로젝트, 기타 정보 모음

아두이노를 활용해서 구현 가능한 것들. 그중에서도 내가 관심있는 것들을 함 모아보기로 했다.
아직 구매한 아두이노가 도착하지도 않았지만 벌써 해보고 싶은 것들이 줄을 서있다ㅋ


먼저 인터넷 관련

  • 블로그 및 사이트에서 새로운 댓글 및 방문자가 도착했을 경우 아두이노를 통해 LED나 소리로 알려주기
    http://www.cocoadev.co.kr/273
    http://www.cocoadev.co.kr/272
  • 웹페이지에서 아두이노를 제어하기(LED를 켠다던가, 소리를 낸다던가 등등)
    http://blog.kimchulho.com/475
  • 아두이노와 트위터, 페이스 북 연동 - API를 이용해도 되겠고..
  • 아두이노로 현재 집안의 상황(온도, 밝기 등)을 시간별로 트위터로 뿌려주기!
    http://labs.s-cubism.com/blog/2009/07/03/135/
    (이걸 좀 더 활용해서 온도가 너무 높을 경우에는 IR로 에어콘에 켜라는 신호를 쏴줘도 되겠네ㅋ)
  • 웹사이트 현재 접속자 수에 따라서 LED 밝기 컨트롤 및 On 상태인 LED 컨트롤
  • 인터넷을 통해 아두이노 입출력이 가능하다면.... 수많은 활용범위가 생겨나겠군
  • 아두이노 with PHP
    http://www.youtube.com/watch?v=DnW_D16r5Hg&feature=youtu.be

LED 활용

센서 활용

  • 거리를 측정해서 LED에 불이 들어오는 범위를 컨트롤. 예술작품에 활용하면 좋을 듯.
  • 출입문에 달아서 출입자의 키에 따라 위너!, 루저! 라고 외치는 걸 만들어도 좋겠고ㅋㅋ
  • XBOX360 키넥트와의 연동

로봇

  • 사족로봇
  • 리모콘 적외선 체크해서 조종
  • 블루투스 신호 체크해서 조종
  • 음파 측정해서 조종
  • 어쨌든 센서와 연동해서 조종

스마트폰과 연동

준비물 혹은 해볼만한 것


참고사이트

  • 아두이노 + WM + 안드로이드 + 기타 등등의 여러가지 프로젝트를 확인할 수 있는 국내 블로그
    http://blog.naver.com/fourmkr

아두이노 부품관련



당장 생각하는 몇가지만 적어보았는데 생각보다 활용범위는 큰 것 같다. 거의 무궁무진.
공부할 것도 많고 예전에 배운거 다시 복습할 수 있는 아주 좋은 기회가 될 듯 싶다.

Best and Free Programming Ebooks with Open Source Licenses

[출처] http://www.webdesignish.com/best-and-free-programming-ebooks-with-open-source-licenses.html

We all learn many things from reading the conventional books. But now the trend has changed, and with electronic media so powerful we have Ebooks that can be read on computers or mobile devices.

Today in WebDesignish we are presenting very useful and recommended list of programming Ebooks with open source licenses, like Creative Commons, GPL, etc. The books can be about a particular programming language or about computers in general.

I Hope you guys will share this useful collection with your near and dear ones. Also let me know if you have any other ebook that’s free and can be listed here in the collection.

Bash

C

C++

C#

Common Lisp

Haskell

Java

JavaScript

Lua

Objective-C

Perl

PHP

PowerShell

Prolog

Python

Ruby

SQL

x86 assembly

Algorithms and Data Structures

Frameworks/Projects

Version control

Release Tools

Unix / Linux

Others

  • OpenClassroom
  • Web Applications

    John Ousterhout

    Course Description

    Although the World-Wide Web was initially conceived as a vehicle for delivering  documents, it is now being used as a platform for sophisticated interactive applications, displacing the traditional mechanism of installable binaries. Web-based applications offer numerous advantages, such as instant access, automatic upgrades, and opportunities for collaboration on a massive scale. However, creating Web applications requires different approaches than traditional applications and involves the integration of numerous technologies. This class will introduce you to the Web technologies and give you experience creating Web applications. In the process you will learn about markup languages, scripting languages, network protocols, interactive graphics, event-driven programming, and databases, and see how they all work together to deliver exciting applications.


    I. INTRODUCTION



    II. HTML and CSS



    III. URLs and Links



    IV. The Ruby Language



    V. Rails Introduction



    VI. Introduction to SQL



    VII. Active Record



    VIII. HTTP and HTTPS



    IX. Cookies and Sessions



    X. Forms



    XI. Javascript



    XII. The Document Object Model (DOM)



    XIII. Events



    IX. AJAX



    X. Security: Network Attacks



    XI. Security: Session Attacks



    XII. Security: Isolation



    XIII. Security: Code Injection



    XIV. Security: Phishing Attacks



    XV. Large-Scale Applications



    XVI. Datacenters



    XVII. Deploying Web Applications



    XVIII. Course Wrap-Up



    Mobile Web Application과 Webstore
    성장하는 Mobile Web

    [출처] http://mobizen.pe.kr/1041
    사용자 삽입 이미지

    스마트폰 대중화로 인해 Mobile Web의 트래픽이 가파른 상승 곡선을 그리고 있다. 모바일 전용 웹 사이트도 빠르게 증가하고 있는데 Millennial Media 보고서들의 수치를 재구성해보니 2010년 1월과 비교하면 11월에 34%나 늘어났다.

    GfK NIS의 최근 보고서에 따르면 스마트폰 사용자들은 일평균 24개 사이트를 방문하는 것으로 알려졌다. 또한, 스마트폰을 통한 방문율에서 Top 50 웹사이트가 차지하는 비중이 40%에 불과하여 Long Tail의 구조를 가지고 있는 것으로 조사되었다. Millennial Media와 GfK NIS의 보고서는 미국 시장을 대상으로 했지만 국내도 비슷한 상황일 것으로 짐작된다.


    Mobile Web Service or Web Application

    Mobile Web Service는 일반적으로 브라우저에서 URL 입력을 통해 접속한후 나타나는 Web Page를 통해 사용할 수 있는 서비스를 이야기 한다. 그런데, 많은 전문가들이 고전적인 Mobile Web Service보다는 Mobile Web Application에 대한 기대를 더 높게하고 있다.

    Mobile Web Application에 대한 도전이 처음은 아니다. 브라우저 또는 Web Rumtime 기술등을 이용해 구동되는 Mobile Widget이 이전부터 존재했다. Mobile Widget의 목표는 대기화면을 장악하는 것으로 범용적인 Application을 지향하는 Mobile Web Application과는 다소 상이하다. 하지만, 기술의 구성이나 배포의 형태등은 Mobile Widget과 Mobile Web Application은 매우 유사하다.


    Mobile Web Application 정의

    2010년 12월 14일, W3C에서는 'Mobile Web Application Best Practices'를 정식으로 Release 하였다. 해당 문서에서는 Web Application에 대한 정의가 포함되어 있어 참고할 만하다.

    The term "Web application" refers to a Web page (XHTML or a variant thereof + CSS) or collection of Web pages delivered over HTTP which use server-side or client-side processing (e.g. JavaScript) to provide an "application-like" experience within a Web browser. Web applications are distinct from simple Web content (the focus of BP1) in that they include locally executable elements of interactivity and persistent state.

    상기 내용은 범용적인 정의라기 보다는 해당 문서 내에서 통용되는 단어를 명확하게 구분짓기 위한 것이지만 개인적으로는 가장 명확하게 Mobile Web Application을 정의하였다고 생각한다. Application처럼 작동하는 Web Page나 여러 Page를 하나의 묶음으로 Packaging한 Widget을 모두 Mobile Web Application이라고 부를 수 있다는 것이다.


    Mobile Web Application에 대한 기대

    그렇다면 왜 Mobile Web Application은 높은 기대를 받고 있는 것일까? 여기에는 다양한 원인이 있지만 대표적인 것들만 정리를 하면 아래와 같다.

    사용자 삽입 이미지
    첫째, Mobile Web Service에 대한 새로운 기회가 높지만 고착화되어 있는 기존 유선 시장의 틀을 깨기에는 한계가 있다. 이미 대형 포탈들이 시장을 형성하고 있는데 신규 사업자들이 성공하기는 쉽지 않다.
    둘째, 지금과 같이 Mobile Native OS가 많고 단말 단편화가 많은 시점에 서비스 사업자가 모든 OS에 대응하기에는 현실적인 어려움이 존재한다.
    셋째, Device API, html5, Web 기반 크로스 플랫폼(Phonegap, Titanium, Rhodes 등)과 같은 Web 기반 기술들이 점차 발전해 나고 표준화되고 있기 때문이다.
    넷째, 앱스토어가 가지고 있는 유통의 집중력을 사용할 수 있기 때문이다.


    과거의 답습, Mobile Widget 형태의 Application

    이미 다양한 사업자들에 의해 앱스토어를 통해 Mobile Web Application을 배포하려는 시도가 시작되었다. 가장 대표적인 앱스토어가 WAC이다. WAC의 현재까지의 접근은 Web Run Time이 기반이 되고, SDK를 이용해 Packing하여 판매하는 형태이다. 이는 Package을 다운로드 받아야 사용할 수 있고, 버전 관리의 이슈를 수반하는 과거 Widget의 문제점을 해결하지 못한 답습이다.

    사용자 삽입 이미지

    국내에서 진행하고 있는 K-WAC도 비슷한 상황이다. WAC과 K-WAC을 보는 시각이 우려스러운 것은 mobizen만은 아닌 듯 하다. 본 블로그를 통해 진행했던 설문에서도 응답자의 47.06%가 '상용화는 되겠지만 시장 효과는 없을 것'으로 답변하였다.


    Web Application을 위한 앱스토어, 웹스토어

    Web Application이 앱스토어를 통해 성공하기 위해서는 원하는 Application들을 쉽게 찾아 볼 수 있고, 사용자들의 평점이나 리뷰를 통해 검증이 가능해야 한다. 또한, Web이 가지고 있는 가장 큰 장점인 다운로드의 과정이 필요없고 업그레이드가 서버에서 할 수 있어야 한다.

    사용자 삽입 이미지

    참고할만한 WebStore로는 완벽하게 브라우저 기반으로 동작하는 OpenAppMkt을 들 수 있다. 브라우저로 http://www.openappmkt.com 으로 접속하면 주소를 기반으로 Mobile Web Application의 Short Cut이 생기고, 이를 통해 Native Application과 유사하게 동작하는 Mobile Web Application을 볼 수 있다.

    OpenAppMkt는 아이폰과 안드로이드가 거의 유사하게 동작하며(완벽하게 동일하지는 않다.), 제공되는 Application들이 대부분 html5로 작성되어 매우 높은 완성도를 보여준다. 국내에서도 MobileOK에서 유사한 형태의 웹스토어인 mOKStore를 개발한 바 있다.


    문제는 사용성

    사실 Mobile Web이냐 Mobile App 이냐의 선택은 '사용자의 가치'라는 측면에서 무의미하다. 개발 관리 차원을 넘어서 Mobile Web Application이 Native Application보다 높은 사용성을 보여주지 못한다면 '기대'에만 머무를 수 밖에 없다.

    사용자 삽입 이미지

    WebStore를 통해서 개발자들이 수익을 만들어 낼 수 있어야 한다. RWW를 통해 진행되고 있는 설문의 결과를 보면 사용자들은 Game, 음악, 비디어 스트리밍 서비스에 대한 유료 구매에 긍정적인 것으로 나타났다. 역시나 가장 걱정은 Game이다. html5를 통해 개발된 Game이 Native Application 대비 경쟁력이 있을것인지 대해서는 다소 부정적이다.

    Mobile Web Application이 성공하기 위해서는 이러한 시장의 장애물을 넘어서야 한다. 기술과 환경적인 요인은 분명히 Mobile Web Application에 긍정의 신호를 보내고 있다. 다만, 결국 시장 성공의 열쇠는 컨텐츠이다. Mobile Web Application이 사용성에 문제가 없는 컨텐츠들을 얼마만큼 만들어 낼 것인지 이번 2011년도에 기대를 해보도록 하자.
    2011/01/05 08:202011/01/05 08:20

    [사건 Inside] (1) 믿었던 ‘모델급’ 여친이 회사 사장과수상한 삼각관계가 만든 살인미수

    [사건 Inside] (2) 소개팅와의 하룻밤이 끔찍한 지옥으로…인천 ‘미성년자 꽃뱀 사건’

    [사건 Inside] (3) 생면부지 여중생에게 몹쓸 짓을…‘전주 여중생 성추행 동영상 사건’

    [사건 Inside] (4) 밀폐공간에 속 시신 3구, 누가? 왜?…‘울산 아파트 살인사건’ 전말

    [사건 Inside] (5) “입양한 딸, 남편이 바람핀 뒤 나 몰래?”…‘구로 영아 폭행치사 사건’

    [사건 Inside] (6) 조강지처 베란다서 밀어 살해해 놓고 태연히 음료수 마신 ‘엽기 남편’

    [사건 Inside] (7) 범인 “시신은 상상할 수 없는 곳에 있다”…‘거창 40 여성 실종사건’

    [사건 Inside] (8) “ 애인이 ‘꽃뱀 예림이’라니”… 70 재력가의 비극적 순정

    [사건 Inside] (9) 군대에서 발견된 성병, 범인은 ‘그 아저씨’…‘전주 무속인 추행 사건’

    [사건 Inside] (10) 이웃사촌들이 최악의 ‘집단 성폭행’전남 장흥 시골마을의 비밀

    [사건 Inside] (11) 명문 여대생, 남친 잘못 만나 마약에 성매매까지

    [사건 Inside] (12) 부인 시신에 모자씌워 저수지로사기 결혼이 부른 엽기 살인

    [사건 Inside] (13) “나만 믿으면 100만원이 3억원으로…‘인터넷 교주’ 믿었다 패가망신

    [사건 Inside] (14) 독극물 마신 살인범 주유소로 난입해…‘강릉 30 살인사건’

    [사건 Inside] (15) 글러브 끼고 주먹질에 ‘쵸크’로 반격엽기 커플의 사랑싸움

    [사건 Inside] (16) “감히 나를 모함해?”…가양동 ‘일진 할머니’ 기막힌 복수

    [사건 Inside] (17) “실종된 여고생 3명, 장기가 적출된 채…”…순천 괴소문의 진실

    [사건 Inside] (18) 남자 720명 울린 부천 꽃뱀 알바의 정체수상한 레스토랑의 비밀

    Libpcap File Format

    The libpcap file format is the main capture file format used in TcpDump/WinDump, Wireshark/TShark, snort, and many other networking tools.

    Overview

    This file format is a very basic format to save captured network data. As the libpcap library became the "de facto" standard of network capturing on UN*X, it became the "common denominator" for network capture files in the open source world (there seems to be no such thing as a "common denominator" in the commercial network capture world at all).

    Libpcap, and the Windows port of libpcap, WinPcap, use the same file format.

    Although it's sometimes assumed that this file format is suitable for Ethernet networks only, it can serve many different network types, examples can be found at the Wireshark's Supported Capture Media page; all listed types are handled by the libpcap file format.

    The proposed file extension for libpcap based files is: .pcap

    Wireshark handles all capture file I/O in the wiretap library. You'll find further details about the libpcap file format in the wiretap/libpcap.c and .h files

    File Format

    There are some variants of the format "in the wild", the following will only describe the commonly used format in its current version 2.4. This format version hasn't changed for quite a while (at least since libpcap 0.4 in 1998), so it's not expected to change except for the PCAPng file format mentioned below.

    The file has a global header containing some global information followed by zero or more records for each captured packet, looking like this:

    Global Header

    Packet Header

    Packet Data

    Packet Header

    Packet Data

    Packet Header

    Packet Data

    ...

    A captured packet in a capture file does not necessarily contain all the data in the packet as it appeared on the network; the capture file might contain at most the first N bytes of each packet, for some value of N. The value of N, in such a capture, is called the "snapshot length" or "snaplen" of the capture. N might be a value larger than the largest possible packet, to ensure that no packet in the capture is "sliced" short; a value of 65535 will typically be used in this case.

    • This header starts the libpcap file and will be followed by the first packet header:
      typedef struct pcap_hdr_s {        guint32 magic_number;   /* magic number */        guint16 version_major;  /* major version number */        guint16 version_minor;  /* minor version number */        gint32  thiszone;       /* GMT to local correction */        guint32 sigfigs;        /* accuracy of timestamps */        guint32 snaplen;        /* max length of captured packets, in octets */        guint32 network;        /* data link type */} pcap_hdr_t;
      • magic_number: used to detect the file format itself and the byte ordering. The writing application writes 0xa1b2c3d4 with it's native byte ordering format into this field. The reading application will read either 0xa1b2c3d4 (identical) or 0xd4c3b2a1 (swapped). If the reading application reads the swapped 0xd4c3b2a1 value, it knows that all the following fields will have to be swapped too.
      • version_major, version_minor: the version number of this file format (current version is 2.4)
      • thiszone: the correction time in seconds between GMT (UTC) and the local timezone of the following packet header timestamps. Examples: If the timestamps are in GMT (UTC), thiszone is simply 0. If the timestamps are in Central European time (Amsterdam, Berlin, ...) which is GMT + 1:00, thiszone must be -3600. In practice, time stamps are always in GMT, so thiszone is always 0.
      • sigfigs: in theory, the accuracy of time stamps in the capture; in practice, all tools set it to 0
      • snaplen: the "snapshot length" for the capture (typically 65535 or even more, but might be limited by the user), see: incl_len vs. orig_len below

      • network: link-layer header type, specifying the type of headers at the beginning of the packet (e.g. 1 for Ethernet, see tcpdump.org's link-layer header types page for details); this can be various types such as 802.11, 802.11 with various radio information, PPP, Token Ring, FDDI, etc.

      /!\ Note: if you need a new encapsulation type for libpcap files (the value for the network field), do NOT use ANY of the existing values! I.e., do NOT add a new encapsulation type by changing an existing entry; leave the existing entries alone. Instead, send mail to tcpdump-workers@lists.tcpdump.org , asking for a new link-layer header type value, and specifying the purpose of the new value.

    Record (Packet) Header

    • Each captured packet starts with (any byte alignment possible):
      typedef struct pcaprec_hdr_s {        guint32 ts_sec;         /* timestamp seconds */        guint32 ts_usec;        /* timestamp microseconds */        guint32 incl_len;       /* number of octets of packet saved in file */        guint32 orig_len;       /* actual length of packet */} pcaprec_hdr_t;
      • ts_sec: the date and time when this packet was captured. This value is in seconds since January 1, 1970 00:00:00 GMT; this is also known as a UN*X time_t. You can use the ANSI C time() function from time.h to get this value, but you might use a more optimized way to get this timestamp value. If this timestamp isn't based on GMT (UTC), use thiszone from the global header for adjustments.

      • ts_usec: the microseconds when this packet was captured, as an offset to ts_sec. /!\ Beware: this value shouldn't reach 1 second (1 000 000), in this case ts_sec must be increased instead!

      • incl_len: the number of bytes of packet data actually captured and saved in the file. This value should never become larger than orig_len or the snaplen value of the global header.

      • orig_len: the length of the packet as it appeared on the network when it was captured. If incl_len and orig_len differ, the actually saved packet size was limited by snaplen.

    Packet Data

    • The actual packet data will immediately follow the packet header as a data blob of incl_len bytes without a specific byte alignment.

    Libraries

    It shouldn't be too hard to implement functions to read/write a libpcap file from scratch as it's a really simple file format. However, if you want to use a library for this purpose, or if you need to actually capture packets from a live network, the following libraries are available to do just this:

    • libpcap: the origin of this file format (for UN*X based systems)

    • WinPcap: Windows based version of libpcap

    There are wrappers for various programming languages available (but you must have one of the above libs installed):

    • Net::Pcap: Perl based libpcap wrapper

    • Jpcap: JAVA based libpcap wrapper

    • python-libpcap: Python based libpcap wrapper

    • Ruby/Pcap: Ruby based libpcap wrapper

    • ... you may add a libpcap wrapper for your favourite programming language or using Google if it's still missing here ...

    Note that if you write your own code, it will fail to read any capture files in the "next generation libpcap" format mentioned below. If you use libpcap, however, it will, when linked (at build time or run time) with a version of libpcap/WinPcap that can read those files, be able to read "next generation libpcap" files that don't use features not supported by the current libpcap API (such as packets from multiple interfaces with different link-layer types) as well as reading the current libpcap format. As such, you should use libpcap/WinPcap if you can, rather than writing your own code to read those files.

    Drawbacks

    The libpcap format is very simple, one of the reasons that it has gained such a wide usage. Unfortunately it misses a few things which would be helpful:

    • nanosecond time resolution
    • user comments: "shows connection breakdown starting at packet 1432"
    • interface information (like the network card manufacturer)
    • packet drop count (and probably other counts as well)
    • ...

    Future

    It is widely accepted that the libpcap file format serves its purpose but lacks some useful features. There's a proposal of a next generation pcap file format available at: http://www.winpcap.org/ntar/draft/PCAP-DumpFileFormat.html. The new format supplies many of the capabilities listed in "Drawbacks" above.

    This is still a proposal for quite a while now. Wireshark currently has the ability to read at least some pcap-NG files, although it doesn't support all of the capabilities of the files, and libpcap 1.1.0 and later have a limited ability to read them as well. The NTAR - Network Trace Archival and Retrieval library is currently under development. When finished it can read/write the records in that format, but not interpret them (like Wireshark does); in the future, libpcap and Wireshark will use that library and will interpret the records.

    More details about the integrating of the pcapng file format into Wireshark at: Development/PcapNg

    Discussion

    May be, it will be better, to use the word "data block" or "block" or some other instead of "packet"

    + Recent posts