[알아봅시다] 기존 IT와 스마트 IT
피처폰ㆍTV `화질ㆍ기능`에 감탄하는 어머니
스마트폰으로 방송보며 실시간 댓글다는 자녀

[출처] http://www.dt.co.kr/contents.htm?article_no=2012050302011857731002

[2012년 05월 03일자 18면 기사]

수동적으로 단말기 활용하던 이용자
서비스 참여ㆍ공유ㆍ소통 주체로 우뚝


최근 몇 년간 IT업계의 키워드를 꼽으라면 단연 `스마트'를 들 수 있습니다. 스마트폰이 촉발시킨 스마트 IT 시대의 도래는 기존 디지털 IT시대와는 여러 가지 측면에서 차이점을 보이며 진화하고 있는데요.

통상적으로 1990년대 이후부터 2000년대 중반까지를 디지털 IT시대라고 한다면, 스마트폰이 등장한 2000년대 후반부터를 스마트 IT시대로 구분할 수 있습니다.

디지털 IT시대가 IT의 보급과 확산에 초점을 맞춘 시대였다면, 스마트 IT시대는 IT를 일반인부터 기업, 산업, 공공영역에서 보다 똑똑하게 활용하는 것에 중점을 두고 있습니다. 즉, 디지털 IT시대가 IT의 양적 확대가 목표였다면 스마트 IT시대는 양적으로 확대된 IT의 질적 활용 수준을 높여 생산성, 효율성, 편의성, 유희성, 혁신성을 강화하는 것에 주안점을 두고 있다고 볼 수 있습니다.

◇스마트폰 등장으로 촉발된 스마트 IT=스마트 IT의 본격적인 시작은 2007년 스마트폰 등장이 계기가 됐는데요. 이후 2000년대 초반부터 스마트 IT를 분출하기 위한 빅뱅의 에너지가 집적돼 왔고 특히 단말 제조 우위의 기존 IT시대에서 고도화네트워크-단말-플랫폼-콘텐츠의 에코 시스템 역량이 기술 발전을 통해 크게 결집돼 이를 바탕으로 스마트 IT 시대가 열리게 됐습니다.

◇IT생태계 전반의 기술 진화로 촉발=우선 기존 IT에서 스마트 IT로의 전개는 네트워크-플랫폼-콘텐츠-단말의 생태계 전반의 급격한 기술 진화가 바탕이 됐습니다. 인텔리전트 컴퓨팅 기술, 이용자 친화적 UI/UX 기술, 차세대 네트워크 기술, 차세대 플랫폼 기술, 차세대 디스플레이 기술 등의 발전적 전개는 스마트 IT의 지속적 발전을 견인하고 있다고 할 수 있습니다.
핵심 단말기 측면에서 보면 기존 IT가 음성통화와 간단무선 인터넷을 제공하는 피처폰과 높은 영상 화질을 추구하는 TV가 핵심 매체였다면, 스마트 IT 시대에서는 핵심 단말기기 역할과 범위가 크게 확장됐습니다. 기능이 중요하고 일방향의 수동적 이용이 특징인 기존 IT 단말기기에 비해, 스마트 IT는 이용자의 참여와 편의를 극대화한 스마트폰과 스마트 패드, 스마트 TV가 주를 이뤄 향후 자동차와 결합해 스마트 카, 지능화된 주거공간인 스마트 홈으로 그 영역이 확대되고 있고, 스마트 스크린을 통해 상호 연동이 보편화되고 있는 상황입니다.

◇SW강화 및 개방형 플랫폼 통해 융합=기존 IT의 특징은 단말의 기능과 품질을 다른 것에 비해 우선하고 콘텐츠의 상호 연동성이 제약되며 융합이 부분적으로 일어나 이용자의 역할이 수동적 소비자로 제약됩니다. 반면 스마트 IT는 소프트웨어 부문이 강화된 컴퓨팅 파워와 사용자 편의성이 보다 향상된 인터페이스가 단말의 핵심을 이루고 있습니다. 또 개방형 플랫폼을 통해 다양한 단말과 산업이 융합하고 동일한 콘텐츠를 다양한 단말 환경에서 동일하게 이용이 가능해지며, 소비와 생산이 유기적으로 연결되는 프로슈머로서 이용자의 역할이 강화된다는 점이 차이입니다.

◇인간 중심의 IT 및 와해성 혁신 추구=이용자에게 제공되는 핵심 가치 역시 기존 IT와 스마트 IT는 커다란 차이를 보이고 있는데요. 기존 IT가 양방향보다는 일방향의 전달을 지향하기 때문에 정보 소통이 제한적이고, 최적의 서비스 제공에 초점을 맞춰 혁신보다는 기능과 품질을 중시했습니다.
그러나 스마트 IT는 이용자가 참여, 공유, 소통의 주체가 되고, 서비스 기능 뿐만아니라 감성과의 결합을 중요시하는 인간 중심의 IT를 추구합니다. 또 지능과 융합을 통해 새로운 서비스와 시장을 창출하는 와해성 혁신을 추구하고 있습니다.

◇HWㆍSW 결합한 생태계 통합전략 추구=기존 IT가 규모와 범위의 경제를 바탕으로 소비자에게 보다 나은 품질의 제품을 보다 저렴하게 제공하는 것이 핵심 전략이었다면, 스마트 IT는 소비자의 니즈 및 경험을 우선하며 이를 참여와 개방, 소통을 통해 특화된 서비스에 반영하고 하드웨어와 소프트웨어를 결합하는 생태계 통합 전략을 추구하는 것이 기업 전략의 핵심이라는 점입니다.

결론적으로 기존 IT가 스마트 IT로 진화와 전개되는 주된 원동력은 기술적 측면에서 지능형 컴퓨팅 기술, 이용자 친화적 인터페이스, 차세대 네트워크기술, 차세대 플랫폼 기술, 차세대 디스플레이 기술에서 찾을 수 있습니다.

즉, 기존 IT가 단말이 기능과 품질, 최적의 서비스 제공, 규모의 경제, 공급 위주 전략, 하드웨어 전문 제조가 핵심 경쟁 요소였다면, 스마트 IT는 단말의 컴퓨팅 기능과 이용자 친화적 인터페이스, 개방형 플랫폼을 통한 이용자의 프로슈머적 참여, 기능과 감성의 결합, 비즈니스 모델 혁신, 소프트웨어 역량이 경쟁의 원천이 된 셈이라 할 수 있습니다.

대전=이준기기자 bongchu@

자료제공=한국전자통신연구원(ETRI)

◇ 사진설명 : 디지털 IT시대와 스마트 IT시대의 차이점

출처=한국전자통신연구원(ETRI)

특허출원방법 특허청 (hwp문서)

첨부 :

1336558640_patent.hwp: 첨부문서를 꼭 확인하세요.

특허출원등록절차안내(실용신안 포함)

(2009. 9. 1. 기준)

절차

절차의 상세한 설명

1. 선행기술조사 : 특허출원을 하려는 분은 출원서류 작성에 앞서 동 발명과 동일유사한 발명의 선출원선등록여부를 특허청 홈페이지(www.kipo.go.kr)의 특허정보무료검색 또는 특허전자도서관, 특허청 서울사무소, 지역지식재산센터 등에서 검색(무료)하여 등록가능 여부를 사전에 조사하는 것이 좋습니다. (선행기술조사는 의무사항이 아님)

검색 문의 : 특허청 1544-8080, 한국특허정보원(www.kipi.or.kr) : 02-6915-6000

2. 출원인코드부여신청(사전등록절차) : 특허청에 처음으로 특허출원 등의 절차를 밟고자 하는 자연인과 법인은 특허청에 출원인코드부여신청(반드시 서명 또는 인장날인)을 하여 출원인코드를 부여받아야 합니다. 이 출원인코드는 향후 특허 등에 관한 절차를 밟고자 하는 경우 특허청에 제출하는 서식에 반드시 기재하여야 합니다. 이 출원인코드부여신청은 온라인 및 서면으로 신청이 가능합니다.

서식안내 : 위 서식은 특허청 특허고객서비스센터 등에 비치되어있으며 특허청 홈페이지(www.kipo.go.kr)민원서식에서 출원인코드부여신청서(별지 제4호 서식)를 다운받아 사용할 수 있습니다.

3. 출원서류 작성 : 출원서류를 작성할 때에는 특허출원서(별지 제14호 서식), 명세서(별지 제15호 서식), 도면(별지 제16호 서식 : 필요시 단, 실용신안은 필수 ), 요약서(별지 제17호 서식) 순으로 작성하고, 출원서류에는 그 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 그 발명을 쉽게 실시할 수 있도록 명확하고 상세하게 기재하여야 합니다.

출원인이 출원서류를 직접 작성하시려면 이미 등록되어 있는 특허공보를 견본으로 활용하여 작성하시면 매우 유익합니다. 또한 자신이 직접 작성할 수 없는 경우에는 변리사 등 전문가의 도움을 받으실 수 있습니다.

참고사항 : 발명이 특허로 등록 받기 위해서는 기술의 내용이 특허출원 전에 알려지지 않은 새로운 것이고, 기존의 기술보다 진보된 것이어야 하며, 산업상 이용이 가능해야 합니다.

(, 실용신안으로 등록받기 위해서는 물품의 형상구조 또는 조합에 관한 고안이어야 합니다.)

서식안내 : 위 서식은 특허청 특허고객서비스센터 등에 비치되어있으며 특허청 홈페이지(www.kipo.go.kr)민원서식에서 특허출원서(별지 제14호 서식), 명세서(별지 제15호 서식), 도면(별지 제16호 서식), 요약서(별지 제17호 서식) 을 다운받아 사용할 수 있습니다.

4. 제출서류 준비 : 출원서(첨부서류 : 명세서, 도면, 요약서 포함) 1, 수수료 감면대상인 경우 해당 증명서류 포함.

5. 접수 및 출원번호통지서 수령 : 방문하여 접수하려는 분은 특허청 특허고객서비스센터(대전) 또는 서울사무소에 직접 제출하시면 됩니다. 특허청에서는 접수 즉시 현장에서 출원번호통지서와 납부고지서를 발급합니다. 우편으로 접수하려는 분은 소정의 수수료를 통상환으로 교환한 후 출원서류에 첨부하여 특허청에 제출하여야 하며, 출원서 접수 후 약 1주일 이후에 출원번호통지서를 받을 수 있습니다. 동 출원번호통지서를 출원절차가 종료될 때까지 보관하시면 진행절차 문의 등에 도움이 됩니다.

[우편접수처 : 대전광역시 서구 선사로 139 (둔산동 920) 정부대전청사 특허청장 (. 302-701)]

온라인으로 제출하는 경우에는 전자문서이용신고서를 먼저 제출한 후 특허청 홈페이지(www.kipo.go.kr) 이용하여 온라인으로 제출하시면 됩니다.

6. 수수료 납부 : 특허청에서 발급하는 납부자 번호 및 금액이 기재된 납입고지서를 이용하여 제출 당일 또는 다음날까지 우체국 또는 금융기관에 납부하여야 합니다. 또한, 지로사이트(www.giro.or.kr)접속하여 온라인으로도 납부할 수 있습니다.

7. 출원공개 : 출원된 서류는 출원일로부터 18개월 경과 후 자동으로 공개됩니다. 그러나 본인의 신청에 의하여 조기출원공개를 신청(출원 후에 신청시에는 별지 제25호 서식 : 조기공개신청서)할 수 있으며 신청이 있은 후 34주 후 공개되지만 이로 인해 심사기간이 단축되는 것은 아닙니다.

특허(실용신안등록)청구범위가 기재된 명세서가 첨부된 때에 한하여 조기공개를 신청할 수 있습니다.

8. 심사청구 및 심사 : 특허출원에 대한 심사청구기간은 출원일부터 5(실용신안등록출원은 3)이며, 출원인이 심사청구(출원 후에 신청시에는 별지 제22호 서식 : 심사청구(우선심사신청))를 하면 심사관은 심사청구 순서에 따라 등록여부를 결정하고, 거절이유를 발견한 때에는 출원인에게 의견제출통지서를 보내드립니다.

특허(실용신안등록)출원인의 경우에는 특허(실용신안등록)청구범위가 기재된 명세서가 첨부된 때에 한하여 출원심사의 청구를 할 수 있습니다.

9. 등록료 납부 : 출원인은 특허(실용신안등록)결정서와 함께 발급되는 납입고지서를 이용하여 우체국 또는 금융기관에 해당 등록료를 납부하여야 합니다. 그러나 등록료 면제 및 감면대상 등으로 인하여 등록료의 변동이 있는 경우에는 특허등록령시행규칙 별지 제16호 서식납부서(설정 특허등록료)를 작성하여 특허청에 제출하셔야 합니다.

우편으로 납부하려는 경우에는 등록료를 통상환으로 바꾸어납부서(설정 특허등록료)함께 특허청에 송부하시고, 온라인으로 납부하려는 경우에는 지로사이트(www.giro.or.kr) 접속하여 납부할 수 있습니다.

특허 출원 방법특허출원 방법/ 특허

[출처] http://blog.naver.com/peeace76/50075029618

특허출원을 하는 방법은 생각보다 복잡합니다.

등록된 아이디어에 대해서 20년이나 독점적으로 실시할 수 있는 권한이 부여되는 만큼...절차도 복잡하고 등록되기도 쉽지 않는 것이겠죠.

그래서 변리사라는 직업이 존재하는 것이겠죠??

하지만...변리사 비용이 아깝다고 생각하시는 분들을 위해서 간단하게나마 혼자서 특허출원하는 방법에 대해서 알려드리겠습니다...^^

1. 먼저 님의 발명과 유사한 선행발명이 존재하는지 검색합니다.

선행발명은 하기 사이트를 통하여 검색합니다.

(1) NAVER, GOOGLE 등의 포탈사이트를 통한 검색

(2) 키프리스(www.kipris.or.kr), 윕스(www.wips.co.kr) 등의 특허정보검색사이트를 통한 검색

그런데, 윕스는 유료 사이트이기 때문에 일반적으로 키프리스를 통한 국내 선행특허만 검색합니다.

또한, 출원된 특허는 조기공개를 신청하는 경우, 거절이 확정되는 경우. 특허 설정 등록되는 경우가 아닌 한 특허 출원 후 1년 6개월이 경과하여야 공개되는 것이 원칙이므로 출원되었으나 아직 공개되지 않은 것들이 많이 있음에 유념하셔야 합니다.

또한, 특허등록을 위해서는 국내 뿐만 아니라 해외에서도 아직 유사한 발명이 공개되지 않은 것이어야 합니다. 따라서, 원칙적으로는 해외의 모든 특허정보사이트를 검색해봐야 하지만 현실적으로 쉽지 않은 문제점이 있습니다. 따라서, 일반적으로 국내 선행특허만을 검색한 후 유사한 특허가 없으면 특허출원을 합니다.

2. 전자문서 작성 소프트웨어(K-editor)를 다운받습니다.

선행기술 검색 결과 유사한 선행기술이 없다면 온라인 특허출원을 위하여 전자출원 소프트웨어를 다운받습니다. 전자출원 소프트웨어를 다운 받는 방법은 하기와 같습니다.

(1) 온라인 특허출원 사이트인 특허로(http://www.kiporo.go.kr)에 가셔서 상단 메뉴 중 '온라인 출원'의 "소프트웨어 다운로드"를 클릭합니다.

(2) 전체 설치를 하셔도 되고, 사용자 지정 설치를 하셔도 되지만...뭐가 뭔지 잘 모르시겠으면 전체 설치를 클릭하세요....

(3) 전자문서 작성 소프트웨어는 온라인 특허출원을 위하여 특허청에서 배포한 워드프로세스로서, 특허 출원을 위해서는 반드시 전자문서 작성 소프트웨어를 이용하여 특허명세서를 작성하셔야 합니다.

3. 전자문서 작성 소프트웨어를 이용하여 특허명세서를 작성합니다.

(1) 전자문서 작성 소프트웨어(K-editor)를 실행시킨 후 새문서 열기(상단 메뉴 중 파일 클릭 --> 새문서 클릭)를 선택합니다.

(2) 출원하고자 하는 지적재산권을 선택(특허/실용신안/디자인/상표 중 특허 선택)한 후 선택사항을 선택합니다.

(선택사항은 첨부할 도면이 있는 경우는 '도면포함'을 클릭, 특허청구범위를 작성하지 않고 출원하실 경우에는 '청구범위제출유예'를 클릭, 산업상이용가능성에 대해 기재하실 경우에는 '산업상이용가능성'을 클릭하시면 됩니다. 통상 도면이 포함되는 경우에는 도면포함을 클릭하고, 나머지는 클릭하지 않습니다.)

(3) 식별항목에 포함되는 모든 내용을 기재하시어 특허출원 명세서를 작성합니다.

(명세서 작성은 유사한 기술 분야에 속하는 특허문서 중 일부를 검색하여 선출원된 문서와 유사한 양식에 따라 작성하시면 됩니다)

4. 특허로 사이트에서 출원인 코드 부여 신청 및 전자출원 이용 신고를 합니다.

(1) 특허로 사이트의 상단 메뉴 중 사용자 등록 신청 클릭한 후 출원인 코드 부여 신청 및 전자출원 이용 신고를 합니다.

(2) 온라인 특허출원을 위해서는 전자출원을 이용하겠다는 신고(전자출원 이용신고)를 하여야 하며, 출원인에 대한 신상명세 등을 전자적으로 관리하기 위한 출원인 코드 부여 신청을 합니다. 따라서, 출원인 코드는 인터넷 사이트의 아이디와 유사한 개념입니다.

5. 서식작성기를 다운 받아 특허출원을 합니다.

서식작성기는 특허청에 제출하기 위한 각종 문서의 양식을 작성하고, 작성된 문서를 특허청에 온라인 제출하기 위한 소프트웨어입니다. 특허출원을 위한 서식 작성은 하기와 같습니다.

(1) 서식장석기를 다운 받아 실행시킵니다. 서식작성기는 전자문서작성 소프트웨어를 다운 받은 위치에서 다운 받으실 수 있습니다.

(2) 서식탐색기에서 '특허출원서' 선택

(3) 구분항목에서 '특허출원' 선택

(4) 입력항목에서 해당사항이 없으면 선택하지 않고, 좌측 하단의 '서식작성' 클릭

(5) 서식을 작성한 후 저장

(6) 저장된 특허출원문서를 제출하기 위해 상단 메뉴의 '전자문서제출' 을 클릭한 후 저장된 서식 제출

이상...혼자서 특허출원 하기 위한 대략적인 순서입니다.

복잡하죠??

20년 간 독점적인 실행 권리를 부여하기 때문에 특허는 그 절차와 심사가 까다롭습니다. 너무 복잡하다고 생각하지 마시고...한번 도전해 보세요~~

보다 상세한 사항은 특허청(1544-8080)에 전화하시면 상세하게 알려줄 것입니다.

마지막으로....

대박 아이디어라고 생각되시면....직접 특허출원하지 마시고...변리사를 고용하세요~~

변리사를 통하여 특허출원 하셔야 보다 확실하게 권리 보호를 받으실 수 있습니다.

앞서 말씀드린 혼자 특허 출원하는 방법은요....그냥 연습삼아 해보시거나...아니면 출원 그 자체가 목적인 경우에 이용해 보시라고 알려드리는 것입니다. 이러한 경우까지 변리사를 통하면 돈이 아깝자나요^^

그럼...아이디어로 돈버는 그날까지~~~peace!

[출처] 특허 출원 방법|작성자 역도맨

Mac OS X Lion 클린설치 (10.7)에서 Xcode 4 와 Xcode 3 동시에 사용하기.
간단하면서 쉬운 방법은

1. Mount the Xcode 3.2.6 DMG
2. Open Terminal
3. Enter the command: export COMMAND_LINE_INSTALL=1
4. Enter the command: open “/Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg”


이렇게 하는거구요. 위에 간단한 설치법이 안된다면 밑에 글을 참고하세요.

강좌를 작성하긴 했지만, 시스템에 따라 Xcode 3과 4 모두 사용할시 충돌이나 알수없는 오류도 보이더군요.
개인적으로 강좌를 이용해서 Xcode3 하나만 깔아서 쓰시는걸 권장합니다.
클린설치가 아닌 경우에도 똑같이 적용이 가능합니다. 즉, 스노우레오파드에서 라이언으로 업그레이드후 Xcode 3만 사용하려고 하는 경우에도 적용 가능합니다.
준비물 목록. (Xcode 4가 Developer 폴더에 설치되었다는 가정하에 설명합니다.)
1. Xcode 3.2.6 and iOS SDK 4.3 (Disk Image) 를 다운로드하여 다운로드 폴더에 넣어 놓습니다.
밑에 Eli님이 올리신 글을 이용하여 받으셔도 됩니다. 30일까지라고 하네요. http://cafe.naver.com/mcbugi/157642
2. 첨부한 install_xcode3.2.6_on_lion 파일을 다운로드 폴더에 넣고 압축을 미리 풀어둡니다.
이제 설치를 위한 준비가 끝났습니다. 시작하겠습니다.
======================================================================================
1. 다운로드 받은 Xcode 3.2.6버전의 파일명을 확장자 포함하여 xcode_3.2.6_and_ios_sdk_4.3.dmg 이렇게 바꿔줍니다.
2. 터미널을 엽니다. (유틸리티나 오른쪽 상단에 스팟라이트에서 터미널로 검색하여 여세요.)
3. 터미널에

cd ~/Downloads

라고 입력합니다.

(명령어를 마우스로 드래그하여 커맨드+C로 복사하여 터미널창에 커맨드+V로 붙여넣기 하세요.)
4. 터미널에

hdiutil attach -shadow xcode_3.2.6_and_ios_sdk_4.3.shadow xcode_3.2.6_and_ios_sdk_4.3.dmg

입력합니다.
(위에서 준비물로 준비했던 install_xcode3.2.6_on_lion 의 압축을 이미 푼상태여야 커맨드가 작동합니다.)
5. 터미널에

cat '/Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg/Contents/iPhoneSDKSL.dist' | sed "s/&& system.compareVersions(my.target.systemVersion.ProductVersion, '10.7') < 0 //g" > '/Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg/Contents/iPhoneSDKSL.dist.new' && mv '/Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg/Contents/iPhoneSDKSL.dist.new' '/Volumes/Xcode and iOS SDK/Xcode and iOS SDK.mpkg/Contents/iPhoneSDKSL.dist'

라고 입력합니다. (라이언에서 Xcode 4 이하의 Xcode를 인스톨 할수없게 만든 파일을 수정하거나 삭제하는것 같군요.)
6. 이제 Xcode 3.2.6 버전을 인스톨하면 됩니다.
(인스톨시 주의사항)
Xcode 4가 Developer 폴더에 설치되어 있다면, Xcode 3를 그대로 인스톨하면 안됩니다. 그렇게되면 덮어씌우기가 되기 때문에 Xcode 4와 Xcode 3를 재설치해야하거나 Xcode 4로 작업한 파일이 날아가는 상황이 발생 할 수 있습니다.
그렇기 때문에 사진을 참고하여 Xcode 3의 설치경로를 임의로 지정하면 됩니다.




인스톨시 사진처럼 다른버전의 Xcode가 Develope 폴더에 설치되어 있다면 설치장소를 Developer가 아닌 Xcode 3나 Xcode 3.2.6 의 폴더를 생성하여 그곳으로 지정해줍니다.
(Xcode 4 는 앞으로 쓸일 없고 Xcode3 만 사용하겠다! 하시는분들은 설치경로를 변경할 필요 없겠습니다.
상황이 바뀌어서 나중에 Xcode 4를 추가로 설치하게 된다면 위의 글을 인용하여 Developer 폴더에 Xcode4로 폴더를 생성해서 그곳에 Xcode 4 를 설치하면 됩니다.)
그리고 설치가 완료되면 자동으로 독에 아이콘이 생성되지 않습니다.
그렇기 때문에 설치한 폴더의 애플리케이션 폴더에 들어가면 Xcode 아이콘을 독으로 직접 이동시키면 되겠습니다.
그럼 독에는 Xcode 4 아이콘과 Xcode 3 아이콘 모두 올려 놓을 수 있습니다.
=============================================================================
나중에 Xcode3만 남기고 Xcode 4만 완전 삭제하고 싶으면 터미널에
sudo /Developer/Library/uninstall-devtools --mode=all 라고 입력하면 Xcode 4 만 삭제됩니다.
(설치한 폴더명이나 루트에 따라서 명령어를 수정하세요)
Xcode 4는 남기고 Xcode 3만 완전 삭제하고 싶으면
sudo /Developer/Xcode3/Library/uninstall-devtools --mode=all 라고 입력하면 Xcode 3 만 삭제됩니다.
(설치한 폴더명이나 루트에 따라서 명령어를 수정하세요)

[책] 내 책을 출판하는 방법, 책 쓰는 방법

DSCN3183
최근 뜻 맞는 친구들과 독서모임을 하기 시작했는데 혼자서 책 읽을 때 보다 동기부여도 더 되고 좋다. 교수님 책 쓰는 일을 도와드리면서, 또 전에 이문호씨의 OpenCV 책 집필 때 리뷰어로 참여하면서 출판에 관심을 갖게 되었다. 읽은 지는 꽤 되었지만 이제서야 정리해서 올림. 요즘 들어 가슴 깊이 새기고 있는 글귀 하나..

”여유있을 때 책을 읽는게 아니라
책을 읽으면 여유로와 진다.”


대학원 다니면서부터 논문 읽고 제안서 쓰고 프로젝트 진행하고 하느라 여유가 없다고 생각해온 내 자신을 반성하게 된다.

내 책을 출판하는 방법 / 박진수

책을 출판하기 위해 반드시 알아야 하지만 쉽게 알 수 없었던, 간추린 출판 노하우

'책'이란 무엇인가?

책에 대한 정의, 1964년 유네스코는 '서적 및 정기간행물 통계의 국제적 통일화에 관한 권고'

다음과 같이 정의하였다.

"서적이란 표지를 빼고, 적어도 49쪽이 넘는 부정기간행물로서

출판된 나라에서 일반적으로 입수할 수 있는 것"

49쪽이 안 되는 책은 팸플릿으로 분류하기로 하였다.

다음과 같은 출판물들도 서적이 아니라고 함.

  1. 시각표, 전화번호부, 카탈로그, 규칙, 보고서, 달력과 같이 일시적으로 출판된 것
  2. 광고에 사용되는 출판물(브로슈어나 카탈로그)
  3. 악보나 작곡집 그리고 지도와 같이, 주로 문장이 아닌 방식으로 된 출판물

간단하고 명쾌하게, "서점에서 살 수 있는 책, 이것이 서적이다. 단 잡지는 제외"

한눈에 보는 출판 과정

책은 저작자의 창조적인 생각에서 출발. 생각이 원고가 되고, 원고가 출판사에 의해 책으로 출판.

  1. 저작자가 원고를 쓴다.
  2. 저작자는 출판을 제안할 출판사를 물색한다.
  3. 출판사 목록을 만들고 출판을 제안한다.
  4. 출판사에서는 내부 기획 회의를 거쳐 출판 여부를 결정한다.
  5. 출판사가 출판 여부를 저작자에게 알려온다.
  6. 저작자는 출판사들을 경쟁시켜 유리한 조건을 만든다.
  7. 가장 유리한 조건을 제시한 출판사와 출판 계약을 맺는다.
  8. 저작자는 완전한 원골르 출판사로 보낸다.
  9. 출판사는 첫 교정을 하고 편집을 한다.
  10. 출판사가 편집 완료된 원고를 저작자에게 보내 교정하게 한다.
  11. 몇 차례 교정 작업이 출판사와 저작자 간에 이루어진다.
  12. 출판사는 원고를 책을 만들어 낸다.
  13. 출판사는 책의 판매량을 늘리기 위해 마케팅을 한다.
  14. 출판사는 초판 발행분(또는 판매분)에 대해서 인세를 정산해 저작자에게 준다.
  15. 첫 발행분이 모두 팔리면 증쇄를 한다.
  16. 출판 계약 기간이 끝나면 계약을 다시 하거나, 자동을 갱신하거나 해지한다.
  17. 출판 계약이 해지되면 저작자는 다른 출판사와 출판 계약을 맺는다. - 13p

자료를 인용할 때 주의할 점

법적으로도 '정당한 인용'을 허용하고 있다.

첫째, 인용이 없이는 글 전개가 어려울 때

둘째, 저작자의 글이 대부분이고 인용 부분은 일부인 경우

단, 시나 사진처럼 작품의 전부를 인용하는 경우라면, 비록 책의 극히 일부만을 차지하더라도 저작권 위배. 저작권자의 허락을 받아야 함

셋째, 인용되는 부분을 저작자의 내용과 명확히 다르게 처리해야 한다. 흔히 따옴표("")로 인용 부분을 구분, 별도 활자체 사용

넷째, 인용 부분의 출처를 제시. - 32p

1판 2쇄의 의미

출판 계약을 마치고 나서 처음 발행된 책자를 보통 '1판' 또는 초판

전문가만이 볼 책이라면 초판을 보통 1,000부 정도만 발행

대중성 있는 책이라면, 2,000부~ 3,000부

실용서처럼 대중성이 있는 책이라면, 5,000부

아주 명망 있는 저작자의 책이라면 몇만 부 또는 몇 십만부

가장 일반적인 경우 초판이 3,000부

일단 이렇게 초판이 다 판매되면,

책의 내용이나 편집이 바뀌지 않은 상태에서 인쇄만 더하는 경우 '쇄를 늘린다'고 한다.

즉, 증쇄한다. 1판 1쇄, 1판 2쇄, 1판 3쇄..

편집 형태를 바꾸고 쪽수도 달라지고 내용도 달라지면 '판이 바뀐다'

증판, 재판한다.

저작자는 인세를 어느정도 받을까?

일반적으로 인세는 책 정가에 대한 비율로 계산

예를 들어 "인세를 책의 정가의 10%로 한다."는 계약 문구가 있다고 가정하면,

책 정가가 7,000원이라면 저작자가 받는 인쇄는 700원

일반적으로 통용되는 인세율은 10%

저작권법에 의하면 특별한 계약 사항이 없는 한은 인세율을 10%로 본다는 조항이 있음

책을 출판하려면 제조원가가 들어간다. 종이 구입비용, 표지 디자인 비용, 편집 비용, 인쇄비, 제본비 등

일반적으로 책 정가의 30% 정도가 제조원가.

이렇게 책 제조후 정가의 60~70%선에서 책을 도매하는 업체나, 교보문고 같은 대형 서점에 넘긴다.

출판사는 정가의 30~40% 정도 매출 이익을 가져가는 셈.

이 이익을 가지고 출판사 운영. 사무실 유지, 직원 월급, 세금, 부가가치세 등

결국 순이익은 10~15% 내외

러닝 개런티(running guarantee)

책이 많이 판매될수록 많이 받는 식

인세율을 3,000부까지는 8%, 5,000부까지는 10%, 5,000부 이상은 15%

발행부수를 인세 정산의 근거로 삼아라

출고부수가 기준이 되면 곤란한다. 삼분의 일은 제대로 팔리지도 않고 폐지처분되기 때문.

최근에는 전송권이 문제

전송권이 문제가 된 것은 정보통신의 발달 때문

e-book 시장이 수천억원대로 커졌기 때문

전자책은 종이책과 달리 제조비용이 적고, 유통 비용도 적어 그 이익이 상당하다.

출판 계약을 맺을 때 별도의 권리를 주장할 것.

정가의 50% 까지 인세를 요구하기도.

일하면서 책쓰기 / 탁정언 전미옥

나만의 콘텐츠를 가진 자가 승리한다

삶을 사는 자는 자기가 쌓은 모든 지식을 동원해 과감하게 배팅해야 한다. - 진중권

좋은글은 '누구나 쉽게 이해할 수 있는 쉽고 명료한 글'

니즈는 꼭꼭 숨어있다

니즈란 사람이 살아가는 데 없어서는 안 되는 것이다.

니즈는 갖고 싶은 것, 하고 싶은 것, 누리고 싶은 것이 있다.

책 쓸 대상이 과연 독자의 니즈에 맞을 것인지 생각해 보아야 한다.

계획하지 말고 기획하라

기획 : 아직까지 없는, 새로운 일을 이루기 위해 미리 짜내는 행위. 국가나 궁영기업에서 주로 사용했으나 경영, 마케팅, 커뮤니케이션, 이벤트 등 기획을 필요로 하는 모든 분야에서 사용하고 있다. 예) 현대자동차 유럽 진출을 기획 중

계획 : 미래의 일에 대한 좀더 조직적이고 세부적이며 실천성을 고려한 얽이. 그러므로 기획의 목적을 달성하기 위한 하나하나의 실행방침을 지치하기도 한다. 예) 현대자동차 유럽 진출 계획 발표

기획안은 대개 타이틀, 가칭 제목, 카피, 컨셉, 기획의도, 예상필자, 콘텐츠, 유사도서로 구성 - 107p

자신의 삶을 철저하게 기획한 내용으로 출간한 책

"적은 내 안에 있다"

20대 젊은이가 자기 자신을 이기는 방법을 챚으로 쓰겠다고 하면 과연 누가 읽을까?
27세의 젊은이가 쓴 "적은 내 안에 있다"라는 책은 상당히 무모해 보인다. 어떻게 이런 원고를 책으로 내줬을까 출판사마저 의심스럽다.
그러나 이 책은 화제가 되었으며 블로그 역시 화제의 블로그가 되었다.

첫 페이지를 읽기 시작하면 이 책이 단순한 혈기로 쓰지 않았단느 것을 알게된다. 곧 책에 빠져들어 새로운 사실을 깨우치고 삶의 길잡이가 되고 있음을 느끼게 된다. 많은 현인들이 자신을 이기는 방법을 말했지만 그 말을 모두 모으고 소화해서 책으로 펴낸 책은 이 책이 처음이다. 또한 그 과정 역시 기획된 것이다. 뭔가 잘 풀리지 않고 슬럼프에 빠진 저자가 1000권의 책을 읽는다는 목표를 정했으며, 그 목표를 향해 나아가면서 자신의 문제를 해결하는 연속된 과정을 거치고 있다. - 111p

기획안

  1. (가제) 푼돈의 경제학 : 철저한 이코노미스트 되기
  2. 카피: 오늘의 커피 한잔이 내일의 빚

    내가 오늘 흘려보낸 돈은 얼마인가?

    푼돈 관리는 곧 자기관리

  3. 컨셉: 푼돈의 가치를 알고 알뜰한 경제적 사고로 재무장하기
  4. 기획의도

    • 워싱턴 포스트는 3달러짜리 테이크아웃 커피를 매일 사 마시는 대신 회사나 집에서 스스로 커피를 끓여 마시면 30년간 이자를 포함해 5만5천341달러(5천500만원)를 절약할 수 있다는 스타벅스의 경제학을 소개. 오늘의 한잔이 내일의 빋이라는 푼돈의 위력을 일깨우는 캠페인을 소개.
    • 현재 재테크 독서시자은 '투자, 절세'를 통한 부자되기 코드가 주류.
    • 책상 서랍게 뒹구는 동전, 항상 과태료를 내는 사람, 수수료를 가볍게 여기는 사람 등 경제적인 생활감각이 없는 사람들이 많다. 이런 사람들을 위해 푼돈을 아끼는 의미와 그 중요성에 대해, 노하우를 소개함으로서 경제적인 마인드와 자극을 줄 필요.
  5. 예상필자 : 재테크전문 칼럼니스트
  6. 콘텥츠 구성
  7. 유사도서

    없다 <한국의 e짠돌이> <10만원으로 한달살기>가 같은 코드의 책이라 볼 수 있으나 컨셉이 다르다.

원고지수 계산

하루 1시간 일찍 일어나 원고지 5장의 글을 쓰면

일주일에 35장의 글, 한달이면 140여장의 글이 모아진다.

6개월이면 책 한권 분량. – 256p

당신의 책을 가져라 / 송숙희

지식경영시대의 책쓰기 특강

외국명대학 박사학위 같은 허울보다 그의 현재를 말해줄 저서 한 권이 훨씬 더 영향력 있다.

당신에겐 이미 책 쓸 '거리'가 있다

당신의 이야기는 힘이 있다

내가 쓸 책은 어떤 것일까

멘토링

자신 만의 독특한 커리어를 구축했거나 성취를 이룬 사람들이 그 경험을 밑바탕으로 성취 비결을 안내하고 자랑하며, 같은 길을 걷고 싶어 하는 독자들에게 필요한 지식과 정보를 전수하는 방식.

GE의 파울로 프레스크 부회장이 삼성 이건희 회장에게 편지를 써서 전격 스카우트한 '샐러리맨의 성공 신화'라 불리는 GE코리아 이채욱 회장이 들려주는 성공의 멘토링 "백만불짜리 열정".
한국이 최초로 월스트리트 정상에 올랐던 경험을 토대로 젊은 여자들을 위해 들려주는 성공매뉴얼 이정숙의 "지혜로운 킬러"

자기계발서

자기계발에 대한 독특한 개념과 실천이 가능한 구체적인 매뉴얼까지 제공하는 방법론.

거창한 목표보다 작은 실천이 중요하다는 "오늘의 한 걸음이 1년 후 나를 바꾼다"

타인을 설득하고 세상을 변화시키기 위해서 먼저 내안의 나를 설득해야 한다는 "365일 설득의 기술"

how to 실용서

독특한 기술, 아이디어에 대한 지식과 정보를 제공. 실천적방법론을 타양한 예제, 풍부한 임상사례 등으로 풀어내야만 독자들이 환경한다.

시나리오작가로서 성공하기 위해 배워야할 힌트와 요령을 담은 "할리우드에서 성공한 시나리오 작가들의 101가지 습관"

체험적 비법 전수서

육아방식, 교육방식, 재테크방식 등 저자가 체험을 통해 확보한 특별한 비법을 전수하는 책.

목적을 이루기 위한 몇가지 원칙과 기울여야 할 노력에 대한 정보를 제공.

무엇보다 그로 인해 얻어지는 객관적인 성과를 증명할 수 있어야 책의 가치가 돋보임.

라이프 에세이

저자가 살아온 시간과 경험을 특정한 주제에 맞춰 에세이를 쓰듯 풀어낸 내용.

BBQ 윤홍근 회장의 "BBQ 원칙의 승리" 꿈과 비전과 열정을 버무려 리더십이라는 음식을 만들어낸 전문가.

진대제 전 정보통신부 장관은 "열정을 경영하라"을 펴낸 후 21세기 핵심 인재의 멘토가 됨.

금융 CEO 출신으로 택시기사라는 인생 2막을 살고 있는 김기선 씨가 택시 기사 3년의 경험을 꼼꼼히 기록한 "즐거워라 택시 인생"

평범한 대학생 남강이 학교도서관에서 1년간 1천권의 책을 읽고 깨닫기 시작한 인생에 대한 단상을 쓴 "적은 내 안에 있다"

자전 에세이

이춘해 씨는 소설책을 두 권 펴낸 소설가. 3~4년 전만해도 전업 주부.

계기는 남편의 외도, 철썩 같이 믿었던 남편의 외도로 인한 상처와 방황이 그녀에게 소설쓰기라는 멍석을 제공했다.

당신이 누구라도 책을 쓸 수 있다

- 당신이 전문가라면

삼성에버랜드 조리과장 양동호 씨, 그는 초등학교만 졸업했지만 대학교 식품조리 교재를 펴냈다. 그의 약점이 될 뻔했던 초등학교 졸업이 이젠 화제의 초점이 되었고, 그의 책 "단체급식관리와 조리실습 워크북" 덕분에 양동호씨는 이력설르 따로 쓰지 않아도 되게 되었다.

경희대 인상사회학박사 주선희 교수는 "얼굴경영" 한 권으로인해 자타가 공인하는 이 분야의 전문가로 자리매김했다.

또한 이 책은 외모를 중시하는 최근의 루키즘(lookism)과 맞물려 원광대학교 디지털대학교 국내 최초 얼굴경영학과를 신설하는데 직접적인 기여를 하기도 했다.

- 당신이 자영업자라면

서점에 나가서 보면 별의별 분야의 자영업자가 책을 냈다.

"나는 600원짜리 꼬치구이를 팔아 2천억원을 벌었다" "성공하는 노래연습장 창업하기"
"돈 버는 식당, 비법은 있다" "총각네 야채가게"

- 당신이 직장인이라면

어떤 일을 특별히 잘하는 책, 몸 값을 올리는 책, 상사과 잘 지내는 책, 후배와 잘 사귀는 책, 경험을 전수하는 책, 사내연애에 성공하는 책

- 당신이 공무원이라면

"공무원이 죽어야 나라가 산다"는 서울시청 현직 공무원이 쓴 책이다.

중산층 공무원이었던 리처드 애담스는 토끼를 사랑하는 딸에게 들려줄 베드사이드 스토리를 써야겠다고 결심, "침몰하는 잠수함"을 썼는데 700만부가 팔리면서 삶이 바뀌었다.

- 당신이 주부라면

"엄마학교"는 엄마로 살아온 경험을 통해 얻어낸 통찰력이 담긴 책. 어떤 주부는 결혼 후 10여 차례 전셋집을 전전하며 도배장판부터 가구와 패브릭 리폼까지 도맡아했던 전력으로 10년만에 처음 마련한 내집을 전문가 도움없이 개조한 이야기 "억척주부 안여사는 돈안들이고 집고치는 법을 알고 있다"를 썼다.

- 당신이 학생이라면

대학생이면 대학에 합격한 비결, 대학생활을, 고등학생 생활을 후회 않게 즐길 수 있는 비법을

아르바이트의 경험을, 학생창업의 경험을 책을 써라.

- 당신이 유명인사라면

유명인사라 잘 팔리는 건 아니다. 오히려 유명세만 믿고 대필원골르 출간했다가 망신살 뻗친 유명인도 적지 않다.

아나운서 백지연은 그녀의 전공이기도 한 커뮤니케이션에 관한 나름의 이론을 다듬어 "자기설득파워"를 써냈다.

- 당신이 정치인이라면

불운한 정치인 앨 고어, 그는 백안관 문전에서 밀렸지만 "불편한 진실"이라는 책 한권으로 화려한 역전승을 거뒀다. 환경문제에 대해 누구보다 애정있게 진지하게 고민하고 있다는 흔적을 책을 통해 고스란히 내보인 것이다.

사실과 상상력의 동거

팩션(faction)은 사실과 상상력이 결합된 새로운 발상법이다.

다빈치 코드, 왕의 남자, 음란서생, 예스맨 등이 이러한 류

베스트셀러를 만드는 기획의 3T

시나리오작가 마리사 브바리는 개봉 첫 주, 혹은 빠른 시간 안에 엄청난 수익을 가져오는 영화 시나리오는 다음 조건을 충족해야 한다고 소개한다.

  • 수백만이 공감할 수 있는 보편적인 소재일 것
  • 관객의 흥미를 유지하는 독특한 반전을 가진 친근하면서도 매혹적인 스토리일 것
  • 등장인물에게 최고의 배우들이 매혹될 정도로 충분한 깊이와 차원을 갖도록 할 것

출판계에도 비슷한 것이 있다. 책의 성공을 점치는 3T

타이밍(Timing)

창작에 열망을 지닌 사람들의 바이블 "아티스트웨이"는 "아주 특별한 즐거움"이란 제목으로 97년 번역출간 되었다. 이때만 해도 저자인 카메론 디아즈의 명성을 전해들은 사람이 한권 살 뿐.. 이 책이 2003년 다시 출간되었을 때는 세상이 바뀌었다. 고용불안 등 사회적 위기가 자아와 삶을 되돌아보게 만들었고, 어쩔 수 없이 하는 일보다 가슴이 원한느 뜨거운 살마을 되돌아보게 만들었고, 어쩔 수 없이 하는 일보다 가슴이 원하는 뜨거운 일을 하라고 부추기는 세상이 되어 있었다. 책에도 팔자가 있다고 한다. 아무리 좋은 의도와 기획의 책도 망하기도.. 우연히 만든 책이 베스트셀러가 되기도.

타겟팅(Targeting)

누가 읽을 책인가가 분명하지 않은 책은 실패하기 쉽다.

"20대에 하지 않으면 안 될 50가지"
"평범한 10대 수재로 키우기"

"16살 네꿈이 평생을 결정한다"
"7살부터 하버드를 준비하라"
"초등학교 입학 전 부모숙제 50가지"등으로 더욱 세분화되고 있다.

타이틀링(Titling)

당신이 서점에서 책을 사는 과정을 보라. 가장 먼저 눈이 가는 곳은? 당연히 표지이고 제목이다.

'제목장사'라는 말은 미디어 콘텐츠 산업을 단도직입적으로 드러내는 은어다.

왜 나는 샤워 도중에 최고의 아이디어가 떠오를까?

아인슈타인이 짜증을 내며 했다는 말이다. 오늘날의 연구 결과 샤워가 창조적인 뇌의 활동을 촉진시킨다는 것을 밝혀냈다. 샤워나 수영, 걸레질, 면도, 자동차 운전 등은 모두 규칙적이고 반복적인 행동이다. 이런 행동들은 논리적인 뇌를 좀더 창조적인 뇌로 바꿔준다. 창조성이 필요한 까다로운 문제를 해결하는 방법이 설거지를하다가 불쑥 솟아날 수 있고, 고속도로에서 운전하다가 갑자기 떠오를 수도 있다. 어떤 것이 당신에게 가장 효과가 있는지 알아보고 그 방법을 애용한다.

- 줄리아 카메론의 "아티스트 웨이"중에서

읽고 싶어 몸살나게 하는 목차 만들기

추천의 글 | 걸으면서 내가 얻은 것

머리말 | 잘나가는 사람일수록 많이 걷는다

1장. 직장인들이 걷기 시작했다

걸으면 머리가 좋아진다 | 기분이 나쁠 때는 빨리 걷는다 | 참을성이 없는 사람을 위한 걷기 | 에너지 충전을 위한 걷기
2장. 아이디어는 다리에서 나온다

아이디어 전쟁 | 걸으며 기회거리를 찾아라

3장. 걷는 습관을 키우는 법

언제 어디서나 '걷기'를 의식하라 | 걷는 것이 운동이 될까

4장. 걸으며 공부한다

걸으면서 하면 잘 외울 수 있다 | 걸으며 하는 영어공부

5장. 걸으면 인격이 높아진다

첫인상의 법칙 | 걸음거리로 인상이 달라진다 | 함께 걸으면 좋아진다

책쓰기 전과정 프로세스

Sourcing 쓸거리 찾기, 주제 탐험, 주제어 정리, 책을 쓰려는 동기 점검

Concepting 검증하기, 컨셉 확정

Planning 시장조사, 기획서 만들기, 자료 수집 분석, 목차 작성

Writing 쓰기, 수정 교정, 에디팅

Marketing 홍보, 마케팅

내가 가장 잘 쓸 수 있는 거리 찾기

당신이 누구보다 잘 하는 일은 무엇입니까?

당신이 해 온 일 가운데 큰 노력 없이도 늘 성과가 좋았던 일이 있다면 무엇입니까?

다른 사람이 하는 것을 지켜보기 보다는 주로 직접 하는 일이 있다면 무엇입니까?
앞으로 좀 더 많이 배워보겠다고 벼르는 것이 있다면 무엇입니까?

지금까지 당신이 해 온 일 가운데 두고두고 자랑스러운 성취의 경험은 무엇입니까?

그 일만 했다하면 기분이 좋고 행복하고 결과까지 좋은 일이 있다면 무엇입니까?
당신이 가장 정열적으로 대하고 많은 힘과 에너지를 쏟아 붓는 일은 무엇입니까?

주위로부터 참 잘한다고 평가를 받는 것은 무엇입니까?
주위 사람들이 나에게 내리는 공통된 평가는 무엇입니까?
책장에 꽂힌 책 가운데 가장 많은 종류는 무엇입니까?
당신이 가장 오래 해온 일은 무엇입니까?
그 분야에서 특히 당신의 장점이 두드러지는 것은 무엇입니까?
남들이 나를 소개할 때 주로 하는 말은 무엇입니까?
돈도 시간도 어떤 제약도 없다면 당신이 하고 싶은 일은 무엇입니까?
그 일을 하는데 가장 방해되는 요소는 무엇이라 생각합니까?
예순 살이 되면, 이라는 비틀즈의 노래가 있습니다. 예순 살 당신의 생일에 당신은 어떤 사람이 되어 있고 싶습니까?

*** 출간계획서

기획의도 : 왜 이 책을 쓰게 되었나. 책에 대한 주제나 컨셉, 다른 책과 차별화 되는 점, 다른 책에 비해 월등한 점

가제 : 저자가 생각하는 책의 제목. 책의 주제나 컨셉을 문장으로 표현한 것.

예상원고 내용 : 책의 내용에 대해 슨다. 주제, 소주제, 각각의 칼럼에 이르기까지 가능한 목차에 가깝게.

저자: 저자의 프로필, 이 책을 쓰게 된 저자로서 경쟁력을 적는다.

경쟁도서 : 비슷한 혹은 같은 컨셉으로 이미 서점을 통해 판매된 책들을 비교분석함. 결과적으로 내가 쓰는 책의 특장점을 조목조목 설명.

제작 및 책 꼴에 대한 의견 : 책의 스타일 등에 제작과정에 관한 것은 출판사가 정하는 것이 보통, 특별히 염두에 둔 것이 있다면 표시. 원고나 책의 분량에 대해 미리 생각했다면 표시.

판촉계획 : 저자로서 할 수 있는 책의 판매촉진 방법을 적는다.

마케팅 포인트 : 책을 마케팅 할 때 동원할 수 있는 마케팅 요소.

독자를 유혹하는 제목 붙이기 요령

무슨 책인지 단 번에 알게 하라 : 프로페셔널의 조건, 5백년 명문가의 자녀교육이야기

왜 이 책을 사야하는지 이유를 제시하라 : 다른 책과 비교해 어떤 차별적 우위를 가지고 있는지 구체적으로 표현.

다이어트 절대로 하지마라, 배려의 기술

보장하고 위협하라 : 지금 외로운 사람들이 꼭 알아야 할 행복한 홀로서기 비법, 99% 중학생이 헛공부하고있다

거부할 수 없는 조건을 제안하라 : 공부가 즐거워지는 습관, 공부 잘 하고 싶으면 학원부터 그만둬라

[알아봅시다] 기업용 앱스토어 전성시대 열리나

"상업용SW 개발ㆍ판매 자유롭게" 기업들 앱장터 박차

MSㆍSAP 등 선도… 국내기업도 가세
낮은 수수료ㆍ개발자중심 수익분배 장점


주요 소프트웨어(SW) 기업들이 잇따라 기업용 애플리케이션을 자유롭게 거래할 수 있는 마켓플레이스 구축에 나서고 있습니다. 독일의 SW 기업인 SAP가 지난해 기업용 앱스토어를 개설한데 이어 마이크로소프트가 `윈도8' 출시에 맞춰 `윈도 스토어'를 운영할 예정입니다. 이에 앞서 CRM(고객관계관리) 기업인 세일즈포스닷컴이 수년째 `앱익스체인지'를 운영하고 있습니다. 이들 글로벌 SW 기업이 잇따라 기업용 앱 거래장터를 만드는 이유와 현황, 또 향후 전망을 알아봅니다.

SAP는 최근 생산성, 영업지원, 인적자산관리 등 기업용 앱을 사고 팔 수 있는 마켓플레이스인 `SAP 앱스토어'를 선보였습니다. SAP 스토어는 판매수익의 85%를 개발자가 갖고, 15%를 SAP가 갖는 방식으로 운영됩니다. 애플이 앱스토어의 수수료로 가져가는 30%에 비해 절반 수준입니다.

형원준 SAP코리아 사장은 "인도가 SW 강국으로 개발자가 전 세계를 누비는 것처럼 새로운 SW 생태계를 통해 10만명의 국내 개발자가 양성돼 세계를 무대로 활약하는 것도 불가능하지만은 않다"며 "국내 모바일 앱 개발자들이 SAP 앱스토어를 통해 세계무대에 진출, 성공신화를 써 나가도록 돕는 것이 올해 SAP코리아의 중점사업 가운데 하나"라고 말했습니다.
SAP는 기업용 앱스토어 비즈니스가 기업용 앱과 모바일 플랫폼을 동시에 제공하고 많은 기업 고객과 파트너를 보유한 자사가 가장 잘 할 수 있다며, 한국의 SW 기업들이 글로벌 차원에서 운영되는 SAP 스토어를 통해 더 쉽게 해외에 진출할 수 있다고 강조했습니다.

MS는 윈도8의 애플리케이션 장터인 윈도 스토어를 준비하고 있습니다. 향후 윈도8과 관련된 앱은 윈도 스토어에서만 구입할 수 있습니다. 윈도 스토어는 개인용과 기업용 앱을 모두 다루지만, 기업용 앱에 대해 별도의 배포 관리 전략을 발표하는 등 기업용 앱에 대해 많은 공을 들이고 있습니다.

윈도 스토어 베타버전에서는 미국, 일본, 독일, 프랑스, 인도 등 5개 국가에서만 앱을 등록할 수 있지만, 향후 윈도 스토어 공식 론칭이 이뤄지면 한국을 포함한 27개 국가에서 앱을 등록할 수 있도록 확대될 것으로 예상됩니다.

MS는 향후 개발자를 위해 개발자 대시보드, 개발자 지원 옵션의 현지화 등을 통해 해당 국가별 앱에 대한 관심이 높아져 윈도 스토어 인기가 상승할 것으로 기대하고 있습니다.

MS는 누적 매출 2500달러가 넘으면 개발사와 MS의 수익을 8대2로 나눌 것으로 알려졌습니다. 기본은 7대3이지만 수익을 내는 앱 개발사와 개발자에게 더 수익을 배분해주겠다는 뜻이라고 합니다.

세일즈포스닷컴은 수년째 대표적인 기업용 앱 거래 마켓플레이스인 앱익스체인지를 운영하고 있습니다. 앱익스체인지는 전세계 개발자들이 직접 개발한 앱을 온라인으로 통해 손쉽게 수요자에게 노출시켜 판매할 수 있도록 하는 플랫폼입니다.

앱익스체인지가 영세한 앱 개발자가 전 세계를 대상으로 자신의 앱을 팔 수 있게 해 상업용 SW 개발과 판매의 진입장벽을 없앴다는 것이 세일즈포스닷컴의 설명입니다.

국내 SW 기업들의 마켓플레이스 운영도 주목할 만 합니다. 데이터베이스관리시스템(DBMS) 기업인 큐브리드는 최근 오픈소스 기반 마켓플레이스인 `XE마켓'을 오픈했습니다. XE마켓은 오픈소스 CMS(콘텐츠관리시스템)인 `익스프레스엔진'을 기반으로 해 다양한 레이아웃과 모듈, 애드온, 위젯 등을 사고 팔 수 있습니다.

오픈소스 CMS 개발기업인 레드블럭은 지난해부터 개발자들이 웹사이트 구축도구인 `킴스큐' 기반 확장 앱을 자유롭게 판매할 수 있는 마켓플레이스인 `큐마켓'을 운영하고 있습니다.

이들 국내 기업의 마켓플레이스는 자사 SW의 활용성을 높이는 것을 목적으로 소규모로 운영되는 것이 특징입니다.

통신사업자의 기업용 앱스토어 서비스도 눈에 띕니다. KT는 지난해 7월 기업 솔루션을 사고 파는 `기업용 솔루션 오픈마켓' 운용을 시작했습니다. 앱 개발기업이 회사정보를 입력하면 심사를 거쳐 개발사로 등록되는데, 개발사는 KT가 제공하는 API(애플리케이션 프로그래밍 인터페이스)을 기반으로 솔루션을 개발해 마켓에 올릴 수 있습니다.

이들 기업용 앱스토어가 성공하기 위해서는 많은 노력이 필요할 것으로 보입니다. 기업용 앱이 일반 사용자를 대상으로 한 앱보다 훨씬 복잡하고 고려해야 할 부분이 많기 때문입니다. 반면, 기업용 앱스토어가 기존 복잡한 오프라인 판매방식을 보완할 수 있는 데다 구글, 애플 등 유력 플랫폼 사업자들이 기업용 앱으로 서비스 영역을 확대하고 있다는 점은 기업용 앱스토어의 보편화를 앞당길 것으로 예상됩니다.

강동식기자 dskang@
▶강동식기자의 블로그 : http://blog.dt.co.kr/blog/?mb_id=dskang

[저작권자 ⓒ디지털타임스 무단 전재-재배포 금지]
[알아봅시다] RCS 서비스 `조인`

`올-IP` 기반 글로벌 이통사 공통 모바일 메신저

4G통신용 음성ㆍ채팅ㆍ미디어 `통합 메시징`
GSMA 기술 표준화… 국내 7월 도입 예정
무료문자 중심 시장속 요금제가 성공 관건


지난 2월 스페인 바르셀로나에서 열린 `모바일월드콩그레스(MWC02012)'에서 세계이동통신협회(GSMA)는 글로벌 이동통신사들이 직접 서비스하는 모바일 메신저 서비스인 `조인(Joyn)'을 발표했습니다. 조인은 그동안 우리에게 `RCS(Rich Communication Suit)'라고 알려지던 서비스입니다. 이제 세계 이동통신사들은 RCS라는 어려운 단어가 아닌 조인이라는 브랜드를 사용하게 됩니다. 조인, 혹은 RCS는 카카오톡 등 무료 문자 서비스의 `대항마'로 소개되곤 합니다. 국내 이동통신 3사는 오는 7월경 RCS를 서비스할 것으로 예상합니다. RCS가 상용화되면 우리의 통신 생활에 혁명이 일어날 것으로 전망되고 있습니다.

◇RCS의 새 브랜드 Joyn=RCS는 휴대폰의 연락처, 음성통화 메시징 등 통신 사업자의 기본 기능에 더해 IP(인터넷프로토콜) 기반으로 다양한 통합 커뮤니케이션 서비스를 제공합니다.

GSMA가 조인을 론칭하며 오픈한 홈페이지(www.joynus.com)에서는 조인의 주요 기능으로 4가지를 소개하고 있습니다. 연락처(Contacts)는 자신의 휴대폰 주소록에 상대방의 상태 정보가 표시되거나 네트워크 주소록을 자동으로 저장하는 등의 기능을 제공합니다. 채팅(chat)은 카카오톡과 같은 인스턴트 메신저 기능을 합니다. 파일 공유(file share)나 비디오 공유(Video share)는 음성통화나 메신저를 하면서 실시간으로 파일이나 비디오를 공유할 수 있는 것을 말합니다.

조인은 에릭슨이 제안한 RCS를 사용자 친화적으로 업그레이드 한 것입니다. RCS는 4세대 LTE-어드밴스드의 IMS(IP Multimedia Subsystem)에서 기본적인 메시징 서비스를 담당하고 있습니다. RCS는 주소록과 연동돼 음성, 영상, 채팅, 그룹메시징 등 멀티미디어 메시징을 처리할 수 있는 기술로 현재의 MMS에서 크게 진화한 개념입니다. 3세대 이동통신까지는 음성과 SMS, MMS를 구분해 전송했으나 4세대 이동통신에서는 올(All)-IP 기반에서 음성과 메시징을 통합해 제공하는 것입니다.

RCS는 SMS나 MMS와 마찬가지로 단말기에 기본 기능으로 탑재되기 때문에 별도의 애플리케이션(앱)을 설치하거나 회원에 가입하지 않고 바로 사용할 수 있습니다. 또, 기술 표준화를 통해 단말기 종류나 가입 통신사에 관계없이 이용할 수 있습니다.

◇올해는 RCS의 원년=RCS는 에릭슨이 제안한 것이지만 GSMA는 2008년부터 이를 도입하기 위해 표준화 작업을 벌이고 있습니다. 2008년부터 15개 주요 이동통신사와 단말기 제조업체들이 기술 표준화 작업을 진행하고 있으며 MWC2012에서는 글로벌 이동통신사들이 RCS 버전5를 승인했습니다. 2008년부터 RCS에 대한 논의를 시작했다는 점을 감안한다면, RCS가 카카오톡의 대항마로 개발됐다는 표현은 사실 정확하지 않습니다.

국내에서는 SK텔레콤이 RCS 표준화에 적극 참여했습니다. SK텔레콤은 RCS 이니셔티브 초기 11개 통신 사업자중 국내에서 유일하게 참여했으며 현재 GSMA RCS 프로젝트의 최상위 조직인 리더십팀에 텔레포니카, 보다폰, 도이치텔레콤, 오렌지, 텔레콤이탈리아와 함께 아시아 통신사중 유일하게 참여하고 있습니다.

RCS는 올해가 서비스 원년으로 빠르게 도입이 확산될 것으로 예상됩니다. GSMA에 따르면 조인은 현재 오렌지, 텔레포니카, 보다폰 등 유럽 이동통신사들이 주축이 돼 테스트하고 있으며 세계 첫 상용화 국가로 지정된 스페인에서는 보다폰이 베타 버전 서비스를 제공하고 있습니다. 조인 홈페이지에서는 안드로이드 OS(운영체제) 기반의 조인 애플리케이션을 다운로드할 수 있으며 iOS 애플 운영체제 버전도 곧 출시될 예정입니다. 조인은 궁극적으로는 휴대폰에 기본 탑재될 예정입니다.

올해 여름에는 두 번째 상용화 국가 그룹인 프랑스, 독일, 이탈리아, 그리고 우리나라에서 서비스를 상용화할 계획입니다. SK텔레콤, KT, LG유플러스 등 이동통신 3사는 국내 서비스를 개시하기 위해 노력하고 있습니다. 국내에서는 한국정보통신기술협회(TTA) 산하에 RCS 표준화위원회가 설치돼 국내 사업자들간 서비스 연동을 추진하고 있습니다.

이밖에 AT&T, 벨 모빌리티, 도이치텔레콤, T모바일, 버라이즌 등이 조인 서비스를 제공할 예정입니다. 휴대폰 제조사중에서는 HTC, LG전자, 모토로라모빌리티, 노키아, 삼성전자, 소니 ZTE 등이 조인을 지원하기로 약속한 상황입니다.

◇RCS 성공 관건은 요금제=RCS가 카카오톡의 대항마로 출발한 것은 아니지만 무료문자 서비스가 크게 각광받고 있는 상황에서 RCS는 더욱 주목을 받고 있습니다. 전세계 통신사들이 RCS에 관심을 갖고 도입하려는 이유는 무료 메시징 서비스의 증가에 따라 통신사업자들의 주요 수익원이었던 SMS 매출이 타격을 받고 있기 때문이기도 합니다. 시장 조사 기관인 오범(Ovum)에 따르면 무료 메시징 앱의 사용이 증가함에 따라 글로벌 이통사들의 SMS 수익 감소는 2010년 87억 달러, 2011년 139억 달러로 추정되고 있습니다. 무료 문자 사용이 늘어나면서 SMS뿐 아니라 음성 통화 이용량도 점차 줄어들고 있는 것으로 분석됩니다.

RCS가 성공할 수 있을지 여부는 서비스의 완성도뿐 아니라 요금제가 좌우할 것 같습니다. 통신사들은 RCS를 어떻게 서비스할지에 대해 아직 함구하고 있습니다. 유사 서비스인 카카오톡이 무료인 점을 들어 일부에서는 RCS 역시 무료로 제공될 것이란 예측을 내놓고 있습니다. 예를 들어 특정 요금제 이상 사용자에게 무료로 제공하는 방식입니다.

하지만 RCS가 SMS와 MMS의 대체 서비스라는 점을 감안한다면, RCS를 무료화 할 경우 이통사들은 상당한 타격을 받게 됩니다. 이통사들이 쉽사리 RCS를 상용화하지 못하는 이유는 기술적인 이슈보다는 마땅한 수익 모델을 아직 정립하지 못했기 때문으로 보입니다. 일부에서는 제대로 RCS의 수익 모델을 만들지 못할 경우 자칫 이통사들의 자충수가 될 수 있다고 경고하고 있습니다.

강희종기자 mindle@

◇ 사진설명 : 조인(Joyn) 서비스 캡처 화면. 음성통화 도중 비디오 공유 서비스.

When Oracle XE 11g release 2 uninstall and re-install then you may found error. oracle instance check.

then cmd.exe command line type below

c:\>sc delete OracleServiceXE

and

C:\>sc delete Oraclejobschedulerxe

Gnuplot을 사용하여 웹 페이지에 데이터 표시하기

[출처] http://www.ibm.com/developerworks/kr/library/au-gnuplot/index.html

David Tansley, System Administrator, Ace Europe

요약: Gnuplot을 사용하면 원시 데이터로 그래픽 이미지를 제공하여 시스템에서 웹 페이지를 동적으로 생성할 수 있습니다. 이 원시 데이터에는 일반적으로 시스템 성능, 스토리지 또는 데이터베이스 증가에 대한 MIS 관련 정보가 포함되어 있습니다.

원문 게재일: 2010 년 1 월 19 일
번역 게재일: 2010 년 3 월 09 일
난이도: 초급
영어로: 보기
페이지뷰: 4218 회
의견: 0 (보기 | 의견 추가 - 로그인)

평균 평가 등급 1 개 총 7표 평균 평가 등급 (7 투표수)
아티클 순위

소개

Gnuplot은 트렌드 및 그래프를 생성하는 데 사용되는 도구이다. Gnuplot은 일반적으로 시계열 기반 데이터 수집에 사용되지만 여기에 한정되지 않으며 정적 데이터도 사용할 수 있다. Gnuplot은 일괄처리로 실행되거나 작동 중에 실행될 수 있으며 그래픽 표시기 또는 웹 브라우저로 표시된다. 이 기사에서는 일괄처리 파일을 사용하여 sar 및 기타 데이터 소스에서 수집된 데이터를 생성하는 gnuplot을 사용하는 방법을 보여 준다. Gnuplot에는 집합 연산자를 사용하는 명령 옵션이 매우 다양하다. 하지만 선이나 상자를 사용하여 기본 그래프를 생성하려면 문서화에 대한 지식이 일부 있어야 한다.

이 데모를 위해 웹 서버를 사용하여 그래프를 제공한다.


Gnuplot 개요

Gnuplot은 원시 표 형식 데이터를 그래픽 파일 이미지로 변환한다. 자주 사용되는 형식은 png, pdf 및 jpeg이며 이러한 형식은 X 터미널, 웹 페이지 또는 일반 그래픽 표시기 유틸리티에 직접 또는 작동 중에 제공될 수 있다. 이미지도 문서로 가져올 수 있다. 'set' 명령을 사용하여 이미지가 형식화되고 표시되는 방법을 지정하여 gnuplot과 상호작용하는 데 명령 인터페이스가 사용된다. 일반적으로 여기에는 그래프의 크기, 사용할 색상, 배율, x,y 좌표 및 출력 이미지 이름이 포함된다. 그런 다음 plot 명령은 gnuplot 엔진을 사용하여 실제로 이미지를 생성하는 데 사용된다 3D 그래프 이미지를 그리는 splot 명령도 있다. 명령 인터페이스를 사용하여 명령을 대화식으로 실행할 수도 있지만 쉘 'here' 문서 메소드로 파일(필요한 경우)의 변수를 사용하여 재사용할 수 있기 때문에 구성 파일을 사용하는 것이 가장 좋다. 그런 다음 구성 파일은 gnuplot을 통해 연결되어 이미지 파일을 생성한다. 구성 파일에 오류가 있는 경우에는 이 프로세스 중에 이러한 오류가 표시되어 오류의 위치가 강조표시된다. 새로 생성된 그래픽 파일과 함께 이미지가 표시될 수 있다.

그래프를 생성하는 데 사용되는 데이터 수집 프로세스와 마찬가지로 gnuplot을 통해 연결하기 전에 수집된 데이터를 약간 수정해야 한다. 이 필터링에는 데이터 파일에서 헤더 또는 트레일러를 삭제하는 것도 포함되며 sed와 awk를 사용하면 텍스트 필터링 요구사항을 충족할 수 있다.


Gnuplot 설치하기

Gnuplot 버전 4.2는 AIX?? 5L Source Packages 웹 사이트(http://www.perzl.org/aix/index.php)에서 rpm으로 다운로드할 수 있다.

Gnuplot뿐만 아니라 이러한 데모에는 실행 중인 http 서버도 필요하다.

필요한 종속 라이브러리와 http 서버는 여기 또는 AIX 도구 상자 웹 사이트에서 다운로드할 수도 있다.

다음 rpm 라이브러리는 전제 조건이기 때문에 gnuplot을 설치하기 전에 설치되어 있어야 한다.

fontconfig-2.7.2-1.aix5.1.ppc.rpmexpat-2.0.1-2.aix5.1.ppc.rpm freetype2-2.3.9-1.aix5.1.ppc.rpmzlib-1.2.3-5.aix5.1.ppc.rpm libpng-1.2.40-1.aix5.1.ppc.rpmgd-2.0.35-4.aix5.1.ppc.rpmlibjpeg-7-1.aix5.1.ppc.rpmlibXpm-3.5.7-2.aix5.1.ppc.rpm  gettext-0.17-1.aix5.1.ppc.rpmglib2-2.20.5-1.aix5.1.ppc.rpm

설치된 rpm을 나열하려면 다음을 사용한다.

# rpm –qa

마지막으로 실제 gnuplot 패키지를 설치한다.

# rpm -ivh gnuplot-4.2.4-1.aix5.1.ppc.rpm 

테스트할 gnuplot을 실행한다. Gnuplot 인터페이스 명령이 제공된다(인터페이스를 종료하려면 quit 실행).

$ gnuplot      G N U P L O T        Version 4.2 patchlevel 4        last modified Sep 2008        System: 5.3        Copyright (C) 1986 - 1993, 1998, 2004, 2007, 2008        Thomas Williams, Colin Kelley and many others        Type `help` to access the on-line reference manual.        The gnuplot FAQ is available from http://www.gnuplot.info/faq/        Send bug reports and suggestions to <http://sourceforge.net/projects/gnuplot>Terminal type set to 'unknown'gnuplot>


SAR로 그래프 작성하기

SAR은 성능 데이터를 수집하는 가장 일반적인 방법이므로 SAR을 유일한 예제로 사용한다. Listing 1. sarx.txt에는 5시간 동안 매시간 간격으로 sar을 실행하여 얻은 필터링된 출력이 포함되어 있다.


Listing 1. sarx.txt
14:10:50        33  27    4     36      4.0015:10:50        29  14    3     28      4.0016:10:50        35  21    1     31      4.0017:10:49        38 29    2     39      4.0018:10:40        42  29    3     35      4.00

다음으로 그래프를 생성하는 데 필요한 모든 gnuplot 명령을 포함할 파일을 작성한다. 이 파일의 이름은 원하는 대로 지정할 수 있으며 이 데모에서는 sarx.conf라고 지정한다.

이미지를 생성하려면 그래픽 파일의 형식과 이 그래픽 파일의 시각적 표시를 gnuplot에 알려야 한다. Listing 2. sarx.conf에는 집합 연산을 발행할 구성 파일이 포함되어 있다. # 문자로 시작하는 행은 모두 주석으로 간주된다. Listing 2를 더 자세하게 살펴보자.

set terminal png truecolor

먼저 결과 이미지의 형식을 gnuplot에 알리는 터미널 유형이 설정된다. 이 기사에서는 PNG(Portable Network Graphics) 형식을 사용한다.

set output "sarimage.png"

그런 다음 실제 출력 이미지 파일 이름을 gnuplot에 알린다. 여기서는 이 파일을 sarimage.png라고 한다.

set autoscale

그래프 생성 시에는 데이터의 x축 및 y축 범위를 지정해야 한다. 이 예제에서는 gnuplot이 이러한 결정을 작성하고 범위 값을 계산하도록 한다. 하지만 나중에 설명되는 바와 같이 이는 대체될 수 있다.

set xdata timeset timefmt "%H:%M:%S"

이 예제에서는 날짜 값을 데이터의 참조 위치로 사용하므로 gnuplot에 이 값과 이 값의 형식을 알린다. Listing 1. sarx.txt에 포함된 예제에서 이 값의 형식은 다음과 같다.

Hour:Minute:Seconds

UNIX 날짜 표기법에 따라 날짜 변수를 큰따옴표로 묶는 것에 주의한다. 기타 일반적인 형식은 다음과 같다.

%d  - day of month 1 -31%m - month of year 1 -12%y  - year 0-99%b  - three character of month name , ie: jan ,feb%B  - name of month

Hour-Minute 형식의 날짜 열이 있는 경우에는

: set timefmt ″%H-%M″으로 표시된다.

set style data lines

그래프가 제공되면 표시되는 데이터는 부드러운 데이터 선이 되어야 한다. 기타 일반적인 그리기 형식은 점, 상자, 오차 막대, 촛대가 있다.

plot "sarx1.txt" using 1:2 title "%user", '' using 1:3 title "%sys"

그런 다음 plot 명령을 사용하여 그래프가 실제로 그려지거나 생성된다. 먼저 데이터 입력 파일 이름이 제공된 후 그릴 열을 gnuplot에 알린다. 이 예제에서는 1열을 x축으로 사용하고 제목이 ″%user″인 2열 데이터를 그린 후 제목이 ″%sys″인 3열을 그린다. 제목 또는 레이블은 그래프의 오른쪽 상단에 표시된다. 2열 및 3열은 1열을 x 값 참조로 사용한다. plot 명령에 있는 각각의 'using' 명령문은 쉼표로 구분된다. 두 개의 작은 따옴표 사용에 대해서는 다음 섹션에서 설명한다.

이미지 파일을 생성하려면 형식이 다음과 같다.

cat < conf file> | gnuplot

이 데모에서는 다음을 사용한다.

$ cat sarx.conf | gnuplot

이제 sarimage.png 파일이 생성된다. 이미지를 보려면 웹 서버 파일 시스템의 htdocs 디렉토리로 파일을 복사한다.

그림 1. sarimage는 제공된 샘플 데이터를 사용하여 웹 브라우저에서 결과 출력을 보여 준다.


Listing 2. sarx.conf
#sarx.confset terminal png truecolorset output "sarimage.png"set autoscaleset xdata timeset timefmt "%H:%M:%S"set style data linesplot "sarx.txt" using 1:2 title "%user", '' using 1:3 title "%sys"


그림 1. sarimage


플롯 프리젠테이션

명령행의 간단한 방식을 plot 명령에 사용할 수 있다. 예를 들어, 초기 plot 명령 뒤에 옵션의 첫 번째 문자를 사용하여 plot 명령에 대한 추가 옵션이 축약될 수 있다. 하지만 이 데모에서는 입력 파일(sarx1.txt)을 다시 제공하는 대신 두 개의 작은따옴표를 사용하여 입력 파일만 축약한다. 다음은 이러한 설명을 보여준다. 첫 번째 예제는 이 데모에서 사용 중인 표기법이고 두 번째 예제는 축약된 표기법이며 세 번째 예제는 약어 없이 전체 명령문을 제공한다. 세 예제는 모두 동일한 출력을 생성한다.

plot "sarx1.txt" using 1:2 title "%user", '' using 1:3 title "%sys"plot "sarx1.txt" using 1:2 title "%user", '' u 1:3 t "%sys"plot "sarx1.txt" using 1:2 title "%user",\″sarx1.txt'' using 1:3 title "%sys"

다른 사용자에게 그래프를 표시하는 경우에는 주제를 쉽게 식별할 수 있도록 명확한 레이블 및 제목을 종종 포함하는 것이 좋다. x 및 y 레이블을 포함하려면 xlabel 및 ylabel 명령을 사용하고 텍스트를 따옴표로 묶는다.

set ylabel " y line info here"set xlabel " x line info here"

그래프의 제목 헤더를 포함하려면 title 명령을 사용한다.

set title "main title info here"

Gnuplot은 그래프 생성 시 고유의 기본 색상을 사용한다. 기본적으로 생성된 그래프는 흰색 배경 위에 있으며 이는 그래프가 인쇄될 수 있기 때문에 효과적이다. 하지만 문자 x가 접두부에 있는 16진 범위에 표시된 색상 코드를 사용하여 색상을 변경할 수 있다.

xrrggbb

Google에서 'hex color codes'를 검색하면 16진으로 된 전체 색상 범위가 생성된다.

Gnuplot의 기본 색상을 대체하는 색상의 순서는 다음과 같다.

backgroundborder XYplotting lines

16진으로 된 밝은 회색은 C9C9C9이다.

배경이 밝은 회색인 그래프를 생성하려면 다음을 사용할 수 있다.

set terminal png  xC9C9C9

위 명령에서는 gnuplot에서 사용하는 기본 색상을 대체하는 터미널 유형 png로 truecolour 옵션을 대체해야 했다는 것에 주의한다. 기본 설정을 대체할 색상을 더이상 지정하지 않았기 때문에 gnuplot은 그래프의 나머지 부분에 고유의 기본 색상을 사용한다.

그래프를 볼 때는 격자를 참조 위치로 유용하게 사용할 수도 있다. 격자 옵션을 사용하여 다음 명령은 그래프에 격자를 삽입하도록 gnuplot에 알린다.

set grid

내재적으로 x 및 y 좌표를 설정할 수 있지만 데이터의 폭보다 작은 범위를 지정하거나 그래프가 그려지지 않도록 해야 한다. Listing 1에 포함된 샘플 데이터를 사용하면 시간 x 좌표의 범위가 14:10:50 - 18:10:40 사이임을 알 수 있다.

14 - 50 사이의 Y 좌표 범위(2열 및 3열)

이 정보를 이용하여 자체 범위를 지정할 수 있다. 이 예제에서는 14:00 - 18:15 사이의 x 범위와 10 - 50 사이의 y 범위를 사용한다.

set xrange ["14:00:00" : "18:15:00"]set yrange ["10:00" : "50:00" ]

Listing 3에서는 이러한 변경사항을 사용하며 그래프 출력이 그림 2에 포함되어 있다.


Listing 3. sarx2.conf
#sarx2.confset terminal png  xC9C9C9set output "sarimage.png"set autoscaleset xdata timeset timefmt "%H:%M:%S"set ylabel "Performance"set xlabel "Time"set title "Sar Output Example"set xrange ["14:00:00":"18:15:00"]set yrange ["10:00" : "50:00" ]set gridset style data linesplot "sarx1.txt" using 1:2 title "%user", '' using 1:3 title "%sys"


그림 2. sarimage2


히스토그램이 포함된 Gnuplot

히스토그램 또는 상자도 데이터를 표시하는 데 사용할 수 있으며 일부 경우에는 정적 데이터를 사용하는 것보다 나은 시각적 표시를 제공한다. Listing 4는 AIX 애플리케이션 상자에서 가져온 전체 사용자 그룹 수가 포함되어 있다. 1열에는 실제 AIX 그룹 이름이 포함되어 있고 2열에는 전체 구성원이 포함되어 있다.


Listing 4. grpdata.txt
 staff   54apps    22sybgrp  12db2grp1 29dasdm   8dstage 21dsgrp  8batch  28db2prd 1

히스토그램을 사용하려면 히스토그램을 사용하여 그래프가 생성된다는 것을 gnuplot에 알리기만 하면 된다.

set style data histograms

생성되는 기본 히스토그램의 상자 테두리는 굵게 표시되지 않으며 상자가 색으로 채워지지 않는다. 하지만 경계를 지정하면 x축 선을 따라 상자 맨 아래에 굵은 이중 실선이 있을 수 있다(시각적으로 올바르게 표시되지 않음).

Gnuplot은 위쪽, 아래쪽, 왼쪽 및 오른쪽 순서로(각각의 값은 1, 2, 4, 8임) 상자의 경계를 그린다. 하나 이상의 테두리를 지우려면 해당 값의 합계를 제공한다. 이 예제에서는 아래쪽 테두리를 삭제해야 하므로 -1 옵션을 사용하여 아래쪽 테두리가 지워진다. 채우기 옵션을 지정하면 상자가 기본 색상으로 채워진다.

set style fill solid 1.00 border -1

X 좌표의 경우 시간 분포를 사용하는 대신 그룹 이름을 사용한다. xtic 옵션을 사용하면 데이터 레이블(1열)과 함께 tic을 x축을 따라 배치하도록 gnuplot에 지시한다. 이 경우에는 그룹 이름이다. 하지만 그래프의 tic 사이에 맞지 않는 xtic의 시간 형식 또는 다수의 문자가 포함된 레이블을 제공하는 경우도 있다. 레이블이 겹치게 된다. 이를 예방하려면 레이블을 90도 회전하여 세로로 만든다. 다음 명령을 사용하여 이를 수행할 수 있다.

set xtic rotate by 90

2열에 있는 데이터는 1열(x 데이터)을 참조로 사용한다.

 ( 2:xtic (1)

그래프 생성 시 데이터 제목으로 "apps groups numbers"를 제공한다.

plot "grpdata.txt" using 2:xtic(1) title "apps group numbers"

grpimage.png 이미지를 생성하려면 다음을 사용한다.

$ cat grphist.conf | gnuplot

Listing 5에는 아래의 그림 3에 표시되어 있는 이미지를 생성하는 데 필요한 gnuplot 명령이 포함되어 있다.


Listing 5. grphist.conf
# grphist.confset terminal png truecolorset output "grpimage.png"set gridset xtic rotate by 90set style data histogramsset style fill solid 1.00 border -1plot "grpdata.txt"  using 2:xtic(1) title "apps group numbers"


그림 3. grpimage

물론 sar 예제에서와 같이 히스토그램에는 둘 이상의 데이터 세트가 있을 수 있다. 이제 데이터의 다른 소스를 살펴보자. Listing 6에는 디스크 배열에 포함된 3개월 동안의 데이터 증가 및 감소를 반영하는 데이터가 포함되어 있다. 1열은 디스크 배열 이름이고 2열은 1개월 동안의 디스크 증가 사용량이고 3열은 다음 달의 디스크 증가 사용량이며 그 다음 달의 증가량이 4열에 포함되어 있다.


Listing 6. disk.txt
hdisk2 420 425 410hdisk3 700 780 760hdisk4 450 450 452hdisk5 680 702 690hdisk6 320 330 329hdisk7 530 515 514

데이터 생성에 필요한 conf 파일이 Listing 7에 포함되어 있다. Plot 명령을 면밀하게 살펴 x축 데이터의 gnuplot을 대체하려는 경우 xtic 명령을 다시 사용한다. 히스토그램 생성 시 2열, 3열 및 4열에서는 x축을 참조로 사용한다. 일단 x축을 참조하면 2열은 x축을 사용해야 한다.

2:xtic(1)

Gnuplot에서는 구성될 나머지 열도 x축을 참조한다고 가정하기 때문에 plot 명령 내에 xtic을 지정하지 않아도 된다.

plot "disk.txt"  using 2:xtic(1) title "Oct-09 data growth(gb)", '' using 3 title "Nov-09 data growth(gb)", '' using 4 title "Dec-09 data growth(gb)"

이미지를 생성하려면 다음을 사용한다.

$ cat diskhist.conf | gnuplot

결과 이미지가 그림 4에 표시된다.


Listing 7. diskhist.conf
# diskhist.confset terminal png truecolorset output "diskimage.png"set gridset style data histogramsset style fill solid 1.00 border -1plot "disk.txt"  using 2:xtic(1) title "Oct-09 data growth(gb)", '' using 3 title "Nov-09 data growth(gb)", '' using 4 title "Dec-09 data growth(gb)"


그림 4. diskimage


결론

Gnuplot은 여러 유형의 데이터로부터 서로 다른 그래프를 생성하는 데 사용할 수 있는 도구이다. 쉘 스크립트를 사용한 그래프 생성 프로세스는 작동 중에 gnuplot을 사용하여 그래프를 생성하는 데 사용할 수 있기 때문에 이 프로세스를 자동화하려면 'here' 문서 메소드를 사용하는 것이 좋다. 웹 서버의 그래프 캐싱을 중지하려면 스크립트에 적절한 HTML META 태그를 사용한다(예: 'no-cache'문).


참고자료

교육

토론

필자소개

author photo

David Tansley는 프리랜서 저자이다. UNIX 관리자로 15년 동안 근무했으며 마지막 8년 동안은 AIX를 사용했다. 배드민턴을 즐기고 F1을 시청하면서 휴식을 취하지만 무엇보다도 아내와 GSA 오토바이를 타고 여행하는 걸 좋아한다.

Dark Room

[출처] http://they.misled.us/dark-room

Dark Room is a full screen, distraction free, writing environment. Unlike standard word processors that focus on features, Dark Room is just about you and your text.

Basically, Dark Room is a clone of the original WriteRoom that is an OS X (tiger) exclusive application. It is a child of necessity, as there were no viable alternatives in Windows to produce the same behavior. Sure, you can kind of emulate the behavior by jumping through a bunch of hoops in Word/Writer, but it isn’t the same. Also, you can do something similar in emacs, but who wants to learn a bunch of obscure keyboard shortcuts?

The goal of the project is to capture the essence of WriteRoom, while keeping it simple and just as free.

Download Now
(version 0.8b // 11/17/2006)

Requirements

Keyboard Shortcuts

  • File Menu
    • Clear Document: Ctrl+N
    • Open Document: Ctrl+O
    • Save Document: Ctrl+S
    • Quit: Ctrl+Q
  • Edit Menu
    • Undo: Ctrl+Z
    • Redo: Ctrl+Y
    • Cut: Ctrl+X
    • Copy: Ctrl+C
    • Paste: Ctrl+V
    • Select All: Ctrl+A
    • Find: Ctrl+F
    • Find Next: F3
    • Preferences: Ctrl+,
  • View Menu
    • Statistics: Ctrl+/
    • Toggle Fullscreen: F11 or Esc

Donations

If you like Dark Room, and have some money burning a hole in your bank account, feel free to drop it in mine. :wink:

Android Porting On Real Target


1 Introduction


Google explains that Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This  document explains the Android architecture by Google and porting procedure on the real hardware. The explanation is based on the m3 sdk version of the Android emulator.


If you have enough knowledge about patching the kernel, resolving rejections from a patch, making an ramdisk image, and the Linux kernel itself, reading this article will be easier.

2 Copyright and Acknowledgements


This  document is copyright (c) Kwangwoo Lee (kwangwoo.lee at gmail dot com). Permission is granted to copy, distribute and/or modify this  document under the terms of the GNU Free Documentation License.

AndroidPortingOnRealTarget/ko - Korean translation by dasomoli (dasomoli at gmail dot com).

3 The brief analysis of the Android architecture


3.1 Android Kernel


The most different things are the Android kernel uses ARM EABI(Embedded Application Binary Interface) and OpenBinder IPC(Inter Process Communication). If you want to compile the kernel supporting ARM EABI, you should rebuild toolchains to support ARM EABI.

The Android sdk emulates goldfish architecture using qemu. The alsa may be used for audio on Android. See the audio.c file in the goldfish architecture directory and the driver uses /dev/eac for audio on the Android system. RTC(Real Time Clock) device is also used through /dev/rtc0.

The following parts explain the main differences:

3.1.1 ARM EABI


EABI is the new "Embedded" ABI by ARM Ltd. The changes are listed on Debian wiki. (http://wiki.debian.org/ArmEabiPort)

Example with long ftruncate64(unsigned int fd, loff_t length):legacy ABI:- put fd into r0- put length into r1-r2- use "swi #(0x900000 + 194)" to call the kernelnew ARM EABI:- put fd into r0- put length into r2-r3 (skipping over r1)- put 194 into r7- use "swi 0" to call the kernel

The Android uses EABI kernel feature. Enable kernel options of the CONFIG_AEABI and CONFIG_OABI_COMPAT. You can see the differences of the executable binary as follows :

  • Legacy ABI
$ arm-softfloat-linux-gnu-objdump -x t7-demo | grep privateprivate flags = 202: [APCS-32] [FPA float format] [software FP] [has entry point]$ file t7-demot7-demo: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, stripped

  • ARM EABI
$ arm-softfloat-linux-gnueabi-objdump -x t7-demo  | grep privateprivate flags = 4000002: [Version4 EABI] [has entry point]$ file t7-demot7-demo: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), for GNU/Linux 2.6.14, stripped


What is the ABI for the ARM Architecture? Is it the same as the ARM EABI?

The ABI for the ARM Architecture is a standard developed by ARM and its partners (including CodeSourcery) that explains how compilers, assemblers, linkers, and other similar tools should generate object files and executable files. Tools that correctly implement the ABI for the ARM Architecture can interoperate; i.e., objects files built with one toolchain can be combined with object files built with another toolchain if both compilers use the ABI for the ARM Architecture. The "ARM EABI" is an informal name for the ABI for the ARM Architecture.

3.1.2 OpenBinder


The OpenBinder provides a object-oriented operating system environment. It is designed to be hosted by traditional kernels. This project is started at Be. Inc. as the part of the next generation BeOS, and finished implementing at PalmSource as a core part at the Cobalt system.

It is a system oriented component architecture rather than application oriented, and It provides IPC between processes, threadpool, memory management and clean up feature at the end of reference of an binder object.

The vanilla kernel do not have OpenBinder IPC mechanism you should patch the kernel. The OpenBinder offers thread management for the system through /dev/binder. It is the reason that Android system do not offer thread libraries.

After patching the kernel, you can see the files for binder at drivers/binder/.

3.1.3 Frame Buffer


The basic frame buffer driver should be implemented already. After that you need to implement the differences between your architecture driver and the goldfish driver.

The frame buffer driver of the goldfish architecture supports the fb_pan_display function of the struct fb_ops. It means you should allocate memory twice rather than the actual frame size.

  • Initialize frame buffer information
struct fb_info *fbinfo;...fbinfo->fix.ypanstep	= 1;fbinfo->var.yres_virtual    = gm->lcd.yres * 2;fbinfo->fix.smem_len        =	(gm->lcd.xres *                                gm->lcd.yres *                                gm->lcd.bpp / 8) * 2;

  • Allocate frame buffer memory
struct mvfb_info *fbi;...fbi->map_size = PAGE_ALIGN(fbi->fb->fix.smem_len + PAGE_SIZE);fbi->map_cpu  = dma_alloc_writecombine(fbi->dev, fbi->map_size,                                       &fbi->map_dma, GFP_KERNEL);

  • Implement fb_pan_display fuction hook
static int mvfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *fb){...}static struct fb_ops mvfb_ops = {        .owner		= THIS_MODULE,        .fb_check_var	= mvfb_check_var,        .fb_set_par	= mvfb_set_par,	        .fb_setcolreg	= mvfb_setcolreg,        .fb_blank	= mvfb_blank,        .fb_pan_display = mvfb_pan_display,        .fb_fillrect	= cfb_fillrect,        .fb_copyarea	= cfb_copyarea,        .fb_imageblit	= cfb_imageblit,        .fb_mmap	= mvfb_mmap,	};

The device file is located at /dev/graphics/fb0.

3.1.4 Input Devices


Android uses event device for user input. There are three devices such as keypad, qwerty2 keyboard and mouse. The qwerty2 keyboard and mouse are normal devices. So I just explain the keypad and touchscreen which mouse device is replaced with.

On the Android shell, Cat the /proc/bus/input/{devices,handlers} and then you will see the devices used for the Android.
$ adb shell# cat /proc/bus/input/devicesI: Bus=0000 Vendor=0000 Product=0000 Version=0000N: Name="goldfish-events-keyboard"P: Phys=S: Sysfs=/class/inut/input0U: Uniq=H: Handlers=kbd mouse0 event0...## cat /proc/bus/input/handlersN: Number=0 Name=kbdN: Number=1 Name=mousedev Minor=32N: Number=2 Name=evdev Minor=64#

  • Keypad

Qemu emulates goldfish-events-keyboard. It is a keypad using event device(/dev/input/event0). So you should know which key event and values come from the event device to activate Android applications. To do that, read event0 device with cat and redirect the output to a file. If you push and release the key button on emulator, the output values will be saved.

The output format is struct input_event. So the output on each event is 16 bytes like 8 bytes for time, 2 bytes for type, 2 bytes for code, 4 bytes for value. Read input.txt and input-programming.txt about input event devices in the Documentation/input directory of the Linux kernel source code.

struct input_event {        struct timeval time;        unsigned short type;        unsigned short code;        unsigned int value;};

The Tiger7 evaluation board has it's own scancode table. The following shows the key layout on evaluation board, scancode table, and Android keycodes:
/* *  Key Layout       Scancode Table * *   1  2  3        0x1  0x10  0x100 *   4  5  6        0x2  0x20  0x200 *   7  8  9        0x4  0x40  0x400 *   *  0  #        0x8  0x80  0x800 */static unsigned short android_keycode[] = {        /*         *  0x66 0x67 0x9e	Home  Up   Back         *  0x69 0xe8 0x6a	Left  Ok   Right         *  0xe7 0x6c 0x6b	Send  Down Hangup         *  0xe5		Menu       just_distinction_for_private         */        KEY_HOME,         KEY_UP,       KEY_BACK,        KEY_LEFT,         KEY_REPLY,    KEY_RIGHT,        KEY_SEND,         KEY_DOWN,     KEY_END,        KEY_KBDILLUMDOWN, KEY_RESERVED, KEY_PLAY};

There is a power button on emulator, but I skipped it to get output value.

If an interrupt of the keypad is caught, translate the scancode with the keycode of the Android on the above table and send event to user space application.
...keycode = translate_keycode(scancode);...input_event(keydev->input, EV_KEY, keycode, KEY_PRESSED);orinput_event(keydev->input, EV_KEY, keycode, KEY_RELEASED);...

The high resolution timer - hrtimer is used for reduce keypad debounce.

  • Touchscreen

If you have a touchscreen driver supporting the event interface for a pointing device, it'll work well. If you do not have it, you may implement it or use other pointing devices. Fortunately the evaluation board has already implemented touchscreen driver - drivers/input/touchscreen/tsc2007.c - which is made just before beginning to porting Android. Refer the drivers on drivers/input/touchscreen/ to implement your own driver and the text files on Documentation/input/.

Here is the output of the /proc/bus/input/{devices,handlers} on evaluation board.
# cat /proc/bus/input/devicesI: Bus=0000 Vendor=0000 Product=0000 Version=0000N: Name="MVT7 KEYPAD"P: Phys=S: Sysfs=/class/input/input0U: Uniq=H: Handlers=kbd event0 evbugB: EV=f...I: Bus=0000 Vendor=0000 Product=0000 Version=0000N: Name="TSC2007 Touchscreen"P: Phys=0-0090/input0S: Sysfs=/class/input/input1U: Uniq=H: Handlers=event1 evbugB: EV=bB: KEY=400 0 0 0 0 0 0 0 0 0 0B: ABS=1000003# cat /proc/bus/input/handlersN: Number=0 Name=kbdN: Number=1 Name=evdev Minor=64N: Number=2 Name=evbug

As a result, the keypad uses /dev/input/event0 and the touchscreen interface uses /dev/input/event1 on application layer.

3.1.5 Low Memory Killer


The Linux Kernel has an OOM(Out of Memory) killer for the situation that no memory is left to allocate for a request of a process. It examines all processes and keeps score with some restrictions. The process with highest score will be killed except init.

The Low Memory Killer of the Android behaves a bit different against OOM killer. It classifies processes according to the importance with groups and kills the process in the lowest group. It will make the system to be stable at the view of the end users. For example, the UI Process - foreground process - is the most important process for the end users. So to keep the process live looks more stable than keeping other background processes live.

Enable CONFIG_LOW_MEMORY_KILLER after patching the kernel.

3.1.6 Android Logger


If you enable this feature, you can see some useful information about Android through /dev/log/main. There are three device files on /dev/log such as main, events, radio. The /dev/log/radio file seems to be related with a modem device and ril daemon - rild - on Android system.

When this logger is enabled, the system performance is a bit slower on the system. To use this feature, enable CONFIG_ANDROID_LOGGER.

3.1.7 Android Power


The Android power is for the battery management on devices and some subsystem related with power management like inotify feature on file system. It is not necessary to start up Android through the init(ShellScript) of the Android system. But the runtime binary looks up some files regarding Android power - /sys/android_power/acruire_partial_wake_lock - on starting up Android manually and failed to start up. Enable CONFIG_ANDROID_POWER to use.
- 예전 버전의 문서에서 init은 바이너리로 되어있었는데 쉘스크립트로 바뀌어 있네요. 이전 문서에서 말한 init은 안드로이드 램디스크의 루트 디렉토리 밑에 있는 init 바이너리를 말씀하신 것 같은데, 그 것이 아니고 다른 init인건가요? 아니면 그 init이 쉘 스크립트인 것인가요? -- dasomoli

- 문서를 작성한 m3 버전에서는 binary 였습니다. 다른 분이 shell script로 바꾼 것 같네요. 번역해 주셔서 감사합니다. -- 이광우

- m5 버전에서도 바이너리인 것 같아서요. 그리고 별 말씀을요.^^; -- dasomoli

3.1.8 Panic Timeout


It is not necessary to start up Android on evaluation board. Set CONFIG_PANIC_TIMEOUT with a desired value.

3.2 Android Root File system


Android emulator has 3 basic images on tools/lib/images directory.

  • ramdisk.img
  • system.img
  • userdata.img

ramdisk.img is gziped cpio archive. ramdisk image is very small and contains configuration files, and some executable files such as init and recovery. The init file is not a regular system V init. It is made just for the Android and do special things to start up the Android system.

system.img and userdata.img are VMS Alpha executable. system.img and userdata.img have the contents of /system and /data directory on root file system. They are mapped on NAND devices with yaffs2 file system. /dev/block/mtdblock0 for /system and /dev/block/mtdblock1 for /data.

/system directory has libraries and default system packages (*.apk). /data directory has timezone, cache, and ApiDemos.apk package.

The main services are zygote(/system/bin/app_process), runtime(/system/bin/runtime), and dbus(/system/bin/dbus-daemon). You can see the /etc/init.rc file on the Android ramdisk image.

...zygote {    exec /system/bin/app_process    args {        0 -Xzygote        1 /system/bin        2 --zygote    }    autostart 1}runtime {    exec /system/bin/runtime    autostart 1}...dbus {    exec /system/bin/dbus-daemon    args.0 --system    args.1 --nofork    autostart 1}...

3.3 Licenses of the Android Packages


tools/lib/images/NOTICE contains package lists and licenses for each libraries. The table of the licenses is cited from the presentation by Lim,GeunSik at 2008 Korea Android Summit.

Open Source License
Linux Kernel GPL
NetBSD C Library BSD
DBUS GPL2
OpenBinder (core) GPL2
YAFFS2 GPL
SQLite GPL2
Webkit BSD (including LGPL)
WebCore LGPL
SDL LGPL
SGL Google(Skia)
OpenGL SGI OpenGL (BSD/MPL)


4 Toolchain supporting ARM EABI


The toolchain represents the tools to be used for the system development. It contains C/C++ compiler, linker, libraries, binutils, and etc. The Android kernel and system requires EABI support. So legacy toolchain is not compatible to make the Android system.

4.1 Building toolchain


To make life easier, I used the crosstool-0.43 script (http://www.kegel.com/crosstool/) by Dan Kegel. Unfortunately it is not support to build eabi toolchain, so I applied a glibc 2.5+ nptl build for arm softfloat eabi patch (http://sources.redhat.com/ml/crossgcc/2006-12/msg00076.html) by Khem Raj.

$./arm-softfloat-eabi.sh

If the network is connected, the script will download and build toolchain using gcc 4.1.1 and glibc 2.5.

4.2 Other toolchain


I did not use the codesourcery toolchain, but they said it will work for the building Android system.


5 Kernel


To port the Android on a real hardware is started by Benno (http://benno.id.au), you can see some useful information on his blog. On his blog some pre-compiled static binaries are linked. It is very helpful for debugging Android system. You can also build static build busybox and strace binaries, but it's better to get them and use.

You can get patch file including the differences between the Android kernel and the vanilla kernel with 2.6.23 version. It has all differences between them. So you need to extract parts of them, and make your own patch for your system architecture.

For example, the Android kernel has it's own yaffs file system patch. If you have your own yaffs or some other file systems like jffs2 on your architecture, then you need to remove the yaffs parts of the patch. The goldfish architecture which the Android kernel emulate an ARM architecture on qemu is not necessary part for your architecture. It can be removed.

The Android kernel emulates ARMv5 instructions. So ARM926EJ-S (ARMv5TEJ) will be good to work.

5.1 Patch kernel


Benno played with a NEO1973 device by openmoko. So he made patch files for it. Get the original patch file from http://benno.id.au/blog/2007/11/21/android-neo1973, I used android.diff. It has whole things about goldfish, qemu, yaffs, and Android specific parts.

You can edit and remove the patch file directly. After making patch including binder, android power, android logger, low memory killer except goldfish and qemu specific parts, get vanilla 2.6.23 version Linux kernel and patch it.

If you use a 2.6.24.1 version Linux kernel, some part regarding android power should be fixed accordingly or disabled to work.

5.2 .config


  • Necessary
...CONFIG_PANIC_TIMEOUT=0CONFIG_AEABI=yCONFIG_OABI_COMPAT=yCONFIG_BINDER=yCONFIG_LOW_MEMORY_KILLER=y...

  • Optional
...# CONFIG_ANDROID_GADGET is not set# CONFIG_ANDROID_RAM_CONSOLE is not set# CONFIG_ANDROID_POWER is not set# CONFIG_ANDROID_LOGGER is not set...

6 Root file system


The root file system is composed of three parts such as a primary ramdisk image on ram, a system image on nand dev0 (/dev/block/mtdblock0), and a data image on nand dev1 (/dev/block/mtdblock1). The mtd devices has a yaffs2 file system and each of them has 64 MiB capacity on the Android emulator.

The extracted system and data directories are copied to the real existing NAND device and they are mounted with --bind option to work on a real hardware.

6.1 Get ramdisk image from emulator


1. unpack ramdisk image from tools/lib/images/ramdisk.img
$ gzip -cd ramdisk.img > ramdisk$ cpio -iv -F ramdisk

cpio will extract files and directories on current working directory.

2. the contents list of the ramdisk
datadevetcetc/default.propetc/firmwareetc/firmware/brf6150.binetc/firmware/brf6300.binetc/hcid.confetc/hostsetc/init.gprs-pppdetc/init.rcetc/init.riletc/init.testmenuetc/pppetc/ppp/chap-secretsetc/ppp/ip-downetc/ppp/ip-upetc/qemu-init.shetc/system.confetc/system.detc/system.d/bluez-hcid.confetc/usbd.confinitprocsbinsbin/recoverysyssystemtmpvarvar/run

6.2 Get data and system directory from emulator


To get data and system directory you need a static compiled busybox binary. The compiled binary can be obtained from http://benno.id.au/blog/2007/11/14/android-busybox , or make your own binary.

1. launch the Android emulator

2. push static compiled busybox into emulator
# adb push busybox .

3. launch the Android shell
# adb shell

4. make tarball with busybox
# chmod +x /busybox# busybox tar -c /data.tar /data# busybox tar -c /system.tar /system# exit

5. extract tarball from the emulator
# adb pull /data.tar .# adb pull /system.tar .

Extract command often failed. So you may repeat it again until it has done successfully.

6.3 Integrate the Android system with a existing ramdisk image.


The ramdisk for your architecture can make your work a bit easier. Copy the contents of the Android ramdisk to your own ramdisk except system and data directory. And make just mount point for system and data directory. The mount points will be used later with a bind option. The init binary of the Android ramdisk image is the key binary to start the system and It read a configuration file on /etc/init.rc.

Edit /etc/init.rc and comment out qemu part.

...startup {        ...#       qemu-init {#           exec /etc/qemu-init.sh#       }}...

Make run.sh script. /dev/block/mtdblock5 is a mtd partition on a real NAND device, and it is mounted on /mnt. data and system directories are already copied on mtdblock5. So the script below just shows bind mounting each directory on /. Fix your script according to your board configuration.

#!/bin/shmount -t yaffs /dev/block/mtdblock5 /mntmount --bind /mnt/data   /datamount --bind /mnt/system /system# data folder is owned by system user on emulator. Fix 777 to other.chmod 777 /data#chmod 777 /systemexport PATH=/system/sbin:/system/bin:/sbin/usr/local/binexport LD_LIBRARY_PATH=/system/libexport ANDROID_BOOTLOGO=1export ANDROID_ROOT=/systemexport ANDROID_ASSETS=/system/appexport EXTERNAL_STORAGE=/sdcardexport ANDROID_DATA=/dataexport DRM_CONTENT=/data/drm/content/init &

An optional configuration for touchscreen - TSLib.

...export TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0export TSLIB_TSDEVICE=/dev/input/event1export TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONFFILE=/etc/ts.confexport TSLIB_PLUGINDIR=/lib/tsexport LD_PRELOAD=/lib/libts.so:/lib/ts/pthres.so...

6.4 System and Data directories


The contents of the system and data directories are copied to mtdblock5 already. You should copy your own method. To use it, I chose bind mounting on root directory. Bind mounting is a technique to mount an existing directory with a new mount point.

6.5 Run and Debug


Now the kernel, ramdisk, and data directories - data and system - are ready. It's time to see the red cylon eye. After boot up your integrated system, run the run.sh on root directory.

# cd /# . /android/run.shyaffs: dev is 32505861 name is "mtdblock5"yaffs: passed flags ""yaffs: Attempting MTD mount on 31.5, "mtdblock5"yaffs: auto selecting yaffs2# init: HOW ARE YOU GENTLEMENinit: reading config fileinit: device initinit: mtd partition -1,init: mtd partition 0, "l1boot"init: mtd partition 1, "u-boot"init: mtd partition 2, "params"init: mtd partition 3, "kernel"init: mtd partition 4, "ramdisk"init: mtd partition 5, "rootfs"sh: can't access tty; job control turned off# binder_open(c394bcc8 c3c731a0) (pid 1577) got c3e48000binder_open(c394bcc8 c3cd8dc0) (pid 1616) got c319f000binder_open(c394bcc8 c3cd8ac0) (pid 1673) got c3d10000binder_open(c394bcc8 c3cd8940) (pid 1680) got c0e19000binder_open(c394bcc8 c3cd88c0) (pid 1691) got c2fa0000binder_open(c394bcc8 c3d174a0) (pid 1592) got c25b8000binder_release(c394bcc8 c3cd88c0) (pid 1691) pd c2fa0000#

  • Do not make eac device file on /dev. It is for the audio on qemu. If it exists, the start up sequence will wait forever to finish writing some data to the sound device.
  • Use the Android init binary instead of manual startup. The manual start up will require the android power patch. In that case the start up sequence will access /sys/android_power/acquire_partial_wake_lock and wait.

To debug the Android system, use static compiled strace binary from http://benno.id.au/blog/2007/11/18/android-runtime-strace and run the Android manually.

#!/bin/sh# set environment variables above example.../system/bin/app_process -Xzygote /system/bin --zygote &/system/bin/dbus-daemon --system &/system/bin/runtime

The above example shows manual startup sequence, use strace on run /system/bin/runtime binary.

./strace -ff -F -tt -s 200 -o /tmp/strace runtime

6.6 Screenshots


  • Skipped

7 Application Development


The Android applications use Java syntax and xml layouts, but it is not a Java. Because they use their own virtual machine - dalvik - and compiler for dex file format. And use package named apk such as Home.apk, Phone.apk, ApiDemos.apk and etc.

The apk file is a Zip archive and it has four parts.

  • AndroidManifest.xml
  • classes.dex
  • resources.arsc
  • res directory

The Dex file format is explained on http://www.retrodev.com/android/dexformat.html. And the contents of the files and directories are explained some day by Google. It is not explained currently. We can just guess about it.

The Android SDK will create an *.apk file.

7.1 Install Eclipse IDE



1. Eclipse IDE for Java developer (JDT and WST plugins are included) from http://www.eclipse.org/downloads/


3. ADT (Android Development Tools) with a eclipse plugin including Apache Ant

7.2 Build and Run Sample Applications


1. Open sample projects and build

2. Run sample applications on emulator

7.3 Screenshots


  • Android Platform on Nokia's N810 Product(arm1136jf-s)
    n810.kandroid200805.PNG

  • Android Platform on arm1136jf-S for another CE Product.
    fi.initial_display.jpg
  • invain님이 shot을 올려주셨군요. -- 이광우

8 Epilogue


The Android system seems to be a new kind of a Linux based distribution for a mobile environment like Debian, RedHat, SuSE, and etc. They just use the Linux kernel and a lot of different libraries in the open source world. They offer a software based OpenGL-ES library on a 3D acceleration currently, but they are developing on a hardware accelerated baseband processor for it. The hardware acceleration is necessary for fast UI rendering effects later.

The Android system on the sdk is not a completed one to port on a real hardware, because some device - for example, camera - related libraries and classes are not implemented yet and not opened for users. It seems to be under the development stage. So we would better to wait the Google announces the whole porting kit.

Until then, we should look for the business model with the Android system. It requires a bit high cpu performance, so the carrier vendors will require a cheap baseband processor (RF part) and a multimedia co-processor, because the baseband processor including multimedia features will be very expensive.

9 Links and References

Oracle11G 우분투에 설치하기

\*설치 환경*
OS : Ubuntu 10.10 amd64 server (64비트환경)
Database : Oracle 11g
  • 우분투 설치 후 다른 서버환경 설치보다 우선적으로 작업하는 것을 권장함.

예) 아파치, 톰캣, SVN 등등보다 우선해서 할 것.

  • 서버 환경에선 설치UI가 안떠서 ubuntu-desktop 을 다시 설치했음.

    $sudo apt-get install ubuntu-desktop

(데스크탑 환경 설치하고 언어팩까지 설정하면 매우 오랜 시간동안 설치작업이 진행됨.)

추가로 작업한 것: 서버환경을 쓸 것이므로 웬만한 패키지는 다시 삭제함.(Game, 컴피즈환경 등..)

*설치 시작*

  1. 터미널을 열고 설치에 필요한 기본 시탭틱을 설치한다.

** 오라클을 설치하기 위해 필요한 패키지이다.

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
gcc-4.1.1-52
gcc-c++-4.1.1-52
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0



-- 패키지명은 운영체제마다 약간식 틀리다. 알맞은 패키지를 검색하여 설치해주면 되는 데, 대부분 패키지는 우분투에 설치되어있다.
$ sudo apt-get update
$ sudo apt-get upgrade

-- 설치가 올바르게 되지 않을 경우 하나하나 설치해주는 것도 좋은 방법이다.
$ sudo apt-get install binutils elfutils glibc-2.9-1 gcc libaio1 libaio-dev libgcc1 libstdc++6 libstdc++6-4.3-dev make sysstat lesstif2 lesstif2-dev build-essential rpm libc6 original-awk gawk ksh alien

주의!!! 각 패키지는 개별적으로 설치하지 않을 경우 일괄설치 안되는 경우가 있어 오라클 설치도중 에러가 난다. 일일이 각 패키지를 설치되었는지 확인할것.

$ sudo apt-get install gcc binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5 build-essential

$ sudo apt-get install

$ sudo apt-get install



2. 시스템에 그룹과 오라클 유저를 만든다.

$sudo groupadd oinstall
$sudo groupadd dba
$sudo groupadd nobody
$sudo useradd -m oracle -g oinstall -G dba -s /bin/bash
$sudo passwd oracle



3. 오라클에 필요한 memory와 CPU resources를 위해 커널 파라미터를 수정한다.(메모리와 CPU자원이 충분하지 않으면 오라클 인스턴스가 올라가질 않는다. 물론 설치도 안됨.)
우선 파일 수정을 위해 gedit로 sysctl.conf파일을 연다.

$sudo gedit /etc/sysctl.conf

파일의 제일 밑에 부분에 아래 정보를 복사해서 붙여넣기.

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000



저장하고 파일을 닫는다. 위에서 수정한 sysctl.conf파일은 Ubuntu시스템이 처음 부팅시 한번 읽어들이는 정보이므로 재부팅을 한다. 귀찮으면 모듈을 강제로 내렸다가 올리면 된다.

$sudo /sbin/sysctl -p



마지막으로 시스템에 security의 limits파일에 몇몇 작업을 해야된다.

$sudo vi /etc/security/limits.conf



파일의 제일 밑에 부분에 아래 정보를 복사해서 붙여넣기.

* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536



4. Ubuntu를 레드햇 계열로 속이기? 위한 작업 및 폴더의 권한 설정과 Oracle user의 환경변수 설정 작업을 해야된다.

$sudo ln -s /usr/bin/awk /bin/awk
$sudo ln -s /usr/bin/rpm /bin/rpm
$sudo ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
$sudo ln -s /usr/bin/basename /bin/basename
$sudo mkdir /oracle
$sudo mkdir /oracle/11g
$sudo chown -R oracle:oinstall /oracle
$sudo chmod -R 775 /oracle



환경변수 설정을 위해 etc밑에 profile을 gedit로 연다.

$sudo gedit /etc/profile



파일의 제일 밑에 부분에 아래 정보를 복사해서 붙여넣기.

export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/11g
export ORACLE_SID=ora11
export PATH=$PATH:$ORACLE_HOME/bin



환경변수가 제대로 적용 됬는지를 터미널을 열어서 확인해 본다.

$ su - oracle
Password:
$ echo $ORACLE_BASE
/oracle
$ echo $ORACLE_HOME
/oracle/11g


레드햇 엔터프라이즈 릴리즈 파일을 만든다. - 안해도 된다.
$sudo gedit /etc/redhat-release

파일에 아래 정보를 복사해서 붙여넣기.

Red Hat Enterprise Linux AS release 3 (Taroon)



여기까지해서 필요한 커널 및 환경 변수 설정은 끝났다.

5. 오라클 사이트에서 리눅스용 오라클을 다운로드 하고 압축을 푼다.여기서는 예로 다운로드 받은 파일의 이름은 10201_database_linux32.zip, ubuntu의 유저는 mnbusr로 하겠다.
다운받은 파일의 절대경로는 /home/mnbusr/에 위치한다고 가정한 상태에서 권한 설정 및 오라클 유저로 압축을 푼다.

$sudo chown oracle:oinstall /home/mnbusr/linux.x64_11gR2_database_1of2.zip

$sudo chown oracle:oinstall /home/mnbusr/linux.x64_11gR2_database_2of2.zip
$sudo chmod 775 /home/mnbusr/*.zip
$sudo mv /home/mnbusr/*.zip /home/oracle
$su - oracle
$unzip /home/mnbusr/linux.x64_11gR2_database_1of2.zip

$unzip /home/mnbusr/linux.x64_11gR2_database_2of2.zip
$rm /home/mnbusr/linux.x64_11gR2_database_1of2.zip

$rm /home/mnbusr/linux.x64_11gR2_database_2of2.zip


6. 시스템(Ubuntu)를 재부팅한 후 그놈 세션에서 oracle user로 로그인 한다.
터미널을 실행하고 다음을 명령을 실행해 인스톨을 진행한다.

$/home/oracle/database/runInstaller



7. 설치 화면에서 부터는 Windows에서 설치하는방법과 동일하지만 한가지 주의 해야 될 부분은 SID입력 부분이다. 설치 과정 4에서 환경변수 설정에서 입력한 SID인 ora11을 입력하지 않으면 지금까지 한 작업이 뻘짓이 될 수 있다;;;;
설치가 완료되면 시스템을 재부팅

8. 그놈 세션에서 원래 유저(예를 들면 mnbusr)로 로그인후 터미널을 실행해 etc밑에 oratab파일에서 ora11:/oracle/11g:N부분을 ora11:/oracle/ora11g:Y로 수정한다. 덧붙여 설명하면 orcl11은 인스턴스이고 가운데 부분은 ORACLE_HOME 마지막 부분은 오라클 인스턴스의 자동 실행 여부(Y/N)이다.

$sudo gedit /etc/oratab
orcl10:/oracle/10g:N

이부분을 ...

orcl10:/oracle/10g:Y

요렇게..



9. 터미널에서 오라클 유저로 로그인해 오라클 리스너의 절대 패스를 수정함.

$su - oracle
$vi $ORACLE_HOME/bin/dbstart



vi편집기에서 다음 라인을 찾은 다음

# Set this to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
if [ ! $ORACLE_HOME_LISTNER ] ; then
echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener"
else
LOG=$ORACLE_HOME_LISTNER/listener.log



오라클 리스너의 패스를 수정하고 저장하고 나온다.

ORACLE_HOME_LISTNER=/oracle/10g



10. 오라클을 사용하면 된다...

설치하고 디비 기동 조차 못하면 대략 낭패....
1. 우선 터미널을 열고 오라클 유저로 접속
2. 리스너 스타트
3. dbconsole 스타트
4. 호스트 인증 받기 예) oracle / pass
5. 인스턴트 시작하기 예) sys / pass

su - oracle
pass:

lsnrctl start

emctl start dbconsole

브라우저 열고 http://localhost:1158/em

출처 : http://kekedie.tistory.com/category/Database?page=4

~
Oracle11G 우분투에설치하기


편집하기

REV.0.1 작업중. 2011.04.20

*설치 환경*
OS : Ubuntu 10.10 amd64 server (64비트환경)
Database : Oracle 11g
우분투 설치 후 다른 서버환경 설치보다 우선적으로 작업하는 것을 권장함.

예) 아파치, 톰캣, SVN 등등보다 우선해서 할 것.

서버 환경에선 설치UI가 안떠서 ubuntu-desktop 을 다시 설치했음.

$sudo apt-get install ubuntu-desktop


(데스크탑 환경 설치하고 언어팩까지 설정하면 매우 오랜 시간동안 설치작업이 진행됨.)

추가로 작업한 것: 서버환경을 쓸 것이므로 웬만한 패키지는 다시 삭제함.(Game, 컴피즈환경 등..)

*설치 시작*
1.터미널을 열고 설치에 필요한 기본 시탭틱을 설치한다.

** 오라클을 설치하기 위해 필요한 패키지이다.

binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
gcc-4.1.1-52
gcc-c++-4.1.1-52
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0

-- 패키지명은 운영체제마다 약간식 틀리다. 알맞은 패키지를 검색하여 설치해주면 되는 데, 대부분 패키지는 우분투에 설치되어있다.
$ sudo apt-get update
$ sudo apt-get upgrade

-- 설치가 올바르게 되지 않을 경우 하나하나 설치해주는 것도 좋은 방법이다.
$ sudo apt-get install binutils elfutils glibc-2.9-1 gcc libaio1 libaio-dev libgcc1 libstdc++6 libstdc++6-4.3-dev make sysstat lesstif2 lesstif2-dev build-essential rpm libc6 original-awk gawk ksh alien

주의!!! 각 패키지는 개별적으로 설치하지 않을 경우 일괄설치 안되는 경우가 있어 오라클 설치도중 에러가 난다. 일일이 각 패키지를 설치되었는지 확인할것.


$ sudo apt-get install gcc binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5 build-essential

$ sudo apt-get install

$ sudo apt-get install

2. 시스템에 그룹과 오라클 유저를 만든다.

$sudo groupadd oinstall
$sudo groupadd dba
$sudo groupadd nobody
$sudo useradd -m oracle -g oinstall -G dba -s /bin/bash
$sudo passwd oracle

3. 오라클에 필요한 memory와 CPU resources를 위해 커널 파라미터를 수정한다.(메모리와 CPU자원이 충분하지 않으면 오라클 인스턴스가 올라가질 않는다. 물론 설치도 안됨.)
우선 파일 수정을 위해 gedit로 sysctl.conf파일을 연다.

$sudo gedit /etc/sysctl.conf

파일의 제일 밑에 부분에 아래 정보를 복사해서 붙여넣기.

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000


저장하고 파일을 닫는다. 위에서 수정한 sysctl.conf파일은 Ubuntu시스템이 처음 부팅시 한번 읽어들이는 정보이므로 재부팅을 한다. 귀찮으면 모듈을 강제로 내렸다가 올리면 된다.

$sudo /sbin/sysctl -p

마지막으로 시스템에 security의 limits파일에 몇몇 작업을 해야된다.

$sudo vi /etc/security/limits.conf

파일의 제일 밑에 부분에 아래 정보를 복사해서 붙여넣기.

* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

4. Ubuntu를 레드햇 계열로 속이기? 위한 작업 및 폴더의 권한 설정과 Oracle user의 환경변수 설정 작업을 해야된다.

$sudo ln -s /usr/bin/awk /bin/awk
$sudo ln -s /usr/bin/rpm /bin/rpm
$sudo ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so
$sudo ln -s /usr/bin/basename /bin/basename
$sudo mkdir /oracle
$sudo mkdir /oracle/11g
$sudo chown -R oracle:oinstall /oracle
$sudo chmod -R 775 /oracle

환경변수 설정을 위해 etc밑에 profile을 gedit로 연다.

$sudo gedit /etc/profile

파일의 제일 밑에 부분에 아래 정보를 복사해서 붙여넣기.

export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/11g
export ORACLE_SID=ora11
export PATH=$PATH:$ORACLE_HOME/bin

환경변수가 제대로 적용 됬는지를 터미널을 열어서 확인해 본다.

$ su - oracle
Password:
$ echo $ORACLE_BASE
/oracle
$ echo $ORACLE_HOME
/oracle/11g


레드햇 엔터프라이즈 릴리즈 파일을 만든다. - 안해도 된다.

$sudo gedit /etc/redhat-release

파일에 아래 정보를 복사해서 붙여넣기.

Red Hat Enterprise Linux AS release 3 (Taroon)

여기까지해서 필요한 커널 및 환경 변수 설정은 끝났다.

5. 오라클 사이트에서 리눅스용 오라클을 다운로드 하고 압축을 푼다.여기서는 예로 다운로드 받은 파일의 이름은 10201_database_linux32.zip, ubuntu의 유저는 mnbusr로 하겠다.
다운받은 파일의 절대경로는 /home/mnbusr/에 위치한다고 가정한 상태에서 권한 설정 및 오라클 유저로 압축을 푼다.


$sudo chown oracle:oinstall /home/mnbusr/linux.x64_11gR2_database_1of2.zip

$sudo chown oracle:oinstall /home/mnbusr/linux.x64_11gR2_database_2of2.zip
$sudo chmod 775 /home/mnbusr/*.zip
$sudo mv /home/mnbusr/*.zip /home/oracle
$su - oracle
$unzip /home/mnbusr/linux.x64_11gR2_database_1of2.zip

$unzip /home/mnbusr/linux.x64_11gR2_database_2of2.zip
$rm /home/mnbusr/linux.x64_11gR2_database_1of2.zip

$rm /home/mnbusr/linux.x64_11gR2_database_2of2.zip


6. 시스템(Ubuntu)를 재부팅한 후 그놈 세션에서 oracle user로 로그인 한다.
터미널을 실행하고 다음을 명령을 실행해 인스톨을 진행한다.

$/home/oracle/database/runInstaller

7. 설치 화면에서 부터는 Windows에서 설치하는방법과 동일하지만 한가지 주의 해야 될 부분은 SID입력 부분이다. 설치 과정 4에서 환경변수 설정에서 입력한 SID인 ora11을 입력하지 않으면 지금까지 한 작업이 뻘짓이 될 수 있다;;;;
설치가 완료되면 시스템을 재부팅

8. 그놈 세션에서 원래 유저(예를 들면 mnbusr)로 로그인후 터미널을 실행해 etc밑에 oratab파일에서 ora11:/oracle/11g:N부분을 ora11:/oracle/ora11g:Y로 수정한다. 덧붙여 설명하면 orcl11은 인스턴스이고 가운데 부분은 ORACLE_HOME 마지막 부분은 오라클 인스턴스의 자동 실행 여부(Y/N)이다.


$sudo gedit /etc/oratab
orcl10:/oracle/10g:N

이부분을 ...

orcl10:/oracle/10g:Y

요렇게..

9. 터미널에서 오라클 유저로 로그인해 오라클 리스너의 절대 패스를 수정함.

$su - oracle
$vi $ORACLE_HOME/bin/dbstart

vi편집기에서 다음 라인을 찾은 다음

# Set this to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
if [ ! $ORACLE_HOME_LISTNER ] ; then
echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener"
else
LOG=$ORACLE_HOME_LISTNER/listener.log

오라클 리스너의 패스를 수정하고 저장하고 나온다.

ORACLE_HOME_LISTNER=/oracle/10g

10. 오라클을 사용하면 된다...

설치하고 디비 기동 조차 못하면 대략 낭패....
1. 우선 터미널을 열고 오라클 유저로 접속
2. 리스너 스타트
3. dbconsole 스타트
4. 호스트 인증 받기 예) oracle / pass
5. 인스턴트 시작하기 예) sys / pass

su - oracle
pass:

lsnrctl start

emctl start dbconsole

브라우저 열고 http://localhost:1158/em

출처 : http://kekedie.tistory.com/category/Database?page=4

+ Recent posts