다음의 내용과 소스는
혁명을 꿈꾸다 HTML5 & API 입문
앞서가는 디자이너와 퍼블리셔를 위한 HTML5 & CSS
을 참고 하였습니다.


이번엔 Web Worker 에 대해서 살펴보려하는데요...
글을 쓰는데 쫌 시간이 걸렸읍니다. ㅋㅋ

JavaScript 가 저를 괴롭혀서... 간단한 Script 인데도 말이죠... ^^;

Web Worker !!!
이젠 Web Browser 에서도 Desktop Application 에서 처럼 Multitasking? 을 할 수 있게 되었습니다.
완전히 Desktop Application 에서 지원하는 Multitasking 과 완전히 같지는 않지만 Web Browser 의 UI Thread 와 완전히 분리된  Background 에서 동작합니다.

기존에는 Javascript 가 오랜 계산을 해야 할 경우 그 계산을 마칠때까지 사용자는 기다려야 했지요.
하지만, 이제 Web Worker 를 사용하면 Javascript 의 오랜 계산에도 사용자는 아무런? 버벅거림도, 기다림도 없이 Web Application 을 이용할 수 있습니다.


15-1. 사용법
Web Worker 를 사용하기 위해서는 먼저 Web Worker 가 호출하여 사용하게될 Javascript 파일이 외부에 필요하게 됩니다.

그리고 사용은 그리 어렵지 않습니다.

var worker = new Worker("외부 Javascript 파일명")

차아~~암. 쉽쬬~~~잉? ㅋㅋㅋ

그리고, 중요한 함수인 postMessage() 와 onmessage . 두 녀석을 기억하셔야 합니다.

이 두녀석은 UI Thread 와 BackGround 사이에서 통신을 하게 되는데요.   
기억하실런지 모르겠지만 전 글에서 이야기 했던 Communication API 와 이제 곧 이야기를 하게될 Web Socket 에서 공통으로 사용하는 개념이지요.
postMessage 로 Message 를 던지면 먼저 등록해 놓은 onmessage Event handler 로 Message 를 받지요.
그리고 다시 posetMessage 로 결과를 되돌려 주게 되고요. onmessage EventHandler로 결과를 받습니다. 
주저리주저리 말보다는 한 줄 코드가 더... ^^;

 먼저 이야기 했듯이 웹페이지 하나와 외부 Javascript File 을 하나 작성할 것입니다.

Javascript 파일을 먼저 구현하겠습니다.
(worker.js)

onmessage = function(evt) {
    var num = evt.data;
    var result = 0;
    for(var i = 1; i <= num; i++)
    {
        result += i;
    }
    postMessage(result);
};

(발췌/수정 : 혁명을 꿈꾸다 HTML5 & API 입문)


(WebWorker.html)

<!DOCTYPE html>
<html lang="ko">
 <head>
        <meta charset="utf-8" />
  <title>Web Worker 예제</title>
 </head>
 <body>
        <input type="text" id="num">
        <button onclick="calculate()">계산</button>
        <button onclick="stopCalculate()">중지</button><br/>
        <p id="sum">Sum :</p>
 </body>
        <script type="text/javascript">     
      
                var worker;

                function calculate() {

                    if(worker)  {                 
                        worker.terminate();            
                    };

                    var num = document.getElementById("num").value;

                   
worker = new Worker("worker.js");
                    
                    worker.onmessage = function(evt) {
                         document.getElementById("sum").innerHTML = "Sum : " + evt.data;
                    };  
                  
                    worker.onerror=function(evt) {
                        alert("Error : " + evt.message + " (" + evt.filename + ":" + evt.lineno + ")");
                    };

                   
worker.postMessage(num);

                }

                function stopCalculate() {
                    if(worker)  {                 
                        worker.terminate();          
                    };
                    alert("Worker is Stopped");
                }
        </script>
</html>

(발췌/수정 : 혁명을 꿈꾸다 HTML5 & API 입문)


실행시킨 모습입니다.


internet explorer 9.0 에서는 작동을 하지 않았습니다. ㅡㅡ'
Opera 도 동작은 하는 듯 보였지만 worker instance 는생성을 했지만
외부 Javascript 파일쪽에서 Script error 가 발생을 하네요...
이건 좀 찾아 봐야할 듯합니다.




위 예제는 간단한 듯하여 예제 하나를 더 소개합니다.

아래 예제는 page 와 worker 간에 계속 계산값을 던집니다.
일을 계속 시키고 싶으셔도 빨리 세워주셔요...버버거림을 느끼실수도... ㅋㅋ

(cals.js)

onmessage = function(evt) {
    for (var i = evt.data; i < 1000000; i++)
    {
        postMessage(i);
    };
};

(webWorker.html)
<!DOCTYPE html>
<html lang="ko">
 <head>
        <meta charset="utf-8" />
  <title>Web Worker 예제</title>
 </head>
 <body>
        <p>
            <input id="worker_work" type="button" value="Work!!!">
            <input id="worker_work_stop" type="button" value="Stop!!!">
        </p>
        <p id="worker_say">Say</p>
        <textarea rows="4" cols="60">딴짓할 수 있어요.</textarea>
 </body>
        <script type="text/javascript">    
       
                var worker;

                function makeWorker() {               
                    worker = new Worker("cal.js");
                };

                document.getElementById("worker_work").onclick = function() {               
                    makeWorker();

                    worker.postMessage(0);

                    worker.onmessage = function(evt) {
                        document.getElementById("worker_say").innerHTML=evt.data;
                    };

                    document.getElementById("worker_work_stop").onclick = function() {
                        if(worker) {
                            worker.terminate();
                            alert("Worker. Stop!!! ");
                        };
                    };
                    worker.onerror=function(evt) {
                        document.getElementById("worker_say").innerHTML = "Error : " + evt.message + " (" + evt.filename + ":" + evt.lineno + ")";
                    };
                };

        </script>
</html>


간략하게 Web Worker 를 살펴보았습니다.
이제 여러분의 Web Application 에서도 작은 머슴하나 키워보시지 않으시겠습니까? ㅋㅋ
작은 머슴이 기대이하로 버벅거릴 수 있을지도 모릅니다. 잘 다독여서 잘 키우시길 바랍니다. ㅋㅋㅋ


행복한 고수되셔요... 


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


반응형

'Web > HTML 5' 카테고리의 다른 글

[HTML 5] 18. Geolocation API  (0) 2011.06.27
[HTML 5] 17. Web Socket  (1) 2011.06.25
[HTML 5] 15. Web SQL Database  (0) 2011.06.21
[HTML 5] 14. Web Storage  (0) 2011.06.21
[HTML 5] 13. Communication API  (0) 2011.06.19

기본적으로 설치되는 Moodle 의 언어 팩(한국어 팩)을 추가하여 사이트의 언어를 한국어로 변경하는 방법을 알아 보겠습니다.

엄청 간단합니다. ^^


먼저 Setting Menu 를 클릭합니다.

그럼 화면이 바뀌면서 왼쪽에 Advanced teatures/Language 메뉴가 보입니다. 그 메뉴의 하단 Language Pack 을 Click합니다.
그럼 위와 같은 화면이 나타나는데요. 왼쪽에는 현재 설치되어 있는 언어가. 오른쪽에는 설치할 수 있는 언어들의 List 가 보입니다.
오른쪽 Listbox 에서 한국어를 선택하고 그 아래 "install selected language pack" Button을 Click 합니다.
조금 기다리시면...

한국어가 설치된 언어 ListBox 쪽에 생성된 모습을 보실 수 있습니다.


다른 페이지로 이동하시면 오른쪽 상단에 언어를 선택할 수 있는 Combo Box 가 생성된 것을 보실 수 있습니다.
(처음 Moodle을 설치하시면 Combo Box 가 없거나 있어도 "English" 만 들어가 있습니다.)
"한국어" 를 선택하십시요.



짜자~~~안

완성되어었습니다.


우리나라말로 자~~알 나오네요... ^^

그럼.

행복한 고수되셔요...



woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형

'Moodle' 카테고리의 다른 글

[Moodle] Block 의 Header 찾아 삼만리...  (0) 2011.08.19
[Moodle] 개발 Tip (1)  (0) 2011.07.28
[Moodle] Moodle 설치.  (0) 2011.06.21
Moodle !!!

많은 분들께 낯선 이름이 아닐까 싶습니다.
세계적으로 많이 사용되는 LMS(Learning Management System) 입니다.

Web Matrix 의 설명에 따르면

Moodle 은 자료실, 포럼, 퀴즈, 과제물, 교육 목표, 설문 조사, 여론 조사, 데이터 수집, 강좌, 위키 및 프로젝트와 같은 도구를 교육자에게 제공하여 어떤 주제에 대한 웹 기반 강좌를 생성하고 학생을 그러한 강좌에 초대할 수 있도록 하는 LMS(교육 관리 시스템)입니다. 사용자 지정 역할, 가져오기/내보내기/보관, 지급 및 다른 시스템과의 통합과 같은 다양한 관리 기능이 있습니다. Moodle 은 PHP 소프트웨어이지만, 거의 모든 플랫폼과 대부분의 데이터베이스에서 실행됩니다.

많은 부분들에 있어서 궁금증이 생겨서 한번 설치 해게 되었습니다.
한번? 파헤쳐봐야겠네요...

몰랐는데 Microsoft Web Platform 에 포함이 되어있네요.
한마디로 설치가 완전 쉽다는 거죠.
PHP Engine 과 Windows 용 MySQL 설치까지... 완전 자기가 혼자 다해줍니다. ㅋㅋㅋ 꽁짜꽁짜.. 완전 꽁짜... ㅋㅋ

그럼 설치해 보도록 하겠습니다.

새 사이트 만들기에서 Moodle 을 선택하려합니다.


Moodle 을 선택합니다.


다음 화면은 Capture 가 안되버렸네요...
과정은 Moodle 설치에 앞서서 PHP Engine 과 MySQL Windows 버전을 다운받고 설치를 합니다.
그리고 MySQL 관리자 계정에 대한 설정을 합니다.

그리고 아래 화면으로 이동을 합니다.

라이센스에 대한 설명을 하고요...

설치모듈에 대한 Update 를 check 합니다.
이 때 시간이 조금 오래 걸리는데요... 인내심을 가지고 기다리십시요.
그렇지 않고 "왜 안움직여? 죽은거여?" 라며 다시한번 "Continue" 버튼을 누르시게 되면
아래와 같은 Error 화면을 만나시게 될겁니다. ^^


잘 참으신 분들은 아래의 화면을 만나십니다. Plug in 에 대한 Update Check 입니다.

또 Continue 버튼을 클릭해 줍니다.

새 Version 에 대해서 확인이 성공적으루다가 끝났나 봅니다. ㅋㅋ
"Continue" 버튼을 눌러줍니다.

사이트 주인인 Admin 의 정보를 입력하는 화면입니다.
암호는 숫자와 대문자 특수문자등을 입력해 주십시요. ^^


Site 의 설명을 입력하는 화면입니다. 대문에 표시가 될 겁니다.
그리고 "Save changes" 버튼을 쿡!!!



다 됐습니다. ㅋㅋ

다음 부터는 설정 수정이며 각 모듈에 대해서 살펴봐야겠습니다. ㅋㅋㅋ

행복한 고수되셔요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형

'Moodle' 카테고리의 다른 글

[Moodle] Block 의 Header 찾아 삼만리...  (0) 2011.08.19
[Moodle] 개발 Tip (1)  (0) 2011.07.28
[Moodle] 언어 팩(Language Pack) 추가하기.  (0) 2011.06.22

+ Recent posts