• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

'분류 전체보기'에 해당되는 글 1250건

  • 2010.09.08 Installer 구현 정보 정리 1
  • 2010.09.04 8월 14일에 한 Extream Hour에서 말해주신 나의 첫인상 들.
  • 2010.08.12 아.. 진짜 인터파크 고객센터..
  • 2010.08.12 개인 출판에 대한 제언.
  • 2010.08.12 비스킷에 바라는 점.
  • 2010.08.06 TWAIN 기술 개요 (TWAIN 사용자 인터페이스) 1
  • 2010.08.05 VMWare 7.0에 MacOSX 설치.
  • 2010.08.04 TWAIN 기술 개요(TWAIN의 아키텍처)

Installer 구현 정보 정리

기술자료/개발도구 2010. 9. 8. 20:23

기존 Application이나 Patch등은 별다른 조건 없이 설치 진행이 되었기 때문에, 설치 프로그램의 기본값만으로도 충분하게 패키지화 했다. 하지만, 이번에는 본격적으로 End-User를 향한 제품을 패키지 하는 작업이기 때문에, 그렇게 단순하고 쉽게 패키징을 할 수 없었다.

물론 아래의 처리 방법들은 현재까지 패키징을 하면서 받았던 각종 정보와 설정 값들일 뿐, 원하는 형태로 성공적인 패키지 한 것은 아니다.

단순하게나마 패키지를 할 때 도움이 될 것 같아 기록에 남긴다.

1. NSIS ( Nullsoft Scriptable Install System )

Nullsoft에서 제작한 Installer System 프로그램. 100%에 가깝게 스크립트기반이며, 스크립트로 처리가 불가능한 경우 DLL 등을 이용하여 외부 모듈을 통해 플러그인의 개념처럼  추가할 수 있다. 하지만, 아직 그 부분까지는 접근조차 하지 못했으며, 특히 매 버전마다 변경점 마다 스크립트 수정 작업의 부하가 너무 커서 제작 중 도중에 포기하였다.하지만, 단순하고 직관적으로 패키지를 말때는 상당히 도움이 될 것 같다.

준비물.

  1. NSIS( Nullsoft Scriptable Install System) 컴파일러.
    제일 중요한 부분. 이 제품은 Open Source 라이센스를 따르며 무료로 배포되고 있다.
    http://nsis.sourceforge.net/Main_Page
    에서 Download 부분을 통해 다운 받을 수 있다.
  2. HM NIS Edit
    NSIS의 동작은 모두 Script를 컴파일 한 뒤, 나온 결과물로 동작한다. 즉 Script 파일과 실제 배포할 파일들만 있으면 간단하게 만들 수 있다. 진짜 “메모장” 하나 열고 그 안에서 Text 파일로 된 Script 파일을 구성한 뒤, 컴파일 하면 된다. 하지만, 이제 처음 NSIS를 돌려보시거나, NSIS 개념을 막 잡아가는 초보(필자도 포함)에게는 버겁기 그지 없다. 이를 그나마 많이 편하게 제공하는 UI가 바로 HM NIS Edit 프로그램.
    이 역시 무료이며, 불편함이 없지않아 있지만, 그 작은 불편을 뛰어 넘는 다양한 기능들이 NSIS를 조금은 더 쉽게 다가게 해준다.
    해당하는 프로그램은
    http://hmne.sourceforge.net/
    에서 볼 수 있으며, 다운로드 받아 설치하면 된다.

 

개념을 익히기 좋은 사이트들.

사실 NSIS 는 개념익히는데 상당히 어렵다. 물론 MSI 작성 방법보다는 조금은 더 직관적이고 단순하다. 그러나 작은 개념조차 익히기 어려운 건 사실이며, 대부분의 설명 사이트들은 영어로 되어 있다. 그래도 국내에서 NSIS로 삽질하시던 많은 프로그래머들이 있고 그들의 흔적을 잘만 찾아 댕겨도 의외의 많은 정보들을 얻을 수 있다.

  1. Kipple 사이트
    꿀뷰(HoneyView)라는 이미지 뷰어 프로그램으로 유명세를 타고 있던 분. 이 분이 만든 제품들의 패키지를 NSIS로 했으며, 그에 따라 다양한 기능등를 자체적으로 구성했다. 그래서 그 속에서 묻어 나오는 각종 팁들이나 예제들을 제공한다. 특히 예제로 담은 nsissample.zip 파일은 받드시 받고 그 안의 스크립트 내용을 잘 확인해보록 한다.
    http://www.kippler.com/doc/nsis/
  2. 게으른 엔지니어가 사는법 ~~~~ 사이트.
    NSIS 에는 몇가지 UI가 있는데, 과거 Winamp 시절에 사용한 classic 방법 부터 현재는 MUI2 라는 방식까지 여러가지가 존재한다. 필자의 경우 Windows Installer 3.1 UI랑 비슷하게 나오게 하는 MUI2를 주로 사용하는데 간혹 관련 예제들을 Google에서 찾으면 classic 시절에 짰던 방법으로 많이 나온다. 그래서 이래저래 방황을 많이 했는데, 아래의 사이트에서 많은 도움을 얻었다.
    http://www.cipher.pe.kr/tt/cipher/154?category=6
  3. 그 외..
    http://innara.springnote.com/pages/3828755
    http://jgh0721.tistory.com/category/프로그래밍/NSIS

 

구성 순서.

1. 기본 도구 설치 준비.

제일 먼저 NSIS 컴파일러와 HS NIS Edit를 설치한다.
이 두가지는 반드시 설치해서 진행하도록 한다.

2. 작업 폴더 준비.

인스톨러를 준비하기 위한 적절한 폴더를 하나 마련한다.
보통 이 폴더에 배포하기 위해 필요한 내용도 적절하게 보관하여 정리하도록 한다.
실행에 필요한 각종 내용들 (.NET 기준으로 bin\Debug 혹은 bin\Release 같은 폴더)을 담은 폴더와,
기타 부가적으로 필요한 내용들 ( 인스톨러 커스터마이징을 위한 이미지나 아이콘 등)을 담은 폴더,
그리고 별도로 복사할 때 사용되는 잡스러운 내용을 담은 폴더를 나누어 정리한다.

folderlists

3. 설정 파일 생성 혹은 템플릿 이용.

HM NIS Edit에서 새로 만들기를 하면, 마법사를 이용하여 기본적인 NSIS용 설정파일을 하나 만들어준다. 하지만, 이 방법으로 만들게 되면 결과물이 거의 완전 영어판으로 나오기 때문에,영어 알레르기가 있으신 분은 무척 애매해지는 경우가 발생할 수 있다.
이 경우에는 앞서 언급한 Kipple 님의 홈페이지에서 NSIS 예제를 다운로드 받는 것이다.
그 파일을 그대로 활용해도 된다.  물론 바로 받아와서 사용하려고 하면 컴파일할 때 오류가 발생하는데,
NSIS를 Kipple님이 수정한 버전으로 교체하거나, 아니면 설정 파일에서 오류나는 부분을 주석 처리해도 된다.
여기서는 Kipple님의 설정파일을 기준으로 설명한다.

4. 설치 파일 설정하기.

My_CopyFile 라는 함수를 찾는다. Ctrl + F를 눌러 저 Text로 찾으면 된다.
다른 부분은 그대로 두면 되고, SeachOutPath와 File 이라는 명령어가 있는 부분을 대거 수정한다.

filelist1

설치 결과물를 잘 고민하도록 하자. 만일 아래와 같은 형태로 구성하고 싶은 경우라고 가정을 하자.
filelist2

Program Files 밑에 Easy Connect 라면, 일단 그 부분은 그대로 두고,
그 폴더 안에 복사될 파일들을 File 이라는 명령을 사용해 넣도록 하자.
지금 설치될 파일은 모두 Binaries 폴더에 있으니 그 경로의 파일들을 나열하면 된다.

File ".\Binary\bin\Debug\\DevExpress.XtraTreeList.v10.1.xml"
File ".\Binary\bin\Debug\\DevExpress.XtraTreeList.v10.1.dll"
File ".\Binary\bin\Debug\DevExpress.XtraRichEdit.v10.1.xml"
File ".\Binary\bin\Debug\DevExpress.XtraRichEdit.v10.1.dll"
File ".\Binary\bin\Debug\DevExpress.XtraPivotGrid.v10.1.xml"
…………

자 다음은 Cur 부분. 일단 File 이 쭉 나열된 목록들 맨 끝에 다음과 같은 줄을 넣는다.

SetOutPath "$INSTDIR\Cur"

그리고 Cur 폴더에 들어갈 파일들을 위의 FILE 처럼 쭉 아래로 나열한다.

원리는 간단하다 SetOutPath 라는 것을 이용해 폴더를 구축한다. 여기서 시작점이 바로 "$INSTDIR"이 된다.
그 하위에는 당연히 \ 가 붙고 그 하위에 폴더를 만들면 된다.

5. 조건 별로 설치되어야 할 파일 설정.

지금 배포할 응용 프로그램은 .NET Framework 2.0 을 기반으로 구성되어 있다.
그러므로 반드시 미리 .NET Framework 2.0이 설치되어 있어야 하는데, 이를 체크한 뒤에 해당하는 프로그램이 설치되어 있지 않으면 설치해야 할 것이다.
아래의 코드로직을 설명하기 전에, 찾는 방법을 간단하게 설명하면 아래와 같다.

  1. 레지스트리에서 HKey_Local_Machine\SOFTWARE\Microsoft\.NETFramework 부분의 키를 따라들어간다.
  2. 키 안에 값들 중 InstallRoot 라는 항목을 열어 본다.
  3. 그 안의 값에 맨 뒤에 .NET 버전을 붙여본다.
    보통 .NET 2.0 이 설치되어 있다면 "C:\Windows\Microsoft.NET\Framework\2.0.50727" 라는 폴더가 있고, 그 안에 파일들이 있다.
  4. 위의 경로에 파일이 있는지 확인한다.

위의 단계에서 1 부분에서 오류가 있다면, 즉 레지스트리에 값이 없다면 .NET Framework가 설치되어 있지 않다는 의미. 그러므로 .NET Framework 2.0 을 그냥 설치하면 된다. 만일 이 부분이 있다면 .NET Framework 가 설치된 폴더에 파일들이 있는지 확인한다. ( Windows 설치 폴더가 생뚱 맞은데일 수도 있다. - E:\Windows 등등 ). 만일 파일들이 없다면 다른 .NET Framework 는 설치되어 있지만, 2.0은 설치되어 있지 않다는 것이다.

이런 로직으로 찾아보도록 한다.

제일 먼저 .NET Framework 가 설치되어 있는지 아닌지 여부를 저장하기 위한 전역 변수를 하나 설정한다.

Var IsHadNetFramework20

이 변수에 "t"가 들어 있으면 설치되어 있는것이고, 비어 있으면 설치되지 않은 것으로 정한다.

그리고 난 뒤, 체크하는 로직을 위한 Function을 만든다.

Function CheckAlreayInstalledSolutions

    ; .NET Framework 2.0 설치 여부 체크
   ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\.NETFramework" "InstallRoot"
   StrCpy $IsHadNetFramework20 ""
   StrCmp $R0 "" notFound foundIt

   foundIt:
           IfFileExists "$R0\v2.0.50727\*.*" VersionFound notFound
   VersionFound :
           StrCpy $IsHadNetFramework20 "t"
   notFound:


FunctionEnd

함수는 Function {이름} 으로 시작해서 FunctionEnd 로 끝난다.
그 안에 필요한 로직을 넣으면 된다.

일단 한 줄 씩 끄집어 보도록 하자. 

함수의 맨처음 줄은 ";" 가 맨 앞에 붙어 있는데, 주석이다. "#" 을 써도 된다.

ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\.NETFramework" "InstallRoot"

ReadRegStr은 특정 레지스트리 에서 값을 가져오는 것이다.
HKLM은 HKey Local Manchine을 기준으로 "SOFTWARE\Microsoft\.NETFramework" 에서 "InstallRoot" 라는 곳에서 문자열을 읽어온다. 이렇게 읽어온 문자열은 $R0 이라는 임시변수에 저장한다는 것이다.

StrCpy $IsHadNetFramework20 ""

별다른 의미는 없고 전역 변수로 설정한 변수를 초기화 하는 것이다. 그를 위해서 StrCpy라는 명령을 썼는데, 다른게 아니고 바로 문자열 복사같은 것이다. "" 를 복사했으니 완전 빈 변수가 되었다고 보면 된다.

StrCmp $R0 "" notFound foundIt

이 부분 부터 암호화의 느낌을 받은 문장. 다른 의미는 아니고 $R0 과 "" 를 비교한다는 것이다.
그 결과에 따라서 만일 같으면 notFound로 같지 않으면 foundIt 으로 이동한다는 의미.
굳이 Basic 스타일로 번역하면..

if $R0 == "" 
Then 
  Goto notFound
Else
  Goto foundIt

이 NSIS의 스크립트에는 IF라는 개념이 없는데 그와 유사한 로직으로 사용하는 것이 바로 이 StrCmp.
이 것을 활용하는 것으로 보면 된다.

foundIt:

암호화에 일조하는 부분인데, 바로 라벨이다. 즉 goto 해서 이동할 라벨을 의미하는 것.

   IfFileExists "$R0\v2.0.50727\*.*" VersionFound notFound

왠지 IF 스러운 내용인데, 이 If 는 여러가지로 활용가능한 If 가 아니라, 오로지 파일이 있는지 여부를 확인하기 위한 로직이다. .NET 2.0 파일들이 있는지 확인한다. 만일 파일들이 있다면 VerisonFound로 goto 하고 없다면 notFound 로 goto 한다.

위의 로직에서는 Check 하는 것이므로, 이젠 설치하는 로직을 만들도록 하자.

Function InstallNETFramework20

; .NET Framework 2.0이 설치되어 있지 않으면 설치
   StrCmp $IsHadNetFramework20 "t" DoInstllDotNet PassInstall
   DoInstllDotNet:
       DetailPrint "Install .NET Framework 2.0"
       ExecWait '".\AddonPackage\installdotnet.cmd"' $1
       SetRebootFlag true
       Sleep 20000
    PassInstall:

FunctionEnd

위에서 언급안된 부분을 설명하도록 한다.
DoInstallDotNet 이라는 라벨이 있는 부분을 보도록 한다.

DetailPrint "Install .NET Framework 2.0"

다른 의미는 없고 인스톨 설명 줄에 "Install .NET Framework 2.0"를 출력하는 것 뿐이다. 설치 화면 중에 지금 무엇이 설치되고 있는지 설명을 출력되는 창에 보이는 문구라고 보면 된다.

ExecWait '".\AddonPackage\installdotnet.cmd"' $1

이 부분이 중요한데, '".\AddonPackage\installdotnet.cmd"' 라는 문자을 Shell을 써서 실행한다는 의미이다. 단 실행은 하는데, 단지 실행이 완전히 종료될 때까지 대기를 하겠다는 의미이다. 그리고 최종적으로 실행 결과를 $1에 출력하겠다는 것이다. 기다릴 필요가 없는 경우에는 Exec 를 쓰면 된다.

SetRebootFlag true

일종의 옵션인데, 설치 후 맨 마지막에 Reboot 하겠다는 의미이다. 종종 설치 프로그램에서도 특정 프로그램을 설치한 뒤 자동으로 재시작하는 경우를 많이 보는데, 바로 그럴 때 사용하는 옵션이다. 만일 .NET을 설치하지 않는 경우에는 Reboot를 할 필요가 없으니, 설치할 때만 이 옵션을 true로 설정하는 것이다.

Sleep 20000

설치 중에 다른 프로그램을 설치하게 되면 HDD의 Access Time이라는 것이 있어서, 약간의 대기가 필요할 수 있다.
여기서는 20초 정도로 설정했다. 1/1000 초이므로 1000이 1초. 즉 20초 대기라는 의미.

 

일단 설치되어 있는지 여부를 체크하는 함수와 그 체크한 결과 값을 기준으로 설치하는 로직을 담은 함수를 제작했다.
이제 이 함수를 호출하는 로직을 넣어보도록 한다.

먼저 체크.

설치하기 전에 맨 처음 부분에서 실행한다.
윈도우의 EventHandler 같은 기능들을 제공하는데, 그 중 인스톨러 시작할 때 걸리는 함수는 이것이다.

Function .onInit
     ………
FunctionEnd

저 함수 안에 다음과 같음 문장을 넣는다.

Call CheckAlreayInstalledSolutions

 

이제 마지막으로 남은 것은 설치하는 함수.
설치할 때 넣어주거나, 아예 시작할 때 넣어도 된다. 여기서는 설치할 때 넣을 수 있도록,
앞서 보여준 My_CopyFile  라는 함수 안에다가 다음과 같은 문장을 넣는다.

Call InstallNETFramework20

 

6.사용자 정의 화면 넣기.

사용자 정의 페이지를 넣으려면 MUI2 에서 제공하는 페이지 적용하는 방법부터 확인해야 한다.

pages

대략 보면 알겠지만, "!insertmacro" 라는 키워드를 이용해 MUI_PAGE_ 로 시작하는 페이지들을 나열한다.
바로 원하는 페이지를 넣는 방법이다. 이 방법은 MUI2 에서 만들어진 화면을 끼워넣는 것으로써,
저 넣는 순서를 바꾸면 실제 나오는 화면이 순서도 바뀌게 된다. 그리고 뒤쪽에 MUI_UPAGE는 언인스톨 할 때 보여주는 페이지들이다.

사용자 정의 화면을 만드는 방법은 다음과 같다.

  1. UI를 표시하는 ini 파일을 생성한다.
    물론 텍스트 파일 편집기로 ini 파일을 만들어도 되지만, HM NIS Edit 도구를 써서 만들도록 한다.
    만드는 방법은 파일(F) -> 인스톨 옵션 파일 만들기 를 선택한다. 그러면 다음과 같은 UI 도구가 나오는데,
    원하는 형태의 UI를 구성한다.
    custompage1
    적당한 UI를 넣고 설정을 한 뒤, 저장하면 ini 파일이 만들어진다.
  2. 만들어진 ini 파일을  스크립트 파일 내에서 등록해줘야 한다.
    먼저 스크립트 소스의 상단에 다음과 같은 줄을 포함한다.

    ReserveFile ".\qlmscr.ini"

  3. .onInit 함수 - 초기화 함수 - 에 다음과 같은 줄을 넣는다.

    !insertmacro INSTALLOPTIONS_EXTRACT_AS ".\qlmscr.ini" "qlmscr.ini"

    ini 파일의 내용을 미리 분석해서 이름을 정해 놓는 것이다. 즉 .\qlmscr.ini 라는 의미는 스크립트가 담긴 폴더위치의 qlmscr.ini를 분석한 뒤 이제 이름을 "qlmscr.ini" 로 하겠다는 것이다. 이제 이 화면에 대한 아이디는 바로 "qlmscr.ini" 가 되는 것이다.

    사실 ini 파일은 NSIS 가 설치된 폴더 아래에 있는 Plugin에 복사해서 사용하는게 일반적인 것 같다.
    하지만, ini 파일을 영구히 다른데서 쓸 예정이 아니라면, 스크립트 파일이 있는 위치에 ini 파일을 위치시켜 놓고, 위와 같은 줄을 포함해 놓으면 좋다.
  4. 위 쪽에 페이지 순서를 넣는 부분 처럼 Page custom 부분을 만들어 넣는다.
    여기서 Page custom을 만들 때 뒷부분에 다음과 같은 항목들이 들어가야 된다.
    Page custom {페이지생성용 함수} {페이지내 입력값 확인용 함수}

    예를 들면 이렇게 넣는다.

    Page custom CreateCheckUserInfo ValidateCheckUserInfo

    위와 같이 만들었으면 CreateCheckUserInfo 라는 함수와 ValidateCheckUserInfo 라는 함수도 덩달아 만든다.
  5. 생성용 함수로 들어가 다음과 같은 줄을 포함시킨다.

    !insertmacro MUI_HEADER_TEXT 'User Information' 'Input your information and serial key for authorizing this application'
    !insertmacro INSTALLOPTIONS_DISPLAY "qlmscr.ini"

    MUI_HEADER_TEXT 라는 것을 !insertmacro 해서 넣었는데, 이 부분이 현재 사용자 정의로 만든 창의 제목줄과 설명 줄 내용을 넣는 부분이다. 적당한 제목과 설명을 넣으면 된다.

    다음에 있는 INSTALLOPTIONS_DISPLY "qlmscr.ini" 부분은 qlmscr.ini 라고 정의된 사용자 정의 화면을 띄우는 작업이다. qlmscr.ini 는 앞서 .onInit 함수 안에서 설정한 그 이름이다. 즉 화면 아이디 같은 것. 즉 저 화면을 띄우겠다는 의미가 되는 것이다.

    만일 화면 안의 특정 요소들에서 값을 빼와야 되는 경우가 있다. 예를 들어 문자열을 입력받을 때 사용되는 텍스트 박스 같은 것이 있다면, 그 ID와 변수를 연결한다. 이 때 사용되는 문구가 다음과 같은 것이다.

    !insertmacro INSTALLOPTIONS_WRITE "qlmscr.ini" "Field 1" "State" "$UserName"

    번역하자면, "qlmscr.ini" 화면에 있는 "Field 1" 라는 컨트롤에서 속성 값 중, "State" 부분의 속성값을 $UserName 이라는 변수에 넣는다는 것이다. 이 때 주의할 점은 모든 값들 정보에 " " 가 들어간다.

    예를 들면 아래와 같은 모습이 되는 것이다.
    !insertmacro INSTALLOPTIONS_WRITE "qlmscr.ini" "Field 1" "State" "$UserName"
    !insertmacro INSTALLOPTIONS_WRITE "qlmscr.ini" "Field 2" "State" "$UserCompany"

 

일단 NSIS 로 인스톨러를 구성하면서 막혔던 부분에 대한 설명을 모두 담은 것 같다.
아직은 이 NSIS 라는 도구에 대한 학습이 부족하고, 더욱이 버젼별로 나누어 만드는 방법을 자동화 하는 방법을 아직 못찾고 있어서 현재로는 더 이상의 파악은 어려운 상태이다.

나중에 시간적인 여유가 되면 이 NSIS 라는 부분을 체크하고 인스톨러 답게 만들려고 한다.

여기까지 정리.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

8월 14일에 한 Extream Hour에서 말해주신 나의 첫인상 들.

잡글 2010. 9. 4. 19:09

2그룹으로 나누어 8분 정도가 나에 대한 첫인상에 대해, 그것도 긍정적인 부분에 대해서만 언급한 내용이다.

말씀해주신 각종 첫인상들을 듣고 있으면 나름 즐겁고, 내가 몰랐던 다른 모습을 돌아보게 되었다. Agree 하는 부분도 그렇지 않은 부분도 있지만, 그렇지 않더라도, 그 부분에 대해서 다시 생각하면서 스스로를 고칠 수 있는 또 다른 계기가 된것도 사실이다.

같은 조에세 나왔던 내용들을 내 나름대로 메모를 했고, 그 메모한 내용은 아래와 같다.

  1. 같이 있으면서 대화를 하면 재미있게 해줄 것 같다.
  2. 업무를 맡게 되면 고집스럽게 진행할 것 같다.
  3. 고민 상담 같은 것을 잘 받아 줄 것 같다.
  4. 의외로 식도락을 즐길 것 같다.
  5. 리더쉽이 있어 사람들을 이끌 것 같다.
  6. 프로그래밍에 소질이 있을 것 같다.
  7. 털털하게 넉살 좋게 생활할 것 같다.
  8. 요리를 잘할 것 같다.
  9. 유머감각이 있을 것 같다.
  10. 상당히 사소한 것으로도 잘 웃을 것 같다.
  11. 특정 취미에 매니악(오타쿠)의 성향이 있을 것 같다.
  12. 새로운 환경에 적응을 잘 할 것 같다.
  13. 낙천적으로 생각하며, 긍정적으로 바라볼 것 같다.

나와 이런 저런 관계를 맺고 나름 관찰하신 분들이나, 나 스스로를 바라볼때, 대략 절반정도, 내 성향을 나타낸 것 같다. 그리고 일본 사람처럼 오모테(겉모습),혼네(속마음)이 다르기 때문에, 오모테 부분을 이야기하는 부분도 없지 않다. 하지만, 그런 부분도 나의 장점처럼 받아들이면서 미처 그렇지 않은 부분도 수정하여 최대한 위에서 언급된 장점들을 스스로의 장점으로 만드는 것도 나쁠 것 같지는 않다.

이번 Extream Hour에서 건진 나름대로의 성과라고나 할까?

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

아.. 진짜 인터파크 고객센터..

잡글 2010. 8. 12. 14:22

오늘 비스킷 관련 건의 3건과 아이디어 1건 전달하고 난 뒤..
아일랜드 4권 문제로 1:1 문의 사항을 올렸는데..그 답변

내가 위에 내용을 대략 화가 난 상태여서… 제대로 안 쓴 점이 있긴 하지만…
인터파크 도서 관련 1:1 할 때, 카테고리와 구입한 책의 종류를 선택하는 창이 아래 처럼 나타나게 된다.

즉, 고객이 어떤 것을 선택해서 입력을 하던 말던, 고객센터에서는 저런 카테고리 따윈 보지도 확인하지도 않는다는 답변. 즉 고객이 무엇을 선택하든 다 씹고 들어간다는 말.
즉 카테고리는 그냥 아무거나 선택하고 대충 말로 잘 쓰란 말이라는 것이다.

그럼 왜 저런 복잡한 프로세스를 만든 것인지.. 그 의도가 너무 불량해 보인다.
왜냐면 2Step에 있는 조회버튼을 한번이라도 클릭하지 않으면, 입력 조차 안된다.
진짜.. 답답한 짓거리.

또 무슨 답변이 쳐 나올지 모르겠다.일단 다음과 같이 더 써서 보내버렸다.

지금 비스킷을 통해서 구입한 아일랜드 4권이라는 책 문제라구요.
아니 그러면 위의 주문 상품명은 왜 입력하게 하는지요?
그리고 구체적으로 몇페이지의 무엇이 문제가 있는지 일일히 말해줘야 하나요?
그럼 내가 종이책을 다시 사서 봐서 일일히 비교해보시라는 말인가요?
무슨 답변이 그 모양입니까?
문제가 있다면 문제가 있는지 아닌지 체크는 안해보고,
자세한 내용이 없어서라뇨?
나.. 원.. 이러니까.. 지금까지 E-Book 파일 오류 수정이 제대로 안되는 거였군요.
하하.. 어이가 없네.

 

뭐라 답변을 할지 심히 궁금할 따름이다!

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

개인 출판에 대한 제언.

잡글 2010. 8. 12. 13:54

예전에도 비슷한 글을 쓴 적이 있습니다만.. 뭐 그건 미래를 이렇게 했으면 좋겠다는 그냥 단순한 소원이였고..
좀 구체적인 형태로 제시하고 싶은 아이디어 같은 것입니다.

사실 개인 출판하는 컨텐츠는 출판사에서 직접  제시하는 컨텐츠와는 다른게 사실입니다.
개인이 자신의 글에 대해 알리는 작업은 그렇게 쉽지가 않죠. 출판사 내에서는 자체적인 홍보팀이 있어,
각 서점에 마케팅이나, 신문 등의 광고들을 하게 되고, 작가와 책 관련 기자들과의 연계등등을 수행하지만,
개인이 위와 같이 한다는 건 사실 무리라고 봅니다.

그래서 인터넷이라는 문화를 통해 무료에 가까운 게시판을 통해 게시를 하고, 그 글을 소비하게 하고,
네임 벨류를 높이는데 그치고 있죠. 즉 무료로 보여줄테니, 평가해보고, 가치가 있으면,
나(해당 글의 필자)를 알아봐주고, 나중에 나오는 책들도 소비해달라.. 라는 것입니다.
하지만, 위의 문제는 결국 컨텐츠의 무료화라는 비상식적인 고정관념만 세우게 되고,
결국 양질의 컨텐츠 생산을 하기 위한 최소한의 벌이 조차 되지 않고 있는게 현실입니다.
이제 겨우 소설가로써의 첫발을 딛는 사람들이야, 벌이보다 네임 벨류 높이기에 여념이 없어,
위와 같은 내용에 대해서 스스로 감수하고 있다고는 하지만, 정작 자신의 위치가 잡혔을때는
자신의 책들이 모두 인터넷을 통해 공유되고 있어, 최소한의 밥벌이 조차 어려운게 사실입니다.
그러니 재미있는 이야기를 가진 사람도 결국 입을 닫고 마는 시대가 되버리고 마는 것이죠.
그래서 이런 E-Book을 통한 개인 출판업이 발달되기를 간절히 빌고 있죠.

그런데, 소비자의 입장으로 돌아가보죠.
소비자들은 일단 컨텐츠의 사정은 이차 문제입니다. 소비해야 될 컨텐츠를 돈 주고 사보게 되는데,
그 금전적인 부담은 당연히 소비가가 안고 가는 숙제가 되게 되죠.
책 소비량이 광적인 레벨이거나, 신 귀족 레벨의 경제사정을 갖지 않다면, 무차별적인 컨텐츠 사보기는 어렵습니다.
결국 소비자는 광고나, 오프라인을 통해 직접 본 책 외에는 구입해서 사보기를 꺼려한다는 것이죠.

이 부분에 대한 절충안을 제안하려 합니다.

먼저 최초 올라가게 되는 컨텐츠의 작가와 협의를 먼저 했으면 좋겠습니다.
1권당 얼마로 하고 싶나. 라는 것이죠. 권당 2000원~5000원 사이로 정하는게 좋겠죠.
그리고, 실제로는 일정 단위로 나누어 가격을 낮게 책정하는 것입니다.
1~100권까지는 500원, 100권~500권까지는 1000원, 500권~만권은 1500원,
만권~ 무한대는 원하는 가격 이런식으로요.
즉 인기있으면 제값을 받고 파는 것이고,
인기가 없으면 낮은 가격으로 소비자 접근 관문 레벨을 낮추는 것입니다.

물론 이 시스템에 헛점이 없는 것이 아닙니다.
뭐 500권까지 아는 사람들을 통해 억지로 구매하게 끔해서 가격을 올릴 수도 있겠죠.
하지만, 이런 부분은 다듬어 보면 다양한 방법이 제시되지 않을까요?

또, 각 책에 대한 평을 저자가 쓰던, 읽었던 독자가 쓰던 그들이 각자 쓰게 하고,
나름 그 책에 대한 토론을 하게 끔 하는 것이죠.

평이 너무 좋으면 E-Book 10만권이도 생기지 않을까요?
혹은 종이 책으로 한정판도 만들 수 있는 기회도 되구요.

 

능력있고, 재치있지만, 가난한 이름없는 소설가들의 문턱을 최대한 낮추어
그들의 이야기를 끌어내고, 읽고 소비하는 올바른 문화가 제발 정착되었으면 합니다.
Offline 출판사는 이런 역할을 하기에는 돈이 너무 없다는게 현실이구요.
그래서 이런 갭을 인터파크가 좀 밀어주었으면 하구요.

 

일단… 트위터를 통해 이 글도 제언을 해보겠지만…
뭐 필터되어 사라질 수도 있겠지만…(최소한 제 블로그가 망하지 않는한 이 글은 계속 있겠네요.)

여튼 좀 잘 좀 되었으면 좋겠네요.
이번 개인 출판 사업관련 한 이벤트도 단발성으로 끝나지 않았으면 하는 바램입니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

비스킷에 바라는 점.

잡글 2010. 8. 12. 13:29

전에도 건의식으로 짧게 짧게 올렸는데, 트위터의 속성상, 이전 글 내용 찾아보기란 어려울 것 같아서, 아예 제 블로그에다 씁니다. 무려 40만원 조금 못 미치는 가격에 구입한 E-Book만, 대략 10여만원어치 되는 것 같습니다.
제 여친님께 걸리면 – 아 이미 이 글을 볼 수도 있으니 걸렸군요 – 맞겠지만 여튼 그렇습니다.
그러다 보니, 나름 애착과 불만이 어울어져 있는 상황은 이해하시리라 봅니다.
물론 이번 새로운 업데이트로 많은 점이 나아졌지만, 그래도 불만은 여전하기 때문에, 적습니다.
비스킷을 위한 다음 기획을 하시거나, 유지보수 중이라면 꼭 한번은 체크해주셨으면 합니다.

1. 수많은 도서 정리 불가 문제

제가 E-Book을 받은게 의외로 많아지고 있습니다. 7월 중순까지 진행했던 무료도서들도 그렇고, 시리즈로 된 만화책 등등. 그런데, 이 수많은 책들이 비스킷 매니저에 뜨면 가관입니다. 너무 많아서 책 이름별로 소트도 하고, 하지만, 역시 무리. 제가 볼 때는 이 책들을 분류할 수 있는 책꽂이 개념이 여기도 들어가야 될 것 같습니다. 비스킷 본체에는 있지만, 제가 구매했던 E-Book들에 대한 배려가 전혀 없으니, 책들을 넣을 때 애매하더군요.

좀 정리할 수 있도록 폴더라든가, 카테고리라든가, 좀 세분화 해서 제가 원하는 책을 선택할 수 있게 해줬으면 합니다.
다시 정리하면 비스킷 본체가 아닙니다. 제가 구매한 내역을 말하는 겁니다.
그리고 위의 카테고리가 “전체보기”, “신문”, “사전”, “다운가능한 목록” 뿐인데, 만일 10권 정도면야.. 뭐 그냥 그냥 하신다고 하겠지만,
저 처럼 300여권의 (신문, 잡지 포함) 문서를 담아보세요..
그리고 원하는 책 한번 찾아서 넣어보시고.. 답하세요.. 제발!!!!

2. 책 이름 문제.

아마 책 등록할 때.. 시리즈 책을 E-Book으로 보시지 않고, 단지 출판사가 준 대로 그래도 등록하시는 것 같은데요.
오락소설이나, 만화 보시면 1, 2, 3, 4, 이런식으로 카운트가 붙죠.. 만일 10권이 넘어서면, 11, 12, 13, 이렇게 넘어가죠. 예들 들어보죠. 강호 패도기가 있습니다. 강호 패도기 1권 다음에 당연히 강호 패도기 2권이 보여야 겠죠?
그러나 실제로 비스킷 매니저나, 비스킷 본체에서 강호 패도기를 1~20권까지 넣으면 어떻게 보이시나요?
1, 11, 12, 13, 14, … 2, 3, …., 9, 20 , 21..

넣어보세요. 제발. 저처럼. 실제 사용하는 사람처럼 넣고, 그 불편함을 온몸으로 느껴보세요.
(전 사과의 말씀을 듣기 위한게 아니고, 제발 개선을 해달라고 애원, 구걸하는 겁니다. –_-;;; )
아아, 뭐 저따위 불편함은 그냥 감수하세요.. 하실 수 있겠지만, 저런 시리즈 책을 한 3~4개 세트로 가져보세요.
환장합니다.

물론 책 자체의 이름에 대한 정책이나 기타 제한 요건이 있겠지만, 좀 전산을 위해서 001, 002 이런 식으로 책 카운트를 해주시거나, 아니면 Sort(정렬)할 때 좀 제대로 나오게 해주시는 새로운 획기적인 방법을 모색하거나, 여튼 좀 개선을 바라는 마음 뿐입니다.

 

3. 다음 책 읽기.

네. 이번에도 시리즈 물을 읽을 때 이야기 입니다.
1권 읽고 2권 읽죠. 자 그럴때, 어떻게 액션을 하시나요? 책 맨끝까지 가서, Back 버튼 누르면 서재로 나옵니다. 그 다음책을 고르죠. 2권을 읽습니다…. 다시…책 맨 끝까지 가서, Back 버튼 눌러 서재로 나와 3권을 고릅니다.
긴 소설인 경우야.. 그렇다 칩니다. 만화책인 경우 세세한 글을 전부 읽는게 아니라면 대략 읽는데 30분.. 다음글.. 30분.. 다음책 30분.. 해보세요. 과연 저 위의 Process가 옳은지?

제가 바라는 것은 다음 페이지를 눌렀을 때 더 이상 없는 경우, 시리즈라면 다음 책으로 연결해주었으면 하는 것입니다. 무료로 배포되는 동영상 보기 프로그램 같은 경우 유사 파일 명에 대해서 자동으로 리스트업을 해서, 다음 파일을 보여줍니다. ( 이 문제는 2번 문제에 연결되니, 사실 2번이 해결되야 해결되겠군요). 그렇게 안된다면, ISBN 등을 활용해서 다음 책을 자동으로 연결해주시던가요.
자동으로 다음 책만 되면 좀 편하겠군요.

 

4. 잘못된 E-Book 파일 체크 및 변경 파일 알림

오늘 새벽에 올리기는 했습니다만, 아일랜드 4권이 깨졌더군요. 맨 뒤쪽 페이지가 더 이상 없습니다. 여튼, 그 때 문득 떠오른 생각입니다. 파일이 깨진 것은 아닌지, 잘못된 파일이 아닌지라고….
그래서 파일을 3G가 되었던, 비스킷 매니저를 통해서든, 다운로드 받으면 제대로된 파일인지 확인좀 했으면 합니다.
(물론 하셨으리라 짐작은 하지만…) 그리고 위의 오류가 난 책을 수정하면 그 책이 수정되었음을 바로 알려주시면 좋겠습니다. 메일이 되었던, SMS가 되었던, 비스킷이 되었던, 비스킷 매니저가 되었던..
그 때, 변경되거나, 잘못된 E-Book의 체크를 위한 로직이 필요하다는 겁니다.
그리고 수정되거나 변경되었으면 그 내용을 책 구매자에게 알려주시면 좋겠다는 겁니다.

파본 레벨이 아닌 거의 책 내용이 덩어리 채로 잘못 박히는 거나, 책이 덩그라니 짤려서 뒷내용이 없거나 하는 거…
좀 빨리 좀 수정 좀 해주세요. 거 작가에게 다시 쓰라는 것도, 다시 그리라는 게 아닌, 전자 책 내용을 수정하는 것인데, 이렇게 반응 속도가 느리면 어떻게 하려는지..
무료 책이면 군소리 안 하겠지만, 돈 주고 산 책들이 이러면 좀 그런거 아닌가요?

 

5. 3G Off 기능.

이건 제가 내내 언급한 내용인데, 사실 기술적인 문제인지, 정책적인 문제인지.. 계속 묻어두려고 하시는 것 같습니다.
비스킷 들고 외국에 출장 나가신 적 있으세요? 가까운 일본에서 LGT에 접속하려고 하는 비스킷을 바라보시면 어떤 느낌이신가요? 흠.. 혹시 비스킷은 국내 전용이니, 외국 나가시는 분들은 고려사항외입니다.. 라고 하실런지..

밧데리 용량. 이거 부족해 보이는 것 같지는 않습니다. 하지만, 책만 보려는 사람에게 쓸데없는 3G 통신은 아니라고 봅니다. 그걸 사용자에게 선택권을 주셨으면 합니다. 완존 기계치들의 어이없는 실수를 막기 위해서라고 하신다면, 최소한 그 옵션을 쓰시려면 암호를 입력하게 해주셔도 좋겠습니다. 여튼, 사용자가 옵션에서 끌 수 있게 해주세요. 외국이나, LGT 연결이 잘 안되는 장소로 나가시는 분들이 있는 경우가 많은 경우 3G 옵션은 이거 완전히 배터리 입장에서는 짐이 될 수 밖에 없는 존재라는 것입니다.
뭐 내부적으로 접속이 안될 시 끊는다.. 밧데리 소모 적다하지만, 애시당초 시도조차 안하는 것만 못하지 않을까 싶습니다. 시도 하는데, 필요한 밧데리 소모는 짐작이지만, 켜고, 레디시키고, 접속시도하고, 타임아웃 기다리는.. 이 짧은 타임 동안 사용하는 전력양이 쌓이면 무시하긴 그렇지 않을까 싶습니다.

어쨌던 사용자가 직접 3G 자체를 무효화 시키는 기능이 있었으면 합니다.

 

 

지금까지 쓴 이 글이 과연 제대로 전달될지는 모르겠습니다만..일단 전달 합니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

TWAIN 기술 개요 (TWAIN 사용자 인터페이스)

기술자료/ETC 2010. 8. 6. 09:56
원본 문서 : http://www.twain.org/docs/TWAIN_2_1_Spec.pdf
Chapter 2. Technical Overview - TWAIN User Interface

응용 프로그램이 TWAIN을 이용하여 데이터를 취득할 때, 응용 프로그램을 사용하는 사람을 기준으로 바라보는 취득하기 위한 절차는 다음과 같은 세가지 측면으로 볼 수 있습니다.

Figure 2-2 Data Acquisition Process

The Application

사용자에게는 원하는 데이터를 취득하기 위해, 적절한 장치를 선택할 수 있어야 합니다. 또한 데이터 전송 준비가 완료되었을 때 그 에 맞는 신호를 받기 원합니다. 이러한 요구 사항들을 충족하기 위해 TWAIN에서는 File 메뉴와 같은 곳에 반드시 두가지 옵션을 넣도록 권고 하고 있습니다.

  • Select Source - Source 선택 : 장치를 선택하기 위한 기능
  • Acquire - 데이터 획득 : 데이터 전송 처리를 시작.

The Source Manager

사용자가 Select Source의 옵션을 선택 할 때, 응용 프로그램에서는 Source Manager에게 Select Source 대화상자를 띄우도록 요청하게 됩니다. 여기서는 현재 선택가능한 모든 장비들을 나열하고 사용자가 원하는 장비를 선택 표시될 수 있도록 합니다. 필요하면, 응용 프로그램에서 이 사용자 인터페이스를 자신의 버전에 맞게 별도 제작도 가능합니다.

The Source

모든 TWAIN 호환 Source에서는 독자적인 장비 별로 사용자 인터페이스를 제공합니다. 응용 프로그램 사용자는 Acquire 옵션을 선택할 때, Source에서 제공되는 인터페이스를 보여주게 됩니다. 물론 필요하면, 응용 프로그램에서 자신의 버전에 맞게 별도 제작도 가능합니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

VMWare 7.0에 MacOSX 설치.

기술자료/ETC 2010. 8. 5. 11:28

준비물.

VMWare Workstation 7.0 정품.

vmware-darwin-200

해킨토시용 MacOSX ( D:\OSX86.iPC.iDeneb.v1.4.10.5.6.Mac.OS.X.Leopard.Kalyway_10.5.2_DVD_Intel_Amd.iso 같은...파일이름은 각기 배포판 버전이나 캐리어의 규칙에 따라 달라질 수 있음 )

1. VMWare Workstation 준비.

일단, VMWare Workstation 7.0 을 설치한다. (가격이 세긴하지만, 성능은 우수한 가상 머신)
설치방법이야, 일반적인 VMWare Workstation 방법이고, 사이트에서 받은 Key를 넣는다.

그리고 vmware-darwin-200 을 설치한다. 사실 darwin for vmware 인데, 어둠의 경로나 기타 여러 해킨토시 관련 사이트를 통해 받을 수 있다. 일단 필자가 가진 darwin for vmware는 200 이라는 이름으로 적혀서 전달 받았는데, 그건 각기 받는 곳에따라 버전에 따라 조금씩 차이는 있겠지만, 적절한 경로에 맞추어 설치해주도록 한다.
일단 위의 파일의 압축이 되어 있으면 압축을 풀도록 한다.
그리고 setup.cmd 가 있는지 확인한다.
setup.cmd가 있으면 다음과 같이 명령을 넣는다.

setup.cmd install

만일 Windows Vista나 Windows 7 과 같은 버전의 윈도우를 사용 중이라면, cmd 창을 띄울 때 반드시 Administrator 권한을 가진 cmd 창을 열도록 한다.

 

2. VM 만들기.

가상 머신을 만드는 작업이다.

일반적인 새 가상 머신을 만드는 작업과 동일하지만, 몇가지 부분만 고려해서 만들도록 한다.

  1. 반드시 Custom(advanced) - 사용자 정의(고급) 을 선택해서 진행한다.
  2. 버전은 Workstation 6.5~7.0 에 맞춘다. 기본값이므로 그대로 둔다.
  3. 설치될 게스트 OS를 선택한다, 여기서는 반드시 Other의 FreeBSD를 선택한다.
    물론 Darwin이 x64 지원 버전이 있을 수 있는데, 그 경우에는 FreeBSD 64-Bit 를 선택한다.
    몇가지 변경이 필요할 수 있겠지만, 여기서는 FreeBSD로 할 예정이다.

  4. VM의 이름 및 저장될 위치등을 결정한다. 이름은 임의대로, 그리고 위치도, 원하는 대로 설정하도록 한다.
    (만일 C 드라이브로 설정되어 있는데, 용량이 부족할 수 있으므로 이 부분을 꼭 확인하도록 하자)
  5. 프로세스 갯수 및 코어 갯수. 프로세서야 보통 1개니 위쪽에서 1을 선택하고(시피유 2개짜리면 2를 선택하면 될듯). 듀얼 코어면 밑의 칸에서 2, 쿼드코어면 4, 구형 PC면 1을 선택하면 된다. 현재 자신의 PC에서 여유가 될법한 만큼 설정하면 된다.

  6. 메모리 사이즈. 간단하게 돌리는 정도면 512MB도 무난하지만, 개발을 하려면, 현재 가지고 있는 메모리를 고려해서 넉넉하게 잡도록 한다. 현재 필자의 PC는 거의 3G 정도인데, 그래서 2G 2048MB로 잡았다.
  7. 네트워크 설정. 지금 랜카드와 직접적으로 연결하려면 Bridge를 설정한다.만일 VM의 네트워크가 밖으로 안새게 하려면 NAT로 설정하도록 한다. 여기서는 그냥 NAT로 잡아도 무방하다. ( 즉 인터넷 공유기를 한개 더 끼어 있다고 생각하면 됨 )

  8. 다음은 HDD. HDD 동작 방식인데, 이 부분은 필자도 명확이 모르는 기능. 현재로는 권장사항이라고 적힌 부분을 선택된 채로 두도록 한다.

  9. 다음은 Virtual HDD를 새로 만들 것인지, 기존의 것을 슬것인지, 아니면 직접 물리적인 HDD와 연결할 것인지를 묻는 부분인데, 그냥 새로 만드는 것으로 한다.

  10. 그 다음 IDE 방식으로 할지, SCSI 방식으로 할지인데, 권장 방법으로 선택한다. 만일 64bit인 경우라면, 아마도 SCSI 방식이 권장으로 되어 있는데, 현재는 32Bit 여서 그런지, IDE로 설치하도록 한다.
  11. 용량은 자유롭게, 하지만, 기본 값이 8G 는 너무 작으니, 넉넉하게 잡도록 한다.

  12. 다음은 HDD 디스크 파일 이름. 그냥 VM 이름과 동일하게 잡히므로 그대로 두면 된다.
  13. 최종적으로 설치될 VM에 대한 각종 값들을 표시해주는데, 확인하고 Finish를 클릭하면 된다.
    만일 FDD 같은 쓸모없는 장치에 대한 제거는 Customize Hardware 버튼을 눌러 지우면 된다.
    단, 주의할 것은 이 가상장치를 일단 켜지 말고, 다음 작업을 해야 한다. 이를 위해서는 Power on this virtual machine after creation 의 체크를 끄도록 한다..

  14. 자 이젠 VM이 설치되어 있는 폴더로 이동하자.
    그리고 VM 파일들이 있는 위치내에서 vmx 파일을 메모장을 통해 열도록 한다.
    vmx 파일을 Drag & Drop(끌어 놓기)하면 된다.

  15. 열린 파일에서 GuestOS 라고 적힌 부분에 "Darwin10" 이라고 넣는다.
    만일 지금까지 64bit로 설정하신 분은 Darwin10-64 라고 넣도록 한다.

 

3. Mac OS X 설치하기.

VM도 준비되었고, 이제 준비해 놓은 Mac OS X 시디 이미지를 VM에 연결한다.
연결 방법은 VM의 설정(Edit virtual machine)에 들어가, 이미지를 걸어준다.
앞서 준비물로 언급한 핵킨토시용 Mac OS X면 된다.

그리고 난 뒤 장치를 켠다.그러면 맨 처음 검은 화면에 아래와 같이 표시된다.
지체없이 검은 화면 안으로 들어가 아무키나 누른다.

그럼 아래와 같은 화면으로 넘어간다. 잠시만 기다리자.

그러면 맨처음 언어 설정이 나온다. 한글로 하도록 하자.

계속을 클릭한다.(이 화면은 가지고 있는 해킨토시 이미지에 따라 다를 수 있습니다.)

해킨토시 사용에 대한 주의 사항을 일러줍니다.VM이 아닌 직접 자신의 PC에다 설치하는 경우 간혹 호환성 문제나 H/W 문제를 일으킬 소지가 다분이 있다는 조금 겁나는 경고들입니다. 그냥 동의하시구요.

이제 어디에다 설치할 것인가... 하는 부분인데, 맨처음 보면 아래와 같이 텅텅 비어 있습니다.

상단의 메뉴에서 유틸리티 -> 디스크 유틸리티를 선택합니다.

아래의 이미지 처럼, 볼륨설계에서 1개의 파티션을 선택하고, 이름에 적당한 이름을 넣고 적용을 누릅니다.

디스크 선택화면에 드디어 HDD가 보입니다. 해당 하드를 선택하고 설치를 진행하면 된다.

이제 설치 버튼을 클릭하면 자동으로 쫙 설치합니다.

4. Mac 가상 머신 설정.

이제 대부분의 단계는 완료되었다.
뭐 apple.com 계정이 기존에 있다면 최초 그 계정을 넣어주고, 없다면 계정 생성을 위한 정보들을 제공하게 된다.
뭐 자질구레한 설정 후 최후 darwin.iso를 설치하면 된다.

5. 마무리

사실 1~3 까지의 단계가 문제지, 그 이후는 Mac에 대한 기본 동작이므로 쉽게 쉽게 진행 할 수 있다.
(사용자 계정을 만드는 작업 빼고.)
현재 포스팅 내용은 대부분 직접 캡처하고 기록한 것이지만,
이 모든 내용의 단서는 "다크스타"님의 블로그를 참고(아니 완전 활용) 했다.

  1. VMware에 맥 스노우레오파드 설치하기![1]
  2. VMware에 맥 스노우레오파드 설치하기![2]

 

여튼 성공 기원 합니다 ㅋ

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

TWAIN 기술 개요(TWAIN의 아키텍처)

기술자료/ETC 2010. 8. 4. 17:25

원본 문서 : http://www.twain.org/docs/TWAIN_2_1_Spec.pdf
Chapter 2. Technical Overview - TWAIN Architecture

TWAIN에서는 전체적으로 세가지 소프트웨어 구성요소들 통해 만들어진 데이터를 전송합니다. 응용프로그램, Source Manager, Source 이렇게 세가지가 그 중요 구성요소입니다.

이 구성요소들은 TWAIN의 아키텍처를 사용하여 서로 커뮤니케이션을 수행합니다. TWAIN 아키텍처는 ekdmarhk rkxdl 총 4가지 레이어로 되어 있습니다.

  • Application
  • Protocol
  • Acquisition
  • Device

TWAIN 소프트웨어 구성요소들이 각 계층에 어떻게 배치되는지를 아래의 그림처럼 나타낼 수 있습니다. 각 레이어는 각 섹션별로 설명을 할 예정입니다.

Application

사용자의 소프트웨어 응용프로그램 자체가 실행되는 부분이 바로 이 계층입니다.

TWAIN 에서는 사용자 인터페이스에 대한 가이드라인을 제공합니다. TWAIN기능들을 사용자들이 어떻게 접근해야 하는지 특정 Source를 어떻게 선택하는지와 같은 방법들을 응용 프로그램 개발자들에게 제시하게 됩니다.

TWAIN에서는 응용 프로그램을 어떻게 구현하는지는 전혀 고려되어있지 않습니다. 단지 응용 프로그램에서 사용하게 될 각종 응용 프로그램 내부 간의 통신 스키마에 대해 쉽게 접근 할 수 있도록 도와주는 것입니다.

Protocol.

Protocol 이란 일종의 "언어"로써 TWAIN에서 사용되는 각종 문법 같은 것으로 생각하면 됩니다. 데이터 송수신에 필요한 정확한 명령들과 통신 규약들을 정해 놓은 것입니다.

Protocol 계층에는 다음과 같은 내용이 포함되어 있습니다.

  • 응용 프로그램과 TWAIN 간에 인터페이스를 제공하는 응용 프로그램 소프트웨어의 일부분.
  • TWAIN에서 제공하는 TWAIN Source Manager
  • Source Manager에서 명령을 받고, 데이터와 결과 코드를 돌려주는 Source 장비에 포함된 소프트웨어

Protocol 계층에 대한 더 자세한 내용들은 "Communication Between the Element of TWAIN" ( Page 2-5 ) 를 참조하세요.

Acquisition

Acquisition(취득) 장치는 물리적(스캐너 혹은 디지털 카메라 같은)일 수도 있고, 논리적(이미지 데이터베이스 같은)일 수도 있습니다. 이 계층에서 가장 중요한 위치에서 Source 라고 불리는 취득 동작을 제어하는 소프트웨어 요소들로 되어 있습니다.

Source에서는 응용 프로그램에게 데이터를 전송합니다. Source와 응용 프로그램 상에서 합의를 본 형식과 전송 방법을 사용하여 전송하게 됩니다.

Source는 항상 Source 장치들을 제어하기 위한 내장된 사용자 인터페이스들을 제공합니다. 물론 필요한 경우에 응용 프로그램에서 이들 기능들을 추가적으로 덧붙여 자신만의 사용자 인터페이스를 제공할 수 있습니다.

Device

이 부분은 전통적인 저 수준의 장지 드라이버 레벨을 의미합니다. 여기서는 장치 별로 제공되는 H/W 레벨의 명령과 지시들을 전달하는 것으로 각 제조사 별로 제공된 드라이버에 특화되어 있습니다. 응용 프로그램에서는 단지 TWAIN을 사용을 하면 되고 , 이 장치 드라이버를 별도로 탑재하지 않아도 됩니다. 이 부분은 모두 Source에서 담당하게 됩니다.

TWAIN에서는 Device 계층에 대한 모든 사항들이 고려되어 있지는 않습니다. 단지 Source에서 응용 프로그램이 직접 Device 계층을 접근하지 않도록 숨겨놓았습니다. Source는 TWAIN 동작과 Source의 사용자 인터페이스 사이에서 조율을 하게 됩니다. 이를 통해 사용자가 직접 장비에 접근하지 않고도 원하는 기능을 수행할 수 있도록 내부적으로 적절한 명령들을 내리게 되는 것입니다.

NOTE : Protocol 계층은 응용 프로그램 과 Source들 사이에서 정확한 통신을 할 수 있도록 사려깊으며 엄격하게 정의되어 있습니다. 이 문서안의 정보들은 Protocol 과 Acquisition 계층에 대해 주안점을 두고 작성되었습니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • ···
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • ···
  • 157
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2026/03   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31

인터파크 비스킷 me2dayzm 블로그 것 Azure e-book MOSS 2007 좀 Buscuit Google Apps Engine 개발환경 twi2me me2sms SharePoint 불만 2010 Tutorial 매뉴얼 moss WSS me2photo windows 오류 지름신 수 친구 java 협업 Visual Studio

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바