moodle/lang/ko_utf8/docs/developer.html

198 lines
19 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Moodle Docs: Developers Manual</title>
<link rel="stylesheet" href="docstyles.css" type="TEXT/CSS" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h1>개발자 지침서</h1>
<blockquote>
<p>이 문서는 대략적인 무들의 구조와 여러분들이 어떻게 무들에 공헌할 수 있는지에 대해 설명하고 있습니다.</p>
<p>아직은 다소 미흡하지만, 결국은 좀 더 나은 문서로 선보일 수 있을 것입니다!</p>
<p>본 문서의 차례</p>
<ol>
<li><a href="#architecture">무들의 얼개</a></li>
<li><a href="#contribute">공헌할 수 있는 방법</a>
<ul>
<li><a href="#activities">학습 활동</a></li>
<li><a href="#themes">테마</a></li>
<li><a href="#languages">언어</a></li>
<li><a href="#database">데이터베이스 스키마(Schemas)</a></li>
<li><a href="#courseformats">배움터의 유형</a></li>
<li><a href="#doc">문서 및 논문 기고</a></li>
<li><a href="#bugs">버그 추적자로 참여</a></li>
</ul>
</li>
</ol>
</blockquote>
<p>&nbsp;</p>
<h2><a name="architecture"></a>1. 무들의 얼개</h2>
<blockquote>
<p>시스텡 운영자의 관점에서, 무들은 다음과 같은 기준에 의하여 설계되었습니다.</p>
<ol>
<li><strong>광범위하고 다양한 운영체제하에서 작동</strong><br />
<br />
대개의 웹어플리케이션이 동작되는 운영체제(Linux, Windows, Mac OS X)는 MySQL과 PHP가 연동되어 운영되는 데, 무들 역시 이러한 기반하에서 개발되어 왔습니다. 또한 무들은 데이터베이스의 축약을 위해 ADOdb 라이브러리를 사용하고 있는데, 이는 곧 무들이 <a href="http://php.weblogs.com/ADOdb_manual#drivers">열 개 이상의 서로 다른 브랜드의 데이터베이스</a>를 사용할 수 있다는 것을 의미합니다. (그럼에도, 안타깝게도 아직 이 모든 데이터베이스에 대한 <em><strong>테이블 설정</strong></em>만큼은 해결하지 못하고 있습니다.)<br />
<br />
</li>
<li><strong>설치, 운영 및 개선이 용이</strong><br />
<br />
초기 무들의 원형(1999)은 향상된 객체지향적 웹어플리케이션 서버인 <a target="_top" href="http://www.zope.org/">Zope</a>을 이용하여 만들어졌었습니다. 안타깝게도 그 기술은 매우 훌륭해 보였지만, 공부하기에는 너무 어려웠고 또 시스템 관리자의 관점에서 그리 유연하지도 않았습니다. 반면 PHP언어는 (특히 여러분들이 다른 스크립트 언어로 프로그램을 해 보셨다면) 매우 쉽게 접근할 수 있는 언어였습니다. 일찌감치 학급 지향의 설계를 피하려고 마음먹었고 초보자도 이해할 수 있을 정도로 간단하게 만들려고 하였습니다. 명확한 이름의 함수 라이브러리와 일관성있는 스크립트 파일 형태를 활용함으로써 코드는 가급적 재활용할 수 있게 하였습니다. 또한 PHP는 설치하기도 쉽고(바이너리 코드는 어떤 운영체제에서도 실행 가능) 대부분의 웹 호스팅 서비스에서도 기본으로 지원하고 있다는 점에서 매우 광범위하게 쓸 수 있습니다.<br />
<br />
</li>
<li><strong>구판에서 새판으로의 판올림이 용이</strong><br />
<br />
(플러그인 모듈의 버전뿐만 아니라) 설치되어 있는 버전 및 내장된 기능을 기억하고 있기 때문에 (예를 들어 데이터베이스의 명칭을 바꾸고 새로운 필드를 첨가하는 등) 새로운 버전으로 판올림하기가 용이합니다. 예를 들어 유닉스에서 CVS 를 이용한다면, 명령어 라인에서 &quot;cvs update -d&quot; 만 입력하고 사이트의 홈페이지를 한 번 접속하는 것만으로 판올림이 끝납니다.<br />
<br />
</li>
<li><strong>발전 가능한 모듈형 구조</strong><br />
<br />
무들은 모듈, 테마, 활동, 인터페이스 언어, 데이터베이스 스키마 그리고 배움터 유형 등의 다양한 기능을 포함하고 있습니다. 또한 어느 누구라도 프로그램 수준에서 다른 기능을 첨가할 수 있고 그 것을 개별적으로 배포할 수 있는 융통성을 허용합니다. 이에 대해서는 다음 절에서 더 논의하기로 하겠습니다.<br />
<br />
</li>
<li><strong>다른 시스템과의 용이한 병합 사용가능</strong><br />
<br />
두드러진 무들의 특징 중 하나는 어떤 배움터도 거기에 사용되는 모든 파일들을 서버에 있는 단 하나의 디렉토리에 저장하고 관리한다는 것입니다. 이는 시스템관리자가 개별 교사에게 파일 수준에서 Appletalk, SMB, NFS, FTP, WebDAV 등과 같은 것을 통해 쉼없이 자료를 제공할 수 있는 융통성을 갖게 해 줍니다. 인증 모듈은 무들이 LDAP, IMAP, POP3, NNTP 그리고 다른 데이터베이스 등을 사용자 정보 자원으로 사용할 수 있게 허용합니다. 하지만 아직 더 할 일이 남아 있습니다. 추후 무들의 새 판에는 다음과 같은 기능들을 첨가하려고 합니다: (IMS와 SCORM을 포함해) 무들의 데이터를 XML 기반한 형태로 작성하여 내보내고 불러들이기 편하게 만든다; 화면을 표시함에 있어 좀 더 다양한 문서 표현방식을 도입한다.(이렇게 하면 다른 웹사이트와 통합해서 쓸 때 무리없이 잘 보이게 됩니다).</li>
</ol>
</blockquote>
<p>&nbsp;</p>
<h2><a name="contribute" id="contribute"></a>2. 공헌할 수 있는 방법</h2>
<blockquote>
<p>앞에서 언급하였듯이 무들은 여러 기능이 모여 만들어진 모듈형 프로그램입니다. 여러분이 프로그래머가 아니더라도 무들을 고치거나 기여할 수 있는 방법이 있습니다.</p>
<h3><a name="activities" id="activities"></a>학습 활동</h3>
<blockquote>
<p>무들에서 가장 중요한 모듈들이 들어었는 곳이 있는데, 그 곳이 바로 'mod' 디렉토리 입니다. 여기에는 숙제(assignment), 간편 설문(choice), 포럼, 퀴즈, 자원 그리고 설문조사의 7 개의 기본 모듈이 들어 있습니다. 각 모듈은 각기 또 하부 디렉토리를 가지고 있는데, 여기에는 다음과 같은 지원 요소와 나름대로 독특한 실행 스크립트를 가지고 있습니다.</p>
<ul>
<li>mod.html: 설정 혹은 갱신 할 때 보여지는 화면 설계 형식</li>
<li>version.php: 메타 정보 및 판올림시 제공되는 코드의 정의</li>
<li>icon.gif: 모듈을 위한 16x16 아이콘</li>
<li>db/: (각 데이터베이스 유형에 맞는) 데이터 및 데이터 베이스 테이블에 필요한 모른 SQL 덤프</li>
<li>index.php: 배움터에서 보여지는 목록 페이지</li>
<li>view.php: 특정 인스턴스를 보여주기 위한 페이지</li>
<li>lib.php: 모듈에 의해 정의되는 모든 함수는 여기에 존재해야 함. 만약 모듈명이 widget으로 불려지면, 요구되는 함수는 다음과 같다:
<ul>
<li>widget_add_instance() - 위젯의 새로운 인스턴스를 첨가하기 위한 코드</li>
<li>widget_update_instance() - 기존 인스턴스를 갱신하기 위한 코드</li>
<li>widget_delete_instance() - 인스턴스를 삭제하기 위한 코드</li>
<li>widget_user_outline() - 인스턴스를 통해 사용자의 내용에 대한 요약을 제공</li>
<li>widget_user_complete() - 인스턴스를 통해 사용자의 내용에 대한 상세 내용을 출력<br />
</li>
<li>혹시 있을지도 모르는 충돌을 막기 위하여, 모듈 함수명은 widget_ 로 시작하였으며 정의된 상수명은 WIDGET_ 로 시작하도록 하였습니다.</li>
</ul>
</li>
<li>최근, 각 모듈은 자체에서 쓰이는 문자열을 포함하는 언어 파일들을 포함하게 되었습니다. 아래를 참조하기 바랍니다.</li>
</ul>
<p>새 학습 활동 모듈을 시작하는 가장 손쉬운 방법은 <strong><a href="http://moodle.org/mod/newmodule_template.zip">mod/newmodule_template.zip</a></strong>를 가지고 시작하는 것입니다. 이 것을 내려 받아 압축을 푼 다음, 그 속에 있는 README를 읽고 시키는 대로 하면 됩니다.</p>
<p>그리고 <a href="http://moodle.org/mod/forum/view.php?id=44" target="_top">Activities
modules forum on Using Moodle</a>에 알려주시면 고맙겠습니다.</p>
<p>&nbsp;</p>
</blockquote>
<h3><a name="themes" id="themes"></a>테마</h3>
<blockquote>
<p>테마(혹은 스킨)은 사이트의 겉모양을 규정합니다. 주 배포판에 상당수의 간단한 테마들이 있긴하지만, 여러분이 원한다면 여러분이 좋아하는 색이나 로고, 스타일, 그림등을 이용하여 자신만의 테마를 만들 수 있습니다.</p>
<p>각 테마는 &quot;theme&quot; 이라는 이름의 하부 경로에 있으며 대체로 다음과 같은 파일들이 들어 있습니다.</p>
<ul>
<li><strong>config.php</strong>: CSS파일들의 작동을 설정. 외부 혹은 내부의 CSS파일을 표준 테마 혹은 상위 테마에 덧붙여 자신만의 테마를 구성할 수 있음.</li>
<li><strong>styles.php</strong>: CSS 파일과의 교량 역활을 함. 아무 것도 수정할 필요 없음.</li>
<li><strong>header.html</strong>: 각 페이지 상단에 삽입됨. 예를들어 페이지 상단에 로고를 첨가하거나 그 내용을 수정하고 싶을 때 필요</li>
<li><strong>footer.html</strong>: 각 페이지의 하단에 삽입됨</li>
<li><strong>styles_color.css</strong>: 색상의 특성에 관한 CSS 스타일 지정</li>
<li><strong>styles_fonts.css</strong>: 글자 유형, 크기, 줄간 간격 등을 지정</li>
<li><strong>styles_layout.css</strong>: 페이지의 면모, 위치 등을 지정</li>
<li><strong>styles_moz.css</strong>: Mozilla의 특징적인 둥근 모서리에 대한 CSS 스타일 지정</li>
</ul>
<p>현재 쓰고 있는 무들에 자신만의 새로운 테마를 만들어 쓰는 법</p>
<ol>
<li>기존에 있는 테마 폴더를 다른 이름으로 복사. 가급적 표준테마 하나를 복사해서 시작하는 것이 좋음</li>
<li>config.php를 편집하여 자신의 용도에 맞게 설정</li>
<li>CSS 파일들을 편집하여 쓰고 싶은 스타일을 첨부</li>
<li>header.html 및 footer.html 를 편집하여 새로운 로고나 화면틀을 변경</li>
</ol>
<p>한편 무들을 판올림(Upgrade)할 때 약간 테마가 <em>깨질 수 있다</em>는 사실을 기억하시기 바랍니다. 따라서 여러분 나름대로의 테마를 사용할 때는 배포정보(release note)를 주의깊게 읽어보아 주시기를 부탁드립니다.</p>
<p>무들의 테마에 대한 좀더 자세한 내용은 <a href="http://docs.moodle.org/wiki/Themes">Moodle Docs</a>안의 테마에 관한 문서를 참조해 주시기 바랍니다.</p>
<p>이에 대한 좀 더 자세한 논의는 <a target="_top" href="http://moodle.org/mod/forum/view.php?id=46">Themes
forum on Using Moodle</a>를 참조하시기 바랍니다. 만일 여러분이 정말 멋있는 테마를 만들고 이를 다른 사람들과 공유하고 싶다면, 이를 Zip 파일로 묶어 테마포럼에 올려주십시오!<br />
</p>
</blockquote>
<h3><a name="languages" id="languages"></a>언어</h3>
<blockquote>
<p>Moodle은 국제화 할 수 있도록 설계되었습니다. 인터페이스의 한 부분으로 표현되는 각 '문자열' 혹은 문서 '페이지'는 언어팩으로부터 가져와 보여집니다. 개개의 언어는 'lang'디렉토리 하부에 있습니다. 다음은 이러한 언어팩의 구성을 보여줍니다.</p>
<p><strong>lang/en</strong> - 영어를 위한 모든 파일이 담겨져 있는 디렉토리(예: 영어의 경우)</p>
<ul>
<li>moodle.php - 주 기능을 담당하는 모든 문자열</li>
<li>assignment.php - 숙제 모듈을 위한 문자열</li>
<li>choice.php - 선택 모듈(choice module)을 위한 문자열</li>
<li>forum.php - 포럼 모듈을 위한 문자열</li>
<li>quiz.php - 퀴즈 모듈을 위한 문자열</li>
<li>resource.php - 자원 모듈을 위한 문자열</li>
<li>survey.php - 설문조사 모듈을 위한 문자열</li>
<li>.... 기타 필요한 여러 모듈을 위한 문자열들<br />
<br />
문자열은 이러한 파일들로 부터 <strong><em>get_string()</em></strong> 또는 <em> <strong>print_string()</strong> </em> 함수를 통해 제어됩니다. 각기 다른 언어에서의 다양한 명령을 지원하기 위해 각 문자열은 변수치환을 지원합니다.<em><br />
<br />
</em>예 : $strdueby = get_string(&quot;assignmentdueby&quot;, &quot;assignment&quot;,
userdate($date)); <br />
<br />
만일 해당 언어팩에 그 문자열이 없으면, 자동적으로 동일한 영문 문자열로 대치합니다.</li>
</ul>
<p><strong>lang/en/help</strong> - 전체적인 도움말 페이지(팝업창으로 뜸)가 있는 디렉토리</p>
<blockquote>
<p>주 도움말 페이지는 이 곳에 위치하지만, 각 모듈에 따른 특별한 도움말은 각기 모듈에 속한 하부 경로에 존재하게 됩니다.</p>
<p>도움말 버튼 기능을 이용하여 필요한 페이지에 도움말 버튼을 삽입할 수 있습니다.</p>
<p>예 : helpbutton(&quot;text&quot;, &quot;Click here for help about text&quot;);</p>
<p>그리고 모듈에서는 다음과 같이 삽입할 수 있습니다.</p>
<p>helpbutton(&quot;forumtypes&quot;, &quot;Forum types&quot;, &quot;forum&quot;);</p>
</blockquote>
<p>무들에 접속한 상태에서 &quot;Check this language&quot;에 있는 관리 툴을 이용하여 언어를 편집할 수 있음을 주목하십시오. 이를 이용하면 새로운 언어팩을 만들 수 있을 뿐만 아니라, 기존의 언어팩도 쉽게 바꿀 수 있습니다. 만일 여러분이 새로운 언어팩을 만들고자 할 때는 <a target="_top" href="http://dougiamas.com/">Martin Dougiamas</a>에게 연락해 주시면 고맙겠습니다.</p>
<p><a target="_top" href="http://moodle.org/mod/forum/view.php?id=43">Languages
forum on Using Moodle</a>에 글을 게재하셔도 됩니다.</p>
<p>만일 여러분이 지속적으로 언어팩을 관리하기를 원하신다면, 저는 여러분에게 직접 관련된 파일을 관리하실 수 있도록 무들의 원본 코드에 접속할 수 있는 <a href="?file=cvs.html">CVS</a> 쓰기 권한을 제공할 것입니다.</p>
</blockquote>
<h3><a name="database" id="database"></a>데이터베이스 스키마(Schemas)</h3>
<blockquote>
<p>미리 정의된 테이블을 가진, 잘 작동되는 데이터베이스를 제공함으로서, 무들에 있는 단순한 SQL은 어떤 다양한 데이터베이스 브랜드에서도, 전 세계 어디에서나 잘 작동하게 되어있습니다.</p>
<p>데이터 베이스에서 새로 생성되는 테이블의 <strong>자동 생성</strong>문제는 무들의 초기 설정과정을 통해서 해결하려고 노력하고 있습니다. 모든 데이터베이스가 서로 다르기 때문에, 작동기반에 독립적인 방법으로 이 문제를 해결할 방도는 아직 없습니다. 각 데이터베이스에서 이러한 자동생성 기능을 지원하기 위하여, 특정 데이터베이스의 무들 테이블을 생성하는데 필요한 SQL 목록을 schema로 만들어 둡니다. 이러한 파일들은 개개 모듈의 <strong>db</strong>안에 하부 디렉토리 속에 있거나 <strong>lib/db</strong>에 있습니다.</p>
<p>현재는 MySQL과 PostgreSQL만 이러한 방법으로 원활하게 지원되고 있습니다.(다른 브랜드의 데이터베이스에 대한 schema는 아무도 만들지 않았습니다.)</p>
<p>무들1.2 판은 데이터베이스 종류와 무관한 새로운 방법인 XML 스키마를 쓸 예정인데, 이렇게 되면 불필요한 일이 많이 줄어들게 될 것입니다.</p>
</blockquote>
<p>&nbsp;</p>
<h3><a name="courseformats" id="courseformats"></a>배움터 유형</h3>
<blockquote>
<p>무들은 현재 주별, 주제별 그리고 사회적 형태의 세 배움터 유형을 지원합니다.</p>
<p>다른 코드들 보다 좀 엉성한 것들(그래서 좀 삐걱거리는 것들)이 있는데 이들을 새롭게 다듬는 것은 시간문제 입니다.</p>
<p>만일 여러분들이 필요하거나 바람직한 또 다른 형태의 배움터에 대한 좋은 생각이 있으시면, 제게 연락을 해 주시기 바랍니다. 그러면 추후 배포판에서 가능한 한 구현할 수 있도록 최선을 다하겠습니다.</p>
</blockquote>
<p>&nbsp;</p>
<h3><a name="doc" id="doc"></a>문서 및 논문 기고</h3>
<blockquote>
<p>지침서, 기사, 학술적 논문 혹은 어떠한 것이라도 무들에 관한 것을 기고하고 싶으시다면, 언제나 환영합니다! </p>
<p>여러분의 웹에 게재하신 후, 반드시 <a target="_top" href="http://moodle.org/">http://moodle.org/</a>에도 게재해 주시길 부탁드립니다.</p>
</blockquote>
<p>&nbsp;</p>
<h3><a name="bugs" id="bugs"></a>버그 추적자로 참여</h3>
<blockquote>
<p>마지막으로, 저는 여러분이 <a target="_top" href="http://moodle.org/bugs/">http://moodle.org/bugs</a>&quot;버그 추적자&quot;로 등록하고, 발견되는 오류에 대해 서로 의견을 나누고 잘 못된 것을 바로잡을 수 있기를 간절히 바랍니다. </p>
<p>&quot;버그&quot;에는 비단 무들의 현재 판에 있는 소프트웨어적인 버그뿐만 아니라, 기존 기능에 대한 건설적인 비판이나 새로운 아이디어, 요구되는 기능 등도 포함됩니다. 오픈소스의 아름다움이란 바로 모든 사람이 어떤 방법으로든 참여하고, 모든 사람들이 즐길 수 있는 좀 더 나은 제품이 만들어지도록 서로 돕는데 있다고 생각합니다. 이 프로젝트에 적극적인 여러분의 참여를 바라고 있습니다!</p>
</blockquote>
</blockquote>
<p>&nbsp;</p>
<blockquote>
<blockquote>
<blockquote>
<p align="center">무들을 애용해 주셔서 감사합니다!<br />
<br />
수석 개발자, &nbsp;&nbsp;<a target="_top" href="http://dougiamas.com/">Martin Dougiamas</a></p>
</blockquote>
</blockquote>
</blockquote>
<p>&nbsp;</p>
<blockquote>
<p>&nbsp;</p>
</blockquote>
<p align="center"><font size="1"><a href="." target="_top">Moodle Documentation</a></font></p>
<p align="center"><font size="1">Version: $Id$</font></p>
</body>
</html>