Posted
Filed under Scorm
SCORM의 두번째 시간입니다. SCORM의 세부 구성요소를 살펴보기에 앞서.. SCORM에 대해 좀더 알아보구요..
SCORM 샘플 콘텐츠의 구성과 ADL에서 제공하는 SampleRTE의 설치 및 활용에 대해 이야기 하도록 하겠습니다.

여기에서 보여줄 SCORM 샘플 콘텐츠를 강의 전반에서 예제로 사용할 계획이니.. 꼭 다운로드 받으셔서 살펴보시기 바랍니다.
또한, SampleRTE라는 프로그램도 본인의 PC에 세팅해서 활용해 보시기 바랍니다.

ADL의 TestSuit에 대해서도 설명하려 했으나.. SCORM의 구성요소에 대한 이해가 필요한 부분이므로.. 다음에 설명하도록 하겠습니다.
자~ 그럼.. 출발해 볼까요??

SCORM Adopter vs. Certified Product

SCORM이 확대되어 사용되면서 ADL에서는 SCORM 표준을 준수하고 있는지 판단하기 위해 인증이라는 걸 하고 있습니다.

즉, 해당 솔루션 혹은 콘텐츠가 SCORM 표준에 적합한지를 확인하고 승인해주는 것이죠..

이러한 SCORM과 관련된 ADL의 인증은 Adopter와 Cerfication 두 가지가 있습니다.
SCORM 관련 프로젝트의 RFP에 보면 보통 이런 사항을 요구하기 때문에 이 두가지의 차이점에 대해서 간략히 설명을 하려고 합니다.

먼저 아래 ADL 사이트를 살펴보시기 바랍니다.

Adopter 리스트

Certified Product 리스트

각각의 인증을 받은 제품이 보일 겁니다. (Certified Product에 우리회사에서 만든 제품도 들어가 있네요.. ^^
현재 팀에서 개발한 제품입니다. ㅋㅋ - Dunet-CMS... 흠흠.. 홍보는 그만하궁... -.-)

Adopter는 등록된 제품을 의미합니다.
여러분이 만든 콘텐츠 혹은 솔루션을 Adopter로 등록하기 위해서는 SCORM TestSuit라는 것을 설치하고.. 지정된 조건을 통과한 테스트 결과를 보내면 됩니다.

그 결과 ADL에서 보기에 큰 문제가 없으면 Adopter로 등록을 해 줍니다.
실제로 수행해 본 결과 짧게는 1주일.. 길게는 3주 정도 걸렸던 것으로 기억합니다.

별도의 비용이나 테스트 없이 테스트 로그만 보내면 등록을 해주는 것이죠...

반면에 Certified Product는 인증된 제품을 의미합니다.

먼저 SCORM TestSuit를 통한 테스트 로그를 보내고, 테스트 할 수 있는 서버 정보를 알려주거나 솔루션을 보내야 합니다. 그러면 ADL에서 위탁한 기관 (예를 들면 위스콘신 대학)에서 실제 콘텐츠를 등록하고 테스트를 수행합니다.

이에 따른 결과로 인증서를 보내주게 됩니다. 외부기관에서 테스트를 수행하므로 별도의 비용이 청구됩니다.

실제로 국내의 많은 이러닝 기업이 솔루션에 대한 SCORM Adopter를 등록했지만, Certified Product를 받은 업체는 현재(2006년 9월) 3곳 정도 입니다.

혹, SCORM Certifed Product와 관련된 정보가 필요한 분이 있을까봐~~ 관련 절차를 아래 이미지로 삽입했습니다.
<img src="http://xml.80port.net/image/scorm02.jpg"/>

                                           <그림 1 : SCORM Ceritification 절차>

Photoshop 샘플 콘텐츠

이제 본격적인 SCORM을 살펴볼 계획입니다. 먼저 SCORM 샘플 콘텐츠를 하나 보여드리고자 합니다.
그리고 ADL의 Sample RTE를 설치하고 테스트하기 위해 이 콘텐츠를 활용할 것입니다.

사용할 샘플 콘텐츠는 Photoshop에 대한 내용을 설명하는 콘텐츠입니다. 포함된 내용은 영어로 되어 있어 거부감이 좀 들기는 하지만.. Photoshop을 공부하는 것이 아니니까... 영어를 몰라도 관계는 없을 것 같습니다.

또한 이 예제는 나중에 배울 시퀀싱 관련된 내용이 포함하여 확장해서 살펴볼 것입니다.

먼저 자료모음 메뉴로 가셔서 Photoshop.zip 파일을 다운로드 하시고 난 후, 압축을 풀어보세요~~

파일 내용은 아래 그림과 동일할 겁니다. 파일이 많기는 하지만 너무 겁먹을 필요는 없어요~~ SCORM의 기본적인 파일들이 대부분이므로 그룹별로 파악해서 보시면 됩니다.

실제로 중요한 파일은 몇개 안됩니다. ^^



                                           <그림 2 : Photoshop 콘텐츠 파일 구성>

일단 파일들 먼저 보시죠..

맨 처음 보이는 파일 두개는 확장자가 dtd입니다. 어라~ 어디서 많이 들어본 것인데.. ~~
맞습니다. 바로 XML 강좌에서 구구절절이 설명했던 그 DTD입니다. SCORM도 XML의 일부이기 때문에 DTD와 같은 XML 태그에 대한 정의가 필요하겠죠..

그 다음에 보이는 것은 바로 html 파일입니다. 실제 콘텐츠라고 볼 수 있습니다. 학습자가 보는 내용이 되겠죠..

그리고 드디어 xml 파일이 하나 나옵니다. imsmanifest.xml ...
왠지 이 파일이 중요하다는 느낌이 들지 않으세요? 저만 그런가... -.-
바로 SCORM 첫 강의에서 잠시 설명했던 manifest 파일입니다. 여기에 이 콘텐츠에 포함된 목차라든지.. 강의 정보가 모두 포함됩니다.
앞으로 집중적으로 살펴볼 파일입니다. 궁금하신 분은 살짝 열어서 살펴보시기 바랍니다. 그저 XML 문서일 뿐이지만, SCORM에서 중요하게 사용되는 정보입니다. ^^

마지막으로 xsd 확장자를 가진 파일들이 보입니다. 이것들은 뭘까요?
XML Schema라고 XML 강좌에서 잠시 언급한 것 생각나시나요? DTD와 동일한 일을 하지만, 데이터 타입이나 더 많은 속성을 부여할 수 있다고 했던것 같네요.. 바로 그 XMS Schema 파일입니다. 이것 또한 DTD와 마찬가지로 미리 정의된 내용을 사용하는 것이니 우리가 살펴보지는 않을 겁니다. ~~

자~ 그럼 정리해 볼까요.. SCORM으로 만들어진 콘텐츠에는

imsmanifest.xml 파일 하나와 2개의 dtd 파일 그리고 다수의 xsd 파일로 구성되어 있구요..
나머지는 html 파일로 실제 콘텐츠를 나타내는 것입니다.

정리가 되시나요? 혹, 이러닝 콘텐츠를 만들어보신 분은 알겠지만, 예전에는 저런 xml이나 dtd가 없었죠.. 그저 html 안에 자바 스크립트로 서버에 정보를 보내주는 부분을 코딩했었습니다.

SCORM도 자바 스크립트를 사용하는 것은 동일하지만, 표준적으로 이용한다는 차이가 있습니다. 왜 그럴까요?
SCORM의 콘텐츠 공유 기능 때문입니다. ~~ 계속 이야기가 될 것이니.. 첨부터 너무 겁먹지 마시기 바랍니다.

실제 콘텐츠라고 하는 html 파일을 잠깐 열어보겠습니다.

intro.htm이나 Lesson1.htm 파일을 열어보세요.. 아무 문제없이 실행되고 있습니다.
그런데~ Question1.htm 파일을 한번 열어보세요..~ (잠깐! 이 파일을 열면 자바스크립트의 경고창이 여러번 뜹니다. ~~ )

"Unable to find an API adapter"
"Unable to locate the LMS's API Implementation. Initialize was not successful"

위와 같은 메시지가 나타나죠... 바로 SCORM API가 연결되지 않았다는 메시지 입니다.
창을 닫을 때는 더 많은 메시지가 나타납니다.

"Unable to find an API adapter"
"Unable to locate the LMS's API Implementation. SetValue was not successful"

"Unable to find an API adapter"
"Unable to locate the LMS's API Implementation. Terminate was not successful"

이 메시지를 통해서도 한가지 알수 있는 게 있습니다.
즉, SCORM 파일을 띄울때 (창을 열때)는 Initialize라는 것을 호출하고..
창을 닫을때는 SetValue, Terminate를 호출한다는 것을..

다음 Runtime Envrionment를 설명할 때, 다시 한번 언급하도록 하겠습니다. 일단 너무 많이 하면 머리 아프니.. 여기까지만 아~ 그렇구나! 하고 넘어가시기 바랍니다.

SCORM Sample RTE 설치

이제 샘플 콘텐츠를 다운 받았습니다. 이제 무엇을 해야 할까요?

콘텐츠를 받았으니... 테스트 해보고 싶지 않으세요? 호기심만이 자신의 실력을 업시킬 수 있는 특효약이라고 생각합니다.
배운걸 배운것으로 끝내지 않고 응용하려는 자세~~ (저도 그렇게는 못하고 있습니다만.. 헐~)

위에서 받은 photoshop 샘플 콘텐츠를 테스트할 수 있는 프로그램을 설치해 보려고 합니다.
SCORM Sample RTE라는 프로그램인데요.. SCORM 콘텐츠를 올려서 학습할 수 있도록 지원하는 툴입니다.
이렇게 하면, Question1.htm이 실행될때 위와 같은 자바스크립트 경고창이 나타나지 않게 됩니다. ~

ADL에서 제작해 배포하는 것으로 기본적인 SCORM 기능이 구현되어 있습니다. 소스 코드 또한 볼 수 있으므로 프로그래밍을 잘 하시는 분은 바로 소스까지 살펴보시기 바랍니다.

먼저 프로그램을 다운로드 받도록 하겠습니다. 이 소스는 자료실에 올려놓지는 않았구요.. 아래 링크를 눌러서 다운받으시면 됩니다.

SCORM 2004 2nd Sample RTE 1.3.3 다운로드

그럼 설치를 진행해 보도록 하겠슴다~~ ADL의 SCORM RTE를 설치하기 전에 먼저 설치해 주어야 하는 것이 있습니다.
본인의 PC에 혹 설치되어 있는지 확인하시고 진행하시기 바랍니다.

1. J2SE SDK 설치

먼저 J2SE SDK를 설치해 주셔야 합니다. 다운로드 위치는 다음과 같습니다.

J2SE SDK 1.4.2 다운로드

혹, 위 주소로 다운로드가 되지 않을 경우, 다음과 같이 다운로드 합니다.

J2SE SDK 1.4.2 다운로드 페이지

위 주소에서 중간의 "Download J2SE SDK"를 클릭하시고 난 후,
다음 페이지에서 "Accept" 라디오 버튼을 선택한 후, 가장 위에 있는 "Windows Offline Installation"을 선택해서 다운로드 하면 됩니다.

다운로드 한 후, 설치는 대부분 "Next" 하면 되는 거 아시죠.. ~~
윈도우에서 모든 설치는 "Next" 라고 보시면 될거예요.. ^^

잘 안될 경우, 웹사이트를 검색해보면 많이 나와 있을 겁니다. (여기는 java강좌가 아니므로 간략하게 이정도만 할게요.. )

2. J2SE SDK 환경변수 설정

두번째로 해주셔야 하는 부분은 바로 Java 환경설정입니다. 일반적인 JVM(Java Virtual Machine)을 설치한 경우, 대부분 해주는 작업이죠..

만약 J2SE를 설치한 디렉토리가 C:\j2sdk1.4.2_10이라고 가정해 보겠습니다.  ("Next"로 설치한 경우, 뒷부분의 _10 부분만 다를 거예요.. )

Windows 2000이나 XP의 경우, 윈도우 탐색기에서 "내컴퓨터"를 선택하고 마우스의 오른쪽 버튼을 클릭합니다. "속성"을 선택하고, "고급" 탭으로 이동합니다. 아래쪽에 "환경 변수"를 클릭합니다.

위와 같은 과정을 하면, 사용자 변수와 시스템 변수가 나타납니다. 사용자 변수 또는 시스템 변수에 JAVA_HOME이 존재하는지 확인합니다.
만약 존재하지 않는다면, "새로 만들기"를 클릭한 후,

변수 이름 : JAVA_HOME
변수 값 : C:\j2sdk1.4.2_10

을 입력하고 "확인"을 누릅니다.

이어서 Java 실행경로를 입력하기 위해... 사용자 변수 또는 시스템 변수에 있는 PATH를 선택한 후, "편집"을 클릭합니다.
변수 값의 맨 뒷부분에 세미콜론(;)을 찍고 %JAVA_HOME%\bin 을 추가합니다.

변수 값 : XXXXX;%JAVA_HOME%\bin

(참고로 XXXXX는 이미 들어가 있는 변수값입니다.)

3. SCORM Sample RTE 설치

자.. 이제 Sample RTE를 설치할 때가 되었습니다. 앞에서 다운로드한 Sample RTE를 설치하시기 바랍니다.

설치과정은 여기에 나열하지는 않겠지만.. 기본적으로 "Next", "Yes"를 누르면 되겠죠.. ^^

설치가 완료되면 "시작" 메뉴에 "ADL" > "Sample RTE 1.3.3" 이란 메뉴가 생성되어 있을 것입니다.
또한, C:\ADL\Sample_RTE_1_3_3 와 같은 폴더도 만들어져 있을 것입니다.

윈도우 탐색기를 열어서 확인해 보시기 바랍니다.

4. SCORM Sample RTE 환경 설정

Sample RTE를 설치한 후 몇가지 환경설정을 해주어야 합니다.

먼저 인터넷 익스플로러를 열어보세요.. 그리고 "도구" 메뉴의 "인터넷 옵션"을 클릭합니다.
"일반" 탭의 중간에 있는 "임시 인터넷 파일"에서 "설정"을 클릭합니다.
"저장된 페이지의 새 버전 확인"에서 "페이지를 열 때마다" 라디오 버튼을 클릭한 후, "확인" 버튼을 누릅니다.

이 작업은 인터넷 익스플로러의 캐시기능을 조절하는 것입니다. 페이지 열 때마다 새로운 페이지를 가져오라는 것이죠..

Windows XP의 SP2를 사용하시는 경우, 인터넷 익스플로러에서 한가지 설정을 더 해주어야 합니다.
"도구" 메뉴의 "인터넷 옵션"을 클릭합니다.
"고급" 탭으로 이동한 후, "보안"에 있는 "[내 컴퓨터]에 있는 파일에서 액티브 컨텐트가 실행되는 것을 허용"을 체크합니다.
그리고 나서 "확인" 버튼을 클릭합니다.

다음으로 자바 관련 설정을 할 차례입니다. (휴~ 뭔 설정이 이리도 많은지.. 그래도 잘 따라오고 있죠.. 기지개 한번 펴시고 진행하시기 바랍니다.)

"시작" 메뉴에서 "설정"하위의 "제어판"으로 들어갑니다.
"제어판"에서 "Java Plug-in" 항목을 실행합니다. (java 1.5를 설치한 경우, 이 메뉴가 없습니다. 1.4 버전일 경우 따라하세요.~)
"Cache" 탭으로 이동해서 "Enable Caching"의 체크를 해제합니다. (체크하지 않는 상태로 둡니다.)
"Apply"버튼을 눌러 적용시킵니다.

이제 마지막 설정입니다.

Sample RTE에 포함된 데이터베이스의 설정에 약간의 문제가 있습니다. 특정 필드를 DateTime 형식으로 잡아놨는데요..
한글윈도우에서는 제대로 동작하지 않습니다. 그래서 변경한 MDB 파일을 자료모음에 올려두었습니다.
자료모음에서 SampleRTE.mdb 파일을 다운로드 하셔서 C:\ADL\Sample_RTE_1_3_3\database 위치에 덮어쓰시기 바랍니다.

mdb를 수정할 수 있으신 분은 파일을 열어서.. CourseInfo 테이블의 ImportDateTime 필드의 속성을 "텍스트"로 변경하시고 사용하셔도 동일한 결과를 가져옵니다.

이렇게 하면 모든 설정이 완료되었습니다. 이제 SampleRTE를 실행하고 종료하는 방법과 위에서 다운로드한 Photoshop 콘텐츠를 업로드 하고 테스트 해보도록 하겠습니다.

설치와 관련된 궁금한 점은 Q&A 게시판을 이용해 주시면 감사하겠습니다.

SCORM SampleRTE 활용

SCORM Sample RTE를 실행해 보도록 하겠습니다.

"시작" > "ADL" > "Sample RTE 1.3.3" > "Start Server"

를 누르면 Sample RTE가 실행됩니다. 도스 창에 Tomcat이라고 해서 여러 정보가 뜨는 것을 볼 수 있습니다.
서버를 실행 한 후, 다음을 선택하면 Sample RTE 페이지를 볼 수 있습니다.

"시작" > "ADL" > "Sample RTE 1.3.3" > "Sample RTE 1.3.3"

웹 페이지가 하나 나타납니다. 왼쪽 상단의 "Log In"을 클릭합니다.

Username : admin
Password : admin

을 입력해 보세요.. 사용자 메뉴와 관리자 메뉴가 나타날 것입니다. 이제 Sample RTE를 사용할 수 있는 환경이 모두 갖춰진 거네요~~ 짝짝짝!!!

Sample RTE는 SCORM 2004 콘텐츠를 업로드 하여 테스트 해볼 수 있는 프로그램입니다.

그럼.. 앞에서 다운로드 한 Photoshop.zip 파일을 업로드 해 보도록 하겠습니다.

"Administrator Options"에서 "Import Course"를 클릭하세요..
"찾아보기"에서 Photoshop.zip 파일을 선택하시고.. Yes/No 버튼은 기본값인 Yes로 유지합니다. (Yes는 SCORM 호환 여부를 체크하므로 시간이 좀 오래 걸립니다. No는 SCORM 호환여부를 체크하지 않고 바로 업로드를 수행합니다.)
"Submit" 버튼을 클릭하세요..

파일 등록중 오류가 발생하면, 앞의 환경설정에서 빠진 부분이 없는지 다시한번 체크하시기 바랍니다.

"Course Has Been Imported" 메시지가 나오면 성공한 것입니다.

그럼 학습을 해보도록 하겠습니다.

"User Options"에서 "Register For a Course"를 클릭합니다.
Available Course에 Photoshop Example이 나와 있는 것을 확인할 수 있습니다. 체크 버튼을 선택하시고 "Submit" 버튼을 클릭합니다.

"View Registered Course로 이동합니다. "Photoshop Example"를 선택합니다.

학습창이 정상적으로 나타날 것입니다. [Blocked] page라는 것이 나타나기도 할 것입니다. 이것은 시퀀싱 정보라는 것이 없어 나오는 것이니 오류가 아니다라고 알아 두시기 바랍니다.

왼쪽 메뉴를 클릭해서 콘텐츠를 보시기 바랍니다. 특히 Qeustion1을 클릭해 보세요..
좀전에 로컬에서 html 파일을 실행했을 때, 나왔던 자바스크립트 경고 메시지가 나타나지 않을 것입니다. 즉, 서버랑 정상적으로 연동되고 있다는 의미입니다.

상단의 "Quit"를 눌러서 학습창에서 빠져나오시기 바랍니다.

이제 서버를 종료하는 방법을 설명드리겠습니다. 눈치가 빠른 분이 이미 아시겠지만... 실행과 비슷한 방법으로

"시작" > "ADL" > "Sample RTE 1.3.3" > "Stop Server"

하시면 되겠습니다.

마지막으로 Sample RTE의 각 메뉴에 대한 개략적인 설명을 하겠습니다.

User Options
Register For a Course : 수강신청입니다. 등록된 과목에 대해 신청하는 메뉴입니다.
View Registered Courses : 수강신청한 과목을 학습하는 메뉴입니다. 학습창이 떴었죠..
View Course Status : 학습결과를 확인하는 메뉴입니다. SCORM 스펙에 맞추어 Satisfied / Completed 등이 나타납니다.
Change My Profile : 개인 정보수정 메뉴입니다.
Logout : 로그아웃 메뉴입니다.

Administrator Options
Import Course : 과목을 등록하는 메뉴입니다. zip 파일로 등록하죠..
Manage Course : 이미 등록된 과목을 관리하는 메뉴입니다. 등록된 item에 Comment등을 추가할 수 있습니다.
Delete Course : 이미 등록된 과목을 삭제하는 메뉴입니다.
View All User's Course Status : 모든 사용자의 학습결과를 확인할 수 있는 메뉴입니다.
Add Users : 사용자를 등록하는 메뉴입니다.
Manage Users : 사용자의 정보를 수정하는 메뉴입니다.
Delete Users : 사용자를 삭제하는 메뉴입니다. (admin은 삭제하면 안되겠죠.. )
Global Objectives Administration : Global Objective를 설정하는 메뉴인데요.. 자세한 것은 시퀀싱에서 살펴보죠..
Clear Database : 데이터베이스를 깨끗하게 초기화 합니다.


마치면서

이번 강의에서 생각보다 많은 것을 살펴봤습니다.

SCORM Adopter와 Certification의 차이..
Photoshop 콘텐츠를 통한 SCORM 콘텐츠의 구성..
Sample RTE의 설치 및 활용..

처음에는 생소하고 어려운 점이 있을 수 있습니다. 하지만, 무턱대고라도 따라 하다보면 알게 되는 것이 IT 업무가 아닌가 합니다.
앞으로 SCORM 스펙과 관련된 강의가 3차례정도 더 진행될 것입니다.

이러닝 관련 분야가 아직까지도 널리 퍼져있는 것은 아니지만, 분명히 향후 중요한 요소가 될 것이므로 미리미리 관련 기술에 대해 숙지해두는 것도 좋은 경험이 될 거라고 생각합니다.

출처 : Tong - JK world님의 컴퓨터 일반(H/W,S/W)통

2009/07/17 20:45 2009/07/17 20:45
Posted
Filed under Scorm
1. SCORM이 뭐죠?

드디어 새로운 강좌를 시작합니다. 이번에 주제로 정한 것이 바로 SCORM 입니다.

아마도 SCORM이 무엇인지... 잘 모르는 분들이 많을 거라고 생각합니다. 저게 XML과 무슨상관이야 하는 분들도 있겠지만.. 어쨌든 관련이 있습니다. 있구요.. ^^ 가장 중요한 이유는 현재 제가 하고 있는 작업이라는 겁니다. 아무래도 제가 하고있는 그래서 가장 잘 알고 있는 부분으로 강의를 시작하는게 맞을 것 같아서 시작해 봤습니다.

그럼.. SCORM이란 용어를 처음 들어보신 분들도 많을텐데요.. XML 강좌에서 설명했듯이.. 용어는 외우는게 아닙니다. 계속 보고 듣고.. 하다 보면 절로 그 개념까지 알게 되는 것이죠.. 꾹 참고 끝까지 읽어본다면, 향후~ 많은 도움이 될 것입니다. 이미 SCORM이란 것이 우리의 생활속으로 들어오고 있기 때문에.. 또 현재 대학이나 교육분야에서 활용되고 있기에.. 절대로 후회하지 않을 겁니다.

오랜만이라 서론이 좀 길었네요. 흠흠.... SCORM은 Sharable Content Object Relation Model의 약자입니다. 우리말로 하면 공유 콘텐츠 객체 관계 모델이라고나 할까요? 국어가 더 어려운 것 같습니다.

즉, 콘텐츠는 많이 들어봤을 것입니다. 이 콘텐츠를 공유하자는 것이 바로 SCORM의 핵심 개념입니다. 공유는 하는데.. 콘텐츠를 공유하기 위해서 상호간의 관계를 설정할 필요가 있습니다. 그래서 relation model이라고 붙여놓은 것입니다.

예를 들면, 요즘 사이버대학이 많이 있습니다. 각 사이버대학의 콘텐츠를 수강신청해서 인터넷으로 강의를 진행하게 됩니다. 이 경우, A 사이버대학의 콘텐츠를 B 사이버대학에서 활용하려면 현재 가능할까요? 아마도 시스템이 달라서 거의 콘텐츠를 다시 수정해야 할 겁니다. 또한 각 사이버대학마다 좋은 콘텐츠를 공유하지 못하고 서로 제각각 만드는 것도 어떻게 보면 낭비라고 할 수 있죠..

이렇게 서로 다른 시스템이라 하더라도 SCORM 표준을 준수하면 콘텐츠를 공유할 수 있다는 것이 바로 SCORM의 기본 출발입니다. 이러닝이 점차 보편화되고 있는 시점에서 SCORM의 중요성이 점차 커지고 있는 것이 사실이지요.. 그러나 SCORM에도 나름대로 한계점이 있습니다. 그건 나중에 다시 한번 논하도록 할께요..

SCORM은 미국 국방성 산하에 있는 ADL Initiative에서 1999년 4월 처음 시작되었습니다. SCORM 버전 1.0을 2000년 1월에 발표한 이후 현재 SCORM 2004(버전 1.3)을 발표한 상태에 있습니다. 앞으로의 강좌는 SCORM 2004를 기준으로 설명하게 될 것입니다.

2. 누가 SCORM을 학습해야 할까요?

강의를 시작하기에 앞서, 누가 왜 SCORM을 학습해야 하는지에 대해 간단히 설명하겠습니다.

제가 이러닝 분야를 하면서 느끼는 점은  SCORM은 시스템 개발자가 하는 것이라고 생각하는 사람들을 흔히 봤습니다. 일단, SCORM 기반의 시스템을 만들어야 하므로 시스템 개발자가 SCORM을 이해하고 적용해야 하는 것은 당연한 것입니다.

그러나, 더욱 중요한 것은 만들어진 시스템을 활용해야 하는데 있다고 생각합니다. 그러기 위해서는 SCORM 형 콘텐츠를 개발해야 하는데.. 이 부분에 있어 SCORM에 대한 전문성이 더욱 필요하다고 생각합니다.

즉, 교육공학적인 사고가 바탕이 되어 SCORM의 시퀀싱(학습흐름)이나 SCO의 구성등을 결정해야 한다는 것이죠..

정리하면, SCORM은 시스템(LMS 또는 LCMS) 개발자와 콘텐츠 개발자, 그리고 교수설계자 모두가 이해하고 있을 때, 제대로 구성될 수 있다는 것입니다.

3. SCORM의 구성요소

이제 본격적으로 SCORM에 대한 이야기를 해보도록 하죠...

SCORM 스펙은 크게 4개의 책으로 이루어져 있습니다.  Overview, CAM, RTE, S&N 이렇게 4권입니다. ^^ (어려운 영어 약어가 나오니.. 감기걸린 제 머리도 갑자기 지끈거리네요... )

1. Overview

Overview는 말 그대로 전체 내용을 대략적으로 설명해 놓은 것입니다. 스펙에서 분량이 가장 적지만, 전체적인 흐름을 볼 수 있는 중요한 부분이므로 혹 스펙을 보시는 분은 자세히 살펴보시기 바랍니다.

2. CAM (Contents Aggregation Model)

콘텐츠 모델을 설명하고 있는 부분입니다. 여기에서는 SCORM에 중요한 용어가 등장합니다. Manifest, SCO, ASSET, Aggregation, Metadata... 여기에서는 이런 용어들이 나온다고만 알고 넘어가시면 됩니다. 뒤에서 자세히 설명할 것이니까요.. (미리 용어에 대한 친근감을 가져보세요..)

CAM에서 필수적으로 이해하고 넘어가야 하는 부분은 Manifest 파일과 Metadata 부분입니다. 이 두가지는 SCORM 콘텐츠에 포함되는 정보입니다. 즉, 콘텐츠를 개발할 때 넣어주어야 한다는 것이죠..  

먼저 Manifest에 대해서 간단히 설명을 드리겠습니다. 책의 목차를 살펴보면 아래와 같은 형태로 되어 있습니다.

1장 SCORM이란.....................................................1페이지  
  1절 SCORM 역사..................................................2페이지
  2절 SCORM의 구성요서.........................................3페이지
2장 CAM................................................................5페이지
  1절 Manifest.......................................................7페이지
  2절 Metadta.......................................................10페이지

이런 목차를 정리해 놓은 파일이 바로 manifest 파일이라고 이해하시면 됩니다. IMS라는 기관의 규격을 따른다고 해서 파일명은 Imsmanifest.xml 이 됩니다. (manifest의 사전적 의미는 명백하다. 일목요연하다.. 입니다. 의미적으로 상통하죠.. ^^)

장이나 절을 XML 태그를 이용하여 나타내고.. 페이지 대신 각 장/절의 첫 파일의 경로를 표현하는 것이죠.. 보다 자세한 것은 CAM을 설명할 때 이야기 하도록 하지요.

Metadata란 데이터를 설명하는 데이터를 의미합니다. 즉, 위 각각의 목차에 대한 세부설명이 필요할 경우, 이런 메타데이터를 활용하면 되겠죠..

3. RTE(Run-Time Environment)

세번째는 RTE라 불리는 실행환경입니다.

실행환경이 왜 필요할까요? 예전에는 콘텐츠에서 학습진도율이나, 학습시간등을 처리할 때.. 시스템을 직접 호출해서 처리했습니다.
그러나 이럴 경우, 그 콘텐츠는 다른 시스템에 탑재할 때 학습진도율이나 시간등이 처리 되지 않게 됩니다.
콘텐츠를 수정해서 다시 만들어야 하는 거죠..

SCORM에서는 콘텐츠의 공유를 중요하게 생각합니다. 그래서 일반적으로 콘텐츠에 대해 처리해야 하는 정보를 정리하고.. 이것을 처리하도록 시스템에 제공하고 있습니다. 이러한 부분을 바로 실행환경이라고 합니다.

그래서 콘텐츠에 대해 처리해야 하는 정보를 XML 형태로 정리했고, 이것을 CMI Data Model이라고 부릅니다.

여기에서는 RTE가 이런것이구나 .. 하고 넘어가도록 하겠습니다. 첨부터 너무 무리하면 머리가 아프니까요.. ^^

4. S&N(Sequencing & Navigation)

마지막으로 S&N입니다. 시퀀싱 그리고 네비게이션이라고 할 수 있겠네요...

SCORM 2004에 새롭게 등장한 개념입니다. 생각보다는 굉장히 어렵습니다. 저도 아직 전체를 다 이해하고 있다고 말할 수 없네요.. -.-

쉽게 설명을 하자면, 학습자가 콘텐츠를 학습하고 다음에 다시 학습하려고 할 때, 이전에 학습한 위치로 이동이 되어야 겠죠.. (처음부터 다시 할수는 없잖아요..  - 물론 메뉴를 클릭해서 이동해도 되지만...)
또, 콘텐츠 내의 문제를 풀고 80점 이상이면 다음 학습으로 이동하고, 80점 미만이면 보충학습을 더 보도록 구성하는 경우도 있겠죠..
아니면 일정 점수 미만이면 이전 콘텐츠를 재학습하도록 유도한다든지....

이러한 것이 바로 시퀀싱이라고 보시면 됩니다. 시퀀싱에 따라서 이동하는 것을 네비게이션이라구 하구요..

이전 버전인 SCORM 1.2까지는 이 개념이 없었습니다. 마지막 학습한 위치를 기억하여 북마크 기능(이전에 학습한 위치로 이동하는 기능) 정도를 구현할 수 있었습니다.

콘텐츠가 독립적이고 공유가능하려면, 역시 이런 시퀀싱 정보는 콘텐츠에 정의 되어야 합니다. 그리고 시스템은 어떤 콘텐츠의 시퀀싱이 들어오더라도 처리할 수 있어야 하구요..

이상으로 SCORM의 구성요소에 대해서 간략하게 살펴보았습니다.

해당 구성요소들에 대한 세부내용이 앞으로 다룰 중요한 정보입니다. 항상 말씀드리듯이 먼저 용어에 익숙해지도록 노력하시면 앞으로의 강좌가 보다 쉽게 느껴질 것입니다.

4. SCORM의 한계

SCORM은 콘텐츠의 공유라는 개념에서 시작했지만, 현재 적용하기 어려운 부분에 대해 설명해 보려고 합니다.

1. 콘텐츠 제작의 복잡함이 증가한다는 것입니다.

이전에는 콘텐츠만 만들면 되었는데.. SCORM을 적용하면 SCORM API 삽입 (RTE 부분) , SCORM 패키지 (CAM 부분), 시퀀싱 모델 정의 (S&N 부분)을 모두 처리해 주어야 합니다. 부가적인 작업이 늘어나는 것이죠..

2. 시스템의 수정요구에 대한 부담이 발생합니다.

현업에서 SCORM 2004를 적용하다보면, 발주사에서 요구하는 사항들이 SCORM 스펙과 위배되는 부분이 존재합니다.
이런 부분을 처리하다보면 겉은 SCORM이지만 내부에서는 전혀 다른 동작을 하는 것이 만들어지게 됩니다.
초기 목표였던 콘텐츠 공유나 시스템 독립성이 떨어지게 되는 것이죠..

3. 학습창의 디자인 요구에 따른 변화가 발생합니다.

다양한 콘텐츠를 수용하려면 학습창은 최대한 단순해야 합니다. 그러나 대부분의 발주사에서는 자신들의 구미에 맞는 디자인이 된 학습창을 요구하고 있는 현실입니다. 역시 콘텐츠 공유에 걸림돌이라고 할 수 있습니다.

5. 마치면서

위와 같은 한계에도 불구하고 세계적으로 미국 다음으로 SCORM을 활발히 사용하고 있는 곳이 바로 우리나라입니다.
대학이나 정부에서도 관심이 많으며, 앞으로 이러닝 시장의 발달에 따라 보다 더 중요하게 사용되어질 것으로 생각됩니다.

표준 스펙을 준수하면서 우리나라 현실에 맞는 시스템이나 콘텐츠가 개발되기를 바라면서 SCORM에 대한 첫 강의를 마치려고 합니다.

다음에는 SCORM의 Adopter와 Certified Product에 대해 간단히 설명하고, 백문이 불여일견이라고.. 실제 SCORM을 테스트할 수 있는
콘텐츠 예제와  ADL에서 제공하는 TestSuit / Sample RTE의 설치와 사용법에 대해 설명할 예정입니다.

먼저 사용을 해보고 나서 위의 구성요소를 하나씩 살펴보는 것이 가장 이해하기 쉬울 것이라 생각됩니다.

출처 : Tong - JK world님의 컴퓨터 일반(H/W,S/W)통

2009/07/17 20:44 2009/07/17 20:44
Posted
Filed under Scorm
간혹 SCORM 콘텐츠 패키지에 대해 문의하시는 분들이 있습니다.
이번에 관련 절차를 한번 정리해 보려고 합니다..

음.. 이건 제 나름대로 정리하는 방식이니까..
참고하시면 됩니다. (요런 작업에는 정식이라는 것이 없어서요.. -.-)

1. 콘텐츠 추출
패키지할 콘텐츠를 정리합니다.
보통 html 파일과 swf 파일, 그리고 여러 스크립트 파일이 여기에 해당할 겁니다.

간혹 fla파일과 같은 원본 파일을 배포할 콘텐츠에 넣으시는 분들이 있는데요..
용량도 커지고.. 소스도 유출되고.. 빼는 게 좋겠죠.. ^^

2. API 파일 선정
SCORM을 사용하려면 SCORM API를 삽입해야 합니다.
그러려면 사용할 API가 필요한데요.. 일반적으로 SCORM 콘텐츠에 포함된 APIWrapper.js 파일을 사용하시면 되는데요..
이럴 경우, 다음과 같은 loadPage, unloadPage를 추가적으로 구현해 줘야 하는 문제가 있습니다.

var exitPageStatus = false;

function loadPage()
{
      var result = doInitialize();
}
 

function unloadPage()
{
     if (exitPageStatus != true)
     {
        doTerminate();
     }
}

그래서 보통은 이것까지 감싼 Wrapper를 사용하는 것이 보편적입니다.
제가 작성한 MiniAPIWrapper.js 파일을 사용하시면 될 것 같습니다.
js 파일 하나지만 zip으로 묶어서 자료모음에 올려놓도록 하겠습니다.

필요에 따라 MiniAPIWrapper.js 파일의 하단 Mini Main Function을 변경해서 사용하시면 됩니다.

3. API 삽입
이제 SCORM API를 삽입해보도록 하겠습니다.
이 API는 자바스크립트로 되어 있기 때문에 반드시 기존 콘텐츠에 스크립트 오류가 있어서는 안됩니다.

간혹, flash 파일의 action script의 오류로 인해서 SCORM API 호출이 안되는 경우도 있었습니다.
꼼꼼히 확인하시기 바랍니다.
(인터넷 익스플로러의 경우 도구>인터넷옵션>고급>모든 스크립트 오류에 관련된 알림 표시를 체크해 두세요)

콘텐츠 HTML 상단에 다음과 같이 SCORM API를 포함합니다.
<script type="text/javascript" src="util/MiniAPIWrapper.js"></script>

MiniAPIWrapper.js 파일의 위치를 정확하게 표기하셔야 합니다.
이 위치를 잘못 설정해 놓고 안된다고 하시는 분들도 많더라구요 -.-

다음으로 HTML <body>태그에서 SCORM API를 호출합니다.
<body onLoad="loadPage()" onUnload="unloadPage()">

이걸로 콘텐츠에 API 삽입이 마무리 되었습니다. ^^ (쉽죠~~ 캬!!)

참! 여기서 주의할 사항이 있습니다.
콘텐츠가 iframe 구조로 되어 있는 경우, onUnload 이벤트가 호출되지 않는 경우가 종종 있었습니다.  
이때는 onUnload 대신에 onBeforeUnload 이벤트를 사용하면 되더라구요.. 꼭 기억해 두세요~~

여기서 API가 제대로 되었는지 확인하고 싶으시다면..
Test Suite를 이용해서 SCO 테스트를 해보시면 됩니다.

MiniAPIWrapper.js를 넣고 로컬에서 테스트해보면
"API를 초기화할 수 없습니다."라는 메시지가 나올 겁니다.

SCO로 사용할 모든 HTML에 위와 같은 작업을 해 주시면 됩니다.

여기서 잠깐
SCORM에는 Asset이라는 것이 존재합니다 .
이것 또한 HTML 페이지라고 볼 수도 있는데요.. 이것은 SCO와 달리 학습결과를 추적하지 않습니다.
그러므로 위와 같은 API 추가 작업이 필요없습니다.

외국의 SCORM 예제를 보면 이런 Asset을 많이 사용하고 있는 것을 알 수 있습니다.
모든 학습 페이지의 학습여부를 판단하지 않고 중요한 것만 체크하는 방식이지요..

하지만 국내 이러닝 프로젝트에서는 모든 페이지의 학습결과를 체크하기를 요청하는 것 같습니다.
실제로 이런 학습결과 데이터가 무의미하게 너무 많이 쌓여서 나중에 문제가 되는 경우도 있더라구요. -.-
(페이지 단위의 cmi data는 학습 당시에는 쓸모가 있을 것 같아도 나중에는 별 소용이 없는 것 같기도 합니다. -.-)

4. SCORM 패키징
이제는 SCORM 패키징을 할 차례입니다.
imsmanifest.xml 파일을 만드는 것이죠..

이 작업은 반드시 툴을 활용하시라고 하고 싶습니다. (물론 직접 XML을 타이핑하실 분은 없겠죠.. ^^)
국내에도 괜찮은 제품들이 많이 있으니.. 참고하시구요~
오픈소스인 Reload를 사용하셔도 될 겁니다.

어쨌든 방식들은 거의 비슷합니다.
1. 패키지 만들고
2. resource 등록하고
3. organization 하위에 item 등록하고 resource와 연결시키구..

(DUNET에 있을 때 만든 DUNET Scorm Editor에서는 Resource와 Item 등록을 한번에 처리하도록 구성했었죠..
대부분 에디터가 2, 3번 단계를 따로 작업해야 하더라구요 -.-)

5. 메타데이터 삽입
패키징까지 잘 되었다면 필요한 부분에 메타데이터를 삽입하시면 됩니다.
LOM을 이용하는 SCORM 메타데이터의 범위가 꽤 넓고 다양합니다.

그러나 제가 사용해 본 바로는 General의 title, description, keyword 정도 입력해서..
SCO 검색용 정도로 활용해 본게 전부입니다.

일단 검색 이외의 용도로 메타데이터를 활용할 일은 별로 없을 것 같기도 합니다.
뭐.. 나중에 필요하다고 하면 어쩔수 없겠지만요..

어쨋든 메타데이터는 꼭 필요한 것만 최소한으로 그리고 정확하게 넣으시구요~~

KERIS에서 KEM이라는 메타데이터를 만들었습니다.
LOM과 거의 유사한데요. 7차 교육과정을 추가한 항목입니다.

그래서 메타데이터 입력할 때, KEM을 사용하면 ADL의 Test Suite를 통과하지 못합니다.
이점도 참고하세요~~

6. 테스트
이제 테스트할 차례입니다.
SCORM 규격에 맞다면, SCORM 2004 3rd Edition Comformance Test Suite와 Sample RTE에서 잘 돌아가야 합니다.

간혹, 프로젝트하다 보면...
콘텐츠하고 솔루션하고 다투는 경우가 있습니다.
서로 안맞는 거죠.. -.-

그런데.. 같은 스펙을 보고 하는데 왜 안맞는지.. 쩝~~
콘텐츠에서는 Test Suite와 Sample RTE에서 돌아간다는 것만 보여주면 됩니다.
반대로 솔루션은 LMS Test Content Package가 잘 돌아간다는 것만 보여주면.. 되겠죠~~

그러면 둘이 서로 싸울일은 없을 겁니다. ~~

그럼.. 댓글 하나씩 부탁드릴께요..
스펨 때문에 회원만 정보를 입력할 수 있도록 했더니.. 사이트 접속 숫자는 변함이 없는데..
글을 쓰시는 분들이 너무 적네요.. -.-

어쨋든 좋은 하루 되세요~~~
2009/07/17 20:44 2009/07/17 20:44
Posted
Filed under Scorm
Sharable Content Object Reference Model(SCORM)을 사용하면 업체에서 제공한 학습 컨텐츠를 SCORM에 부합하는 Learning Management System(LMS)과 함께 사용할 수 있다.

SCORM은 정부, 학계, 업계 공동으로 개발되었으며 AICC, IMS, ARIADNE, IEEE LTSC의 작업을 하나의 참조 모델로 통합한다.

SCORM Version 1.2에는 두 종류가 있다. 이는 Run-Time Environment(RTE)와 Content Aggregation Model(CAM)이다.

RTE는 LMS로 시작하는 경우 컨텐츠가 어떻게 작동해야 하는지 설명한다.

CAM은 컨텐츠를 하나로 묶어 이를 LMS에 옮기는 방법을 설명한다. 이 과정에는 LMS가 컨텐츠 내용을 이해하기 위해 필요한 즉, 읽고 학습할 수 있는 형태의 XML 파일 생성 작업이 포함된다.

Run-Time Environment 요약

SCORM표준을 따르는 LMS는 컨텐츠와 LMS의 커뮤니케이션을 가능하게 하는 8가지 함수(전체 규격에 관해서는 3.3항의 SCORM Run-Time Environment 문서 참조)로 구성된 API를 구현하는데 필요하다.

LMSInitialize()
LMSFinish()

LMSGetValue()
LMSSetValue()
LMSCommit()

LMSGetLastError()
LMSGetErrorString()
LMSGetDiagnostic()

API는 SCORM이 API 어댑터에 호출하는 내용에 의해 구현된다. API 어댑터는 컨텐츠를 포함하는 오프너 윈도우(현재창을 열어준 윈도우)나 윈도우의 상위 프레임에 있어야 한다. 즉 LMS가 새로운 윈도우나 프레임세트에서 컨텐츠를 실행해야 한다는 것이다. API 어댑터는 DOM을 통해 접근이 가능한 API인 ECMAScript(JavaScript) 객체여야 한다. 어댑터는 위의 8가지 함수를 구현해야 한다.

컨텐츠와 LMS 사이의 모든 커뮤니케이션은 어댑터가 처리한다. 따라서 컨텐츠 작성자는 서버와 커뮤니케이션을 걱정하지 않아도 되며 API 어댑터를 찾아서 적절한 JavaScript 호출을 만들면 된다. 고객과 서버를 분리하는 것은 SCORM에서 매우 중요한데 이를 통해 표준 플랫폼(웹 브라우저)에서 컨텐츠를 작동하여 컨텐츠의 이동성을 확보할 수 있다. 컨텐츠는 JavaScript API 어댑터를 통해서만 LMS와 커뮤니케니션이 가능하다. 컨텐츠가 웹 서비스나 HTTP 요청과 같은 다른 방법을 통해 LMS와 커뮤니케이션 하는 SCORM 표준을 따르는 방법은 없다.

SCORM에 최소한 부합하기 위해 컨텐츠에 필요한 것은 시작할 때 LMSInitialize()를 호출하고 종료할 때 LMSFinish()를 호출하는 것이다.

그러나 실제로는 훨씬 깊이 있는 상호작용이 요구된다. 시험 결과를 보고하고, 시간을 추적하고 마지막 위치를 표시하는 등의 작업이 가능해야 한다. 이는 다음 3개 함수가 제 역할을 발휘하는 부분이다.

SCORM은 컨텐츠가 읽고 쓸 수 있는 데이터 모델 요소로 구성된 데이터 모델을 정의하여 이와 같은 기능(데이터 모델 요소 전체 리스트는 3.4항의 SCORM Run-Time Environment 문서 참조)을 용이하게 한다. LMSGetValue()는 LMS로부터 데이터 모델 요소의 값을 가져오고 LMSSetValue()는 LMS에 데이터 모델 요소 값을 쓰며, 값을 설정한 후 데이터가 지속될 수 있도록 LMSCommit()을 호출한다.

예를 들어,

cmi.core.lesson_location은 컨텐츠에서 사용자의 위치를 설명하는 데이터 요소이다.
컨텐츠가 시작되면(LMSInitialize(); 호출 후) 호출을 실행하여 사용자가 그만둔 부분을 찾아내서 그 지점으로 돌아갈 수 있게 한다.

strLastLocation = objAPI.LMSGetValue("cmi.core.lesson_location");

컨텐츠가 다른 부분으로 옮겨가면 사용자의 위치를 저장하기 위해 호출을 실행한다.

blnSuccess = objAPI.LMSSetValue("cmi.core.lesson_location", "page3"); blnSuccess = objAPI.LMSCommit("");

다른 3개 함수로 컨텐츠를 트랩하여 지능적으로 오류를 처리할 수 있다.

이처럼 LMS에서 API 어댑터를 구현하는 작업은 컨텐츠에서 사용하는 것보다 다소 복잡하다. API 어댑터는 API 함수를 모두 구현하고 대부분의 SCORM 데이터 모델을 지원해야 한다. SCORM 표준에 부합하는 LMS를 구현하는데 가장 어려운 문제는 브라우저와 서버 사이의 커뮤니케이션을 처리하는 방법이다. 많은 사람들이 Java 애플릿을 이용해 이 문제를 해결하지만 플래시, AcitveX 컨트롤, 순수 JavaScript를 사용하는 경우에도 결과는 성공적이었다.

                       Content Aggregation Model 요약

Content Aggregation 모델은 Content Model, Meta-data, Content Packaging의 세 부분으로 구분된다.
Content Model은 전달중인 컨텐츠를 기술한다. 컨텐츠가 한 개 이상의 모듈을 포함하는 경우, Content Model은 이들 모듈 사이의 관계(Aggregations라고 함)를 설명한다. 컨텐츠 모듈은 컨탠츠의 물리적 구조(필요한 파일 등)를 설명한다.

Content Model은 컨텐츠 재사용을 위해 컨텐츠를 임의의 크기 단위로 분해하는 강력한 모델을 설명한다. 이러한 단위를 Sharable Content Objects(SCO) 및 Asset이라고 한다. Asset은 “미디어, 텍스트, 이미지, 사운드, 웹 페이지, 평가 객체, 기타 데이터를 전자적으로 표현”하는 것이다. 예를 들면, Asset은 이미지, 사운드 클립, 플래시 무비 등이다. SCO는 학습의 논리 단위를 나타내는 한 개 이상의 Asset의 집합이다.

SCO의 정의가 상당히 모호하기 때문에 SCO는 하나의 웹 페이지가 될 수도 있고 수 백 개의 이미지와 Asset을 담은 방대하고 복잡한 웹 기반 교육 모듈이 될 수도 있다. SCO는 LMS가 추적할 수 있는 가장 작은 학습 단위로서 SCO를 표시하는 지침에 따라 컨텐츠 저작자가 정의하게 된다. SCO는 재사용될 수 있어야 한다. 재사용을 위해 SCO는 문맥에 의존적(Context Sensitive)이거나 다른 SCO를 참조하거나 다른 SOC와 링크되지 않아야 한다. SCO의 크기를 결정할 때 반드시 이러한 사안을 고려하도록 한다. 자세한 내용은 SCORM 2004 규격의 2.1항을 참조한다. 2.3항(Content Packaging)에서도 주요 세부사항을 설명하고 있다.

Meta-data 규격은 이미 정의된 공통 어휘를 사용하는 컨텐츠를 설명하는 메커니즘이다. 이러한 어휘는 다음과 같이 9개 종류로 구분된다.

   1. General 카테고리는 전체 자원을 설명하는 일반적인 정보로 구성된다.

   2. Lifecycle 카테고리는 자원의 기록이나 현재 상태와 관련한 내용이나 자원의 발전 중 영향을 준 내용으로 구성된다.

   3. Meta-metadata 카테고리는 Meta-data 기록 자체에 대한 정보이다(기록이 설명하는 자원이 아님).

   4. Technical 카테고리는 자원의 요건과 특징으로 구성된다.

   5. Educational 카테고리는 자원의 교육 및 교수학적 특징으로 구성된다.

   6. Rights 카테고리는 자원의 지적재산권과 사용조건으로 구성된다.

   7. Relation 카테고리는 해당 자원과 다른 목표 자원 사이의 관계를 설명하는 내용으로 구성된다.

   8. Annotation 카테고리는 자원의 교육적 사용에 대한 의견이나 이러한 의견이 언제 누구에 의해서 형성되었는지에 대한 정보를 제공한다.

   9. Classification 카테고리는 자원이 특정 분류 시스템의 어느 부분에 해당하는지 설명한다.

       Meta-data 규격은 매우 다양한 데이터 모델을 정의하지만 SCORM표준에 부합하기 위해서는 소수
       의 데이터 요소만이 필요하다. Meta-data 전체 규격은 SCORM Content Aggregation Model의 2.2
       항에서 볼 수 있다.

Content Packaging 규격은 Content Model과 Meta-data를 설명하고 패키지하는 방법을 정의한다. 시스템 사이의 호환성을 증대하기 위해서는 모든 컨텐츠를 유사한 방식으로 패키지한다.

Content Packaging 규격은 모든 컨텐츠가 하나의 패키지로 전이되도록 요구한다. 이러한 패키지는 Package Interchange File(PIF)이라는 하나의 파일로 묶을 수 있다. 패키지의 루트에는 "imsmanifest.xml"이라는 XML 파일이 있어야 하는데, 이는 지침과 꼭 있어야 하는 것은 아니지만 여러 학습을 구성하는 정적인 방법을 포괄하는 학습 재료(Content Model components)를 설명한다.

ADLNet.org에서는 다양한 Content Package의 예를 제공하고 있다.

이제 SCORM이 무엇이고 어떻게 작동하는지에 대해 상당한 수준으로 이해할 수 있을 것이다. 기술적인 관점에서 가장 중요한 두 가지 부분은 컨텐츠와 LMS 사이의 모든 커뮤니케이션은 JavaScript를 통해 이루어진다는 점과 LMS에 대한 컨텐츠 구조와 특성을 정의하는 imsmanifest.xml이라는 XML 파일이 컨텐츠에 포함되어야 한다는 것이다 . SCORM을 완벽하게 구현하기 위해서는 Run-Time Environment와 Content Aggregation Model에 대한 깊은 이해가 필요하다. 자세한 내용은 SCORM 규격의 기술 정보를 참조한다. 이들 정보는 ADLNet.org에서 제공받거나 mike@scorm.com으로 연락하면 된다.
2009/07/17 20:44 2009/07/17 20:44
Posted
Filed under Scorm

콘텐츠 통합 (Contents Aggregation)

콘텐츠 통합 모델 (Contents Aggregation Model)

메타데이터 (Metadata)

2009/07/17 20:43 2009/07/17 20:43
Posted
Filed under Scorm

[출처]www.word.pe.kr

4 SCORM RTE(Run-Time Environment) 첫번째~~


오랜만에.. SCORM 강좌를 이어서 진행하도록 하겠습니다. ^^

오늘은 SCORM RTE 부분을 살펴볼 것인데요.. RTE는 Run-Time Environment의 약자로서..

굳이 번역하자면 실행환경이라고 할 수 있습니다.


그렇다면 이런 실행환경이 왜 필요하고, 어떻게 구성되어 있으며~~

실제 호출하는 함수나 데이터 모델이 어떠한지를 살펴보도록 할 것입니다.


이것이 바로 SCORM RTE에서 다룰 내용의 전부라고 생각하시면 됩니다. *^^*

자~ 그럼 시작해 보도록 하겠습니다.~~


SCORM RTE의 개념


먼저 RTE가 왜 필요한지 생각해 보도록 하죠~~

SCORM이 등장하게 된 중요한 이유중의 하나는 바로 콘텐츠와 시스템의 분리였습니다.

그래서 목차나 각각의 차시에 대한 파일이나 여러 정보는 imsmanifest.xml을 통해 콘텐츠에 포함시켰습니다.

(어~ 이 부분의 내용이 생각이 안나신다구요.. ㅋㅋ 바로 앞의 강좌 5.3 콘텐츠 통합 모델을 다시 살펴보세요~~)


그렇다면, 이제는 콘텐츠가 가지고 있는 정보를 시스템에 알려줘야 합니다.

그래야 시스템에서 해당하는 목차도 띄워주고~ (물론 시쿼싱이 도입되면서 목차는 시퀀서가 처리하게 되지만.. 여기서는 편의를 위해 일단 이렇게 설명합니다.) 학습자의 학습시간, 평가점수 등도 받아서 저장하거나, 학습자가 요청할 때는 보내주어야 합니다.


이전의 이러닝에서는 콘텐츠와 시스템이 통합되어 있었기 때문에 이 모든 것을 시스템이 알아서 처리했죠~~


그러나 SCORM에서는 다음과 같은 방식으로 콘텐츠와 시스템의 연결을 해결하고 있습니다.




간단하게 도식화 한 것인데요~ 중요한 부분은 바로 API Adapter라는 것임다~ 콘텐츠의 각 SCO(Sharable Content Object)와 시스템인 LMS Server의 API Adapter가 웹 브라우저를 통해 서로 연결되는 것이죠..


다시 정리해 보면.. 콘텐츠에서는 API란 것을 두어서 호출을 합니다. 그럼 서버에서는 그 API를 받아서 처리하는 부분을 만들어 두는 것임다.


(참고로 API란 Application Program Interface로서 프로그램들을 서로 연결시켜주는 것이라고 대략 알아두시면 될 것 같네요)


그렇다면.. 대부분의 콘텐츠는 HTML이죠~ HTML에서 API란 걸 호출하는 방식으로 주로 자바스크립트가 사용됩니다.

그래서 콘텐츠의 SCO에 추가되는 API는 자바스크립트로 되어 있습니다.


자.. 서버에서는 호출된 API를 받아서 처리해야 하죠~ 그게 바로 API Adapter입니다. 기능은 콘텐츠에서 전달해온 값들을 저장하고, 콘텐츠에서 호출하는 값을 보내주는 역할이라고 생각하면 됩니다. 일반적으로 java로 구현하기도 하구요.. ActiveX로 만들기도 하죠.. 최근에는 이것을 Flash나 다른 걸로도 구현하기도 하더라구요..


SCORM RTE 동작 원리


이전 강좌에서 SCO와 Asset에 대해 설명을 했었죠 ~~ 기억나나요?

SCO가 여러개 모여야 Asset이 된다고 했었죠~~ 그쵸...

(네.. 하고 대답하신 분은 이전 강좌를 다시 살펴보시기 바랍니다. ㅋㅋ)


*^^* 아니죠.. Asset이 여러개 모여 SCO가 되기도 하고, Asset 하나가 SCO 하나가 되기도 한다고 했었죠~~


이 Asset과 SCO의 가장 큰 차이점이 바로 RTE에 있습니다.

Asset의 위에서 설명한 API를 가지고 있지 않구요.. SCO는 반드시 가지고 있어야 합니다.


즉, 서버와 통신하는 것은 SCO만 하는 것이구.. 그러므로 학습 결과 등의 데이터를 기록하는 것 또한 SCO만 가능한 거죠.

Asset은 학습을 했는지 않했는지 전혀 알 수 없습니다.


어쨌든.. 지금까지 왜 RTE가 필요하고 어떻게 콘텐츠와 시스템에 상호 통신하는지 알아봤습니다.

그렇다면 보다 자세하게 동작 원리를 좀 살펴보도록 하죠~~




자~ 그림을 위에서부터 시계방향으로 따라가 볼까요~~

LMS Server가 콘텐츠를 불러옵니다. Launch라는 표현을 쓰고 있네요.. Asset을 호출하기도 하고.. SCO를 호출하기도 합니다.


이중에 Asset은 API와의 연결이 없구요.. SCO만 API와의 연결고리가 있죠.. 바로 위에서 설명했었죠.. ^^


잘 보시면 SCO가 API를 통해 LMS Server와 통신을 하는데요.. 두 가지 정도 유의해서 보시면 됩니다.


1. API는 ECMAScript (걍 자바스크립트라고 생각하면 됩니다.)로 되어 있음다..

2. API를 호출할 때 전달되는 데이터는 Data Model이라고 하는 것에  담겨 있게 됩니다.


그렇다면,... 앞으로 살펴볼 것은 API의 내용과 Data Model이 되겠죠.. ^^


API 함수들


SCORM에 사용하는 API 함수는 다행히도 8개가 전부입니다.

와우~~ 너무 간단하죠^^


API 함수가 간단한 이유는 모든 데이터별로 함수가 존재하는 것이 아니고.. 데이터는 Data Model에 따라 정해지고..

함수는 공통적으로 사용하기 때문입니다.


그럼.. 8개의 함수를 살펴보도록 할까요?


Initialize (“”)

초기화 함수로서.. SCO가 Launch 될 때 호출합니다. (즉, 콘텐츠가 시작될 때 실행되는 것이죠)


Terminate (“”)

SCO가 종료될 때, 즉 콘텐츠가 닫힐 때 실행됩니다.


Commit (“”)

보통 SCO가 종료될 때 서버에 데이터를 전달하게 됩니다. 즉, Terminate가 호출될 때 서버에 데이터가 저장되는 것이죠.

그러나 중간에 이 Commit을 실행하면 현재 상태를 서버에 저장하는 역할을 합니다.


GetValue (parameter1)

서버에서 parameter1에 해당하는 값을 가져옵니다. 그렇다면.. parameter1의 형식이 바로 Data Model이 되겠죠. ^^


SetValue (parameter1, parameter2)

GetValue와 반대로 parameter1에 해당하는 값 parameter2를 서버에 저장합니다.


GetLastError ()

현재 발생한 오류 코드를 가져옵니다.


GetErrorString (errorcode)

GetLastError에서 가져온 오류코드 errorcode에 대한 에러 관련 문자열을 가져옵니다.


GetDiagnostics (errorcode)

GetLastError에서 가져온 오류코드 errorcode에 대한 에러 관련 상세한 내용을 가져옵니다.


간단하죠.. 그리 어려운 것은 없습니다.

시작할 때 Initialize, 끝날때 Terminate, 값을 가져오고 저장할 때 GetValue, SetValue 요게 핵심이죠.. ^^


하지만.. 실제 활용할 때는 위 함수들을 조합해서 많이 사용합니다. 그래서 위 함수들을 포함하는 함수를 만들어 놓고 사용하죠.. 보통 Wrapper 함수라고 이야기 하는데요..


다음 시간에는 이 Wrapper 함수와 실제 Photoshop 예제에서 어떻게 사용되고 있는지..


그리고 RTE에서 사용하는 Data Model에 대해서 정리해 보도록 하겠습니다.


그럼.. 좋은 하루 되세요~~ 2007.1.25 From 미니..

2009/07/17 20:43 2009/07/17 20:43
Posted
Filed under Scorm
[참조]http://www.word.pe.kr

5.7 SCORM 2004 CMI Data Model 두번째~



11. Learner ID

cmi.learner_id



12. Learner Name

cmi.learner_name



13. Learner Preference

cmi.learner_preference._children



cmi.learner_preference.audio_level



cmi.learner_preference.language


cmi.learner_preference.delivery_speed


cmi.learner_preference.audio_captioning




14. Location

cmi.location



15. Maximum Time Allowed

cmi.max_time_allowed



16. Mode

cmi.mode



17. Objectives



cmi.objectives._children


cmi.objectives._count


cmi.objectives.n.id


cmi.objectives.n.score._children


cmi.objectives.n.score.scaled



cmi.objectives.n.score.raw


cmi.objectives.n.score.min


cmi.objectives.n.score.max



cmi.objectives.n.success_status


cmi.objectives.n.completion_status


cmi.objectives.n.progress_measure


cmi.objectives.n.description


18. Progress Measure

cmi.progress_measure


19. Scaled Passing Score

cmi.scaled_passing_score



20. Score



cmi.score._children


cmi.score.scaled


cmi.score.raw


cmi.score.min


cmi.score.max


21. Session Time

cmi.session_time



22. Success_status

cmi.success_status



23. Suspend Data

cmi.suspend_data


24. Time Limit Action

cmi.time_limit_action


25. Total Time

cmi.total_time




2009/07/17 20:43 2009/07/17 20:43
Posted
Filed under PHP

<?
//indexer.php 주소 체계
class indexer{
//config
 ///##아이디 길이 설정##///
 var $MaxLenId = 12;
 var $MinLenId = 6;
 ///###################///
 var $post;
 var $tb;
 var $id;
 var $url;
 var $_url;
 var $errType; //추후 Exception타입을 결정하기 위한 변수 나중에 확장성을 위해서 선언
 ///##모드 변수 action을 결정하는 변수 ##///
 var $mode;
 //mode type = nomal,post,tb,errType
 //nomal = domain/아이디 일 경우
 //post  = domain/아이디/글번호
 //tb    = domain/tb/아이디/글번호
 //errtype = 아이디가 존재 하지 않거나 주소 체계가 잘못 된 경우  
 
 function indexer($_url){
  $this->_url = $_url;
  $str = explode("/",$this->_url);
  $this->url = $str[1];
 }// end indexer

 function idChk($id){
  $strCount=0;  //문자의 개수
  $NumCount=0;  //숫자의 개수
 
  if($this->MinLenId<=strlen($id) && strlen($id)<=$this->MaxLenId){
   
   for($cnt=0; $cnt<strlen($id); $cnt++){
  //문자일 경우  
    if(is_numeric($id[$cnt])==1){
     $numCount++;
     
    }
    else{
     $strCount++;
    }
 
   }
  // echo $numCount ." numCount <br>";
  // echo $strCount ." strCount <br>";
  //합당한 아이디 인지 검사
 
   if($numCount==6 && $strCount==0){
    $this->mode="errType";
   }
   else{
    $result="ok";
   }//end if
     
  }else{
   $this->mode ="errType";
  }//end if
  return $result;
 }//end idChk

 function IsId(){
  $numCount=0;
  $strCount=0;
  // 아이디 인지 트랙백 주소인지 체크
  //트랙백 주소인경우
  $str = explode("/",$this->_url);
  $ctr=0;
 
  if($this->url == "tb"){
   if(indexer::idChk($str[2])=="ok" && is_numeric($str[3])==1){
    $this->post = $str[3];
    $this->id   = $str[2];
    $this->mode = "tb";
   }
   else{
    $this->mode = "errType";
   }
  }
  //아이디인 경우
  else{
   if(indexer::idChk($this->url)=="ok" && is_numeric($str[2])==1){
    $this->post=$str[2];
    $this->id = $str[1];
    $this->mode = "post";
   }
   else if(indexer::idChk($this->url)=="ok"){
    $this->id =$str[1];
    $this->mode="nomal";
   }
  }//end if    
 }//end Isid
 
 //페이지 경로 설정
 function go(){
  $redirect;
  switch($this->mode){
   case "nomal":
    $redirect="blog_index.html?id=".$this->id;
    header("Location: http://".$_SERVER['HTTP_HOST']
                     . dirname($_SERVER['PHP_SELF'])
                     . "/" . $redirect);
   break;
   
   case "post":
    $redirect="blog_index.html?id=".$this->id."&post=".$this->post;
    header("Location: http://".$_SERVER['HTTP_HOST']
                     . dirname($_SERVER['PHP_SELF'])
                     . "/" . $redirect);
   break;
   
   case "tb":
    $redirect="Module/TrackBack/TrackBack.html?id=".$this->id."&post=".$this->post;
   //트랙백 개발시 트랙백 모듈에 전송해야 함.
    header("Location: http://".$_SERVER['HTTP_HOST']
                     . dirname($_SERVER['PHP_SELF'])
                     . "/" . $redirect);
   break;
   
   default:
    $redirect="Module/NotFound/NotFound.html";
    header("Location: http://".$_SERVER['HTTP_HOST']
                      . dirname($_SERVER['PHP_SELF'])
                      . "/" . $redirect);
   break;
  }
 }//end go
 
//###### 클래스 생성후 Load메소드 호출 ###########//  

 function Load(){
  indexer::IsId();
  indexer::go();
 }//end Load

//###### 클래스 생성후 Load메소드 호출 ###########//  
 
} //end class
?>

2009/07/17 20:43 2009/07/17 20:43
Posted
Filed under PHP

<?php

session_start();
include_once 'SHJUploader.inc.php.zend';
SHJUploaderClearFiles();

?>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script src="http://activex.off.co.kr/SHJUploader.js"></script>
</head>
<body bgcolor="#eeeeee">
<div id="message"></div>
<form method="post" enctype="multipart/form-data" action="post.php" target="_bg" onsubmit="return SHJUploaderSubmit(this);">
<input type="submit" value="올리기" /><br />
<input type="text" name="subject" value="test" /><br />
<input type="checkbox" name="check" value="1" /><br />
<input type="radio" name="radio" value="1" />
<input type="radio" name="radio" value="2" checked="" />
<textarea name="contents">test
test</textarea><br />
<div style="border-width:1px; border-style:solid; background-color:#cccccc; width:500px;">
<script>
SHJUploader('files', 500, 150, '<!--param name="DropImage" value="/drop.png" /--><param name="EraseImage" value="/del.png" /><param name="EraseOnImage" value="/del_on.png" />');
</script>
</div>
</form>
<div style="background-color:#eedddd;">
<a href="SHJUploader.inc.php.zend">SHJUploader.inc.php.zend</a>
</div>
<div style="background-color:#ddddee;">
<?php
highlight_file(__FILE__);
?>
</div>
<div style="background-color:#ddeedd;">
<?php
highlight_file('post.php');
?>
</div>
<iframe name="_bg" style="display:none;"></iframe>
</body>
</html>

2009/07/17 20:42 2009/07/17 20:42
Posted
Filed under etc

PHP

   cb_namecheck.zip 파일의 압축을 풉니다.

   cb_namecheck 파일을 서버의 적절한 디렉토리에 copy 합니다. (: /usr/bin)

(성명 확인 서비스를 위한 모듈입니다.

설치 환경 : red hat linux 6 이상, php 3 이상에서 서비스 가능합니다.)

   실행 가능하게 권한을 조정합니다.(755권한)

chmod +x cb_namecheck

   프롬프트 상에서 실행파일이 설치된 디렉토리로 이동하신 후 실행파일을 테스트해 봅니다.

cb_namecheck 사이트아이디 사이트Password 8자리 주민번호13자리 이름 <Enter>

위와 같이 실행시켰을때 리턴값이 나오면 제대로 설치된 것입니다.

Segmentation fault 가 나오면 파일을 바이너리로 다시 올려서 테스트해보십시오.

   Php.zip 파일의 압축을 풉니다.

nc_main.php,nc_coin.php (성명 및 주민번호 입력 page) nc_coin_p.php (성명 확인 처리 및 후속작업 page),nc_index.php 파일을 웹서버에 올립니다.

   nc_coin_p.php  파일을 여신후 수정합니다.

-          @SITEID @SITEPW 값을 한신평정보에서 발급한 값으로 변경합니다.

-          암호화 모듈을 설치한 위치를 수정합니다.

) 기본값  $cb_encode_path = "/usr/bin/cb_namecheck";

        /usr/bin/cb_namecheck 값을 실제 cb_namecheck 프로그램을 설치한 디렉토리로 바꿉니다.

   방화벽이 설치되어 있으시다면 등록하셔야 할 IP 와 포트 입니다. (5개 모두 등록하셔야합니다.)

IP: 203.234.219.72 è 포트 : 81, 82, 83, 84, 85

   설치된 모듈을 테스트해 봅니다.

-          브라우저에서 nc_main.php 를 호출합니다.    실명확인하기를 클릭하여 주민등록번호와 이름을 입력하는 팝업을 띄웁니다.

-          nc_coin_p.php 에서 리턴하는 결과값을 확인합니다.

-          nc_coin_p.php소스의 $iReturnCode 변수에 결과값이 넘어옵니다.

-          $iReturnCode 변수에 공백이 나온다면 $cb_encode_path 를 확인해주십시오.

   결과값에 따른 리턴코드표입니다.

0 : 기본값임. $HTTP_REFERER sURLnc와 비교하는 if문 값이 False일때.

1 : 본인 맞음

2 : 본인 아님

3 : 자료없음.

4 : 시스템 장애.( 크레딧뱅크 사이트 이상 )

5 : 주민번호 오류 ( 주민번호 체크 썸이 맞지 않은 경우.)

6 : 성인인증시 만19세 이하인 경우(서비스성격이 성인인증일 경우에만 해당됩니다.)

9 : send 된 데이타가 이상한 경우.

( 주민번호, 비밀번호, 사이트아이디, 성명 중 한개의 데이타라도 빠지고 온 경우.)

10 : 사이트 코드 오류 ( 대소문자를 확인해 주세요.)

11 : 정지된 사이트 ( 저희쪽 계약 담당자에게 문의 주세요.)

12 : 해당사이트 비밀번호 오류 ( 저희쪽에서 보내드린 비밀번호 확인후 이상시 연락주세요.)

13 : 사이트 인증 시스템 장애 ( 개발자에게 연락주세요.)

15 : Decoding 오류(Data)

16 : Decoding 시스템장애

21 : 암호화 데이타 이상 ( 주민번호(13), 비밀번호(8) 자릿수를 확인해 주세요.)

24 : 암호화 연산중 에러 ( 올바르지 않은 주민번호인지 확인해 주세요.)     

31 : 연결장애

( 서버에서 아래의 경로로 접속해 보시고 연결 안 되실 경우 개인 pc에서 해보시고 그래도 연결이 안될 경우는 문의 주십시오. 서버쪽에서만 안 될 경우 서버 네트워크

확인 해주세요)

http://203.234.219.72:81/check.asp

http://203.234.219.72:82/check.asp

http://203.234.219.72:83/check.asp

http://203.234.219.72:84/check.asp

http://203.234.219.72:85/check.asp

32 : 결과값 이상…(result= ) 형식으로 데이터가 넘어오지 않은 경우…

34 : 통신 중 장애발생

(방화벽 확인해 보시고,php설치시 socket사용 가능하도록 설정되어있는지 확인해 보세요.)

50 : 정보도용 차단 요청 주민번호

(실명확인 요청시 성명 일치/불일치에 관계없이 결과값으로 "50"을 리턴)

  55~57 : 외국인 번호 확인 오류

  58 : 출입국 관리소 통신 오류

 

   결과를 받은 이후에 결과값에 따라 각 사이트에서 추가로 처리할 작업을 coding 합니다.

 

실명확인이 안되신 분들(결과값 2, 3)은 첨부파일의(실명확인결과 처리방법.doc)

스크립트를 참조하셔서 팝업 페이지를 띄워서 처리해 주시거나,

첨부파일의(실명확인결과처리.zip) 성명불일치폴더에 있는 its.html 페이지를

기준으로 고객사 전용 페이지 제작 하셔서 처리해 주시면 됩니다.

정보도용차단 요청 주민번호 (결과값 50) 는 실명확인 요청시 성명 일치/불일치에 관계없이 결과값으로 "50"으로 리턴됩니다. 첨부의 "실명확인결과 처리방법.doc"스크립트를 참조하셔서 팝업 페이지를 띄워서 처리해 주시거나,첨부의(실명확인결과처리.zip) 정보도용차단폴더에 있는 itsProtect.html 페이지를 기준으로 고객사 전용 페이지 제작 하셔서 처리해 주시면 됩니다

 

다음은 한신평정보의 테이타 보유현황입니다.

14세미만 : 코드 내용
--- ---------------------------------------------------------------------------------
0 : 기본값임. $HTTP_REFERER를 sURLnc와 비교하는 if문 값이 False일때.
1 : 본인 맞음(주민번호와 이름이 일치하는 경우.)
2 : 본인 아님
    (주민번호는 맞고 이름이 올바르지 않은경우.
     http://www.namecheck.co.kr/per_callcenter.asp로 이동하시게 하셔서 수정해 주시면
     입력한 정보가 맞을경우 추후에 실명확인 이용가능하게 됩니다.)
3 : 자료 없음
    (한신평정보에 입력한 데이타가 없는경우.
     http://www.namecheck.co.kr/per_callcenter.asp로 이동하시게 하셔서 입력해 주시면
     입력한 정보가 맞을경우 추후에 실명확인 이용가능하게 됩니다.)
4 : 시스템 장애.
    귀사의 네트워크장애일 경우도 발생하고,
    방화벽이 설치되어 있으실경우 저희쪽 서버 IP,Port를 등록해 주지 않으셨을 경우에도 발생합니다.
    네트워크 확인해 주시고 문의 주십시오.
5 : 주민번호 오류 (주민번호 체크 썸이 맞지 않은 경우.)
6 : 성인인증시 만19세 이하인 경우 실명인증 거치지 않고 바로 리턴코드 출력됩니다.
    (실명확인 서비스 신청시 서비스성격이 성인인증인 업체에만 해당됩니다.)

7 : 선불제인데 일반실명확인 서비스로 들어온경우.
8 : 일반실명확인 서비스인데 선불제로 들어온경우.

9 : request 데이타 오류.(주민번호+비밀번호 데이터가 없을 경우, 이름이 안 왔을 경우)
10 : 사이트 코드 오류 ( nc_p.php 에 입력하신 사이트 아이디의 대소문자를 확인해 주세요. 대문자로 입력하셔야 합니다.)
11 : 정지된 사이트 ( 저희쪽 계약 담당자에게 문의 주세요.)
12 : 해당사이트 비밀번호 오류 ( nc_p.php 에 입력하신 사이트 패스워드를 확인해 주시기 바랍니다.)
13 : 사이트 인증 시스템 장애(개발자에게 연락주세요.)
15 : Decoding 오류(Data)
16 : Decoding 시스템장애

18 : 선불제에서 코인이 소멸된경우.

21 : 암호화 데이타 이상 ( 주민번호(13), 비밀번호(8) 자릿수를 확인해 주세요.)
24 : 암호화 연산중 에러 ( 올바르지 않은 주민번호인지 확인해 주세요.)
31 : 연결 장애
    (실명확인 모듈을 설치한 서버의 브라우져에서 아래의 경로로 접속해 보시고
     연결 안 되실 경우 개인 pc에서 해보시고 그래도 연결이 안될 경우는 문의 주십시오.
     서버쪽에서만 안 될경우 서버 네트워크 확인 해주시고,
     방화벽이 설치되어 있을경우 저희쪽 실명확인 서버 IP(203.234.219.72),Port(81~85)를 등록해 주셔야 통신 가능합니다.)
    
     http://203.234.219.72:81/check.asp
     http://203.234.219.72:82/check.asp
     http://203.234.219.72:83/check.asp
     http://203.234.219.72:84/check.asp
     http://203.234.219.72:85/check.asp

     위의 아이피로 접속하셨을때 아이피와 디렉토리가 출력되면 네트워크는 정상입니다.

32 : 결과값 이상…(result= ) 형식으로 데이터가 넘어오지 않은 경우…
34 : 통신중 장애발생 (방화벽확인,php설치시 socket 사용 가능하도록 설정되어있는지 확인)

50 : 명의도용 차단 요청 주민번호
(실명확인 요청시 성명 일치/불일치에 관계없이 결과값으로 "50"을 리턴)

55~57 : 외국인 번호 확인 오류
58 : 출입국 관리소 통신 오류
10% /
14~17 : 30% /18 ~ 20 : 50% /20세이상 : 90%

2009/07/17 20:42 2009/07/17 20:42