블로그 이미지
Peter Note
Web & LLM FullStacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2012. 12. 11. 11:02 Git, GitHub/Git Lec01

commit을 하여 Blob format으로 되어 있는 binary 파일에 대한 명칭은 SHA-1 해쉬알고리즘으로 해쉬명을 가지고 있다. 파일명과 해쉬명을 오가면 확인하는 방법을 알아보자 


  • 파일명 통하여 해쉬명 알아내기 : git hash-object <fileName>
$ git hash-object license.properties
b2ece065fd82ac65e5871a602166586fe691e3e7


  • 해쉬명 앞 6자리를 통하여 변경 내역이 무엇인지 파악하기 : git cat-file -p <해쉬명 앞 6자리>
$ git cat-file -p b2ece0
mqtt client for java version 1.0
written by ysyun, 2012


  • 전체 해쉬에 대한 파일명 맵핑 목록 보기 : git ls-files -s  ( .git/index 파일 내역을 참조함 )
$ git ls-files -s
100644 63bc96b980e4f36e5679312d4437908eb3add614 0       .classpath
100644 c349675aef6a30ee914d585a741bd742aad8b027 0       .project
100644 8e4055a6fa840c0bb4179360cee8a6e10352309f 0       .settings/org.eclipse.jdt.core.prefs
100644 8a6d87a1e842e58d1ea6bb707510c62f5eacc3d0 0       .settings/org.eclipse.m2e.core.prefs
100644 3ae4edb1acf2899b42b8ee6b9fd1c1ccb07cdd48 0       README.md
100644 026d2feeef3eccda9bbaae9db1ad251b9a436203 0       eclipse_feature.properties
100644 5ada071fd63361c553a5a1f7e9b816025e992c13 0       jmqtt_client-1.0.jar
100644 b2ece065fd82ac65e5871a602166586fe691e3e7 0       license.properties
100644 5f6e56a8381891e9ad64b61f58716ec7925ec5bb 0       pom.xml
100644 1fdcc8c6237579974f662d902f28d13f4c592580 0       src/main/java/MqttService.java




▶ Git의 4가지 객체


> Blob Object

  • Header + Content 
  • zlib으로 압축되어 있음
  • .git/objects/ 아래 있음 

> Tree Object
  • blob + 다른 tree 객체
  • 폴더와 같은 개념
  • .git/objects/ 아래 있음 

> Commit Object
  • blobs + trees + author + date + message
  • .git/objects/ 아래 있음

> Tag Object 
  • pointer to commit object
  • .git/refs/tags/ 아래 있음 


* 참고 : 개발자를 위한 고급 Git 활용 (p50부터)

'Git, GitHub > Git Lec01' 카테고리의 다른 글

[Git] tag 다루기  (0) 2012.12.20
[Git] Remote 저장소 연결 및 관리  (0) 2012.12.17
[Git] History 이용 및 관리하기  (0) 2012.12.13
[Git] Merge 종류와 충돌 해결하기  (0) 2012.12.12
[Git] Reset 사용하기  (0) 2012.12.11
posted by Peter Note
2012. 12. 10. 17:22 NodeJS/Concept

전역범위에서 참조가 가능한 글로벌 오브젝트. already defined object라고 할 수 있겠다. 



global objects 
> 하기 객체는 모든 모듈에서 이용할 수 있다. 실제 전역 범위를 가진다 
> node에서 var something의 something은 지역범위만 갖는다 
> global : {Object} 전역 네임스페이스 객체 
> process, console : {Object}
> Class: Buffer : {Function} 바이너리 데이터를 다루는데 사용 
> require() : 모듈 로딩으로 지역범위임
> __filename : {String} 실행되는 코드의 파일명 (코드의 절대경로 포함)
> __dirname : {String} 현재 실행되는 스크립트가 존재하는 디렉토리 경로 
> module : {Object} 현재 모듈에 대한 참조. 특히 module.exports는 exports 객체와 같다 
> exports : require()로 접근가능하게 된 모듈의 모든 인스턴스 사이에서 공유되는 객체다. 
> setTimeouts(cb, ms) : cb=callback, ms=milliseconds
  clearTimeout(t) : setTimeout()올 생성된 타이머를 멈춘다
> setInterval(cb, ms) : 반복적으로 callback 수행
  clearInterval(t)


>> fileName : globalTest.js

console.log(__filename);

console.log(__dirname);


>> 수행 

D:\Framework\Node.js> node globalTest

D:\Framework\Node.js\globalTest.js

D:\Framework\Node.js


'NodeJS > Concept' 카테고리의 다른 글

[Jade] Jade 사용하기  (0) 2012.12.15
[EJS] 사용하기  (0) 2012.12.15
[Node.js] File I/O 사용하기  (0) 2012.12.10
[Node.js] EventEmitter 에 대하여  (0) 2012.12.10
[Node.js] debugger 사용하기  (0) 2012.12.10
posted by Peter Note
2012. 12. 10. 17:00 Lean Agile Culture/Architecturing

SlideShare 링크 



posted by Peter Note
2012. 12. 10. 16:59 Lean Agile Culture/Architecturing

SlideShare 링크 



posted by Peter Note
2012. 12. 10. 16:35 NodeJS/Concept

node.js에서 File I/O 를 위하여 역시 모듈을 로딩하여 사용한다 



> require('fs') 포함 
> 비동기 방식은 마지막 파라미터로 완료 콜백함수를 받고, 첫 아규먼트로 에러를 받음. 성공이면 null 또는 undefined 가 된다 
> rename과 stat가 비동기 호출이므로 오류 발생가능성 존재 

fs.rename('/tmp/hello', '/tmp/world', function (err) {

  if (err) throw err;

  console.log('renamed complete');

});

fs.stat('/tmp/world', function (err, stats) {

  if (err) throw err;

  console.log('stats: ' + JSON.stringify(stats));

});

> 이를 해결하기 위하여 callback chain을 사용한다. 즉, callback안에 callback function을 둔다 

fs.rename('/tmp/hello', '/tmp/world', function (err) {

  if (err) throw err;

  fs.stat('/tmp/world', function (err, stats) {

    if (err) throw err;

    console.log('stats: ' + JSON.stringify(stats));

  });

});


-- 결과 내역 

stats: {"dev":0,"mode":33206,"nlink":1,"uid":0,"gid":0,"rdev":0,"ino":0,"size":1876992,"atime":"2012-09-17T18:05:45.000Z","mtime":"2012-09-17T18:05:48.000Z","ctime":"2012-09-17T18:05:41.000Z"}


'NodeJS > Concept' 카테고리의 다른 글

[EJS] 사용하기  (0) 2012.12.15
[Node.js] Global Objects  (0) 2012.12.10
[Node.js] EventEmitter 에 대하여  (0) 2012.12.10
[Node.js] debugger 사용하기  (0) 2012.12.10
[Express] Express Framework 사용하기  (0) 2012.10.30
posted by Peter Note
2012. 12. 10. 16:08 NodeJS/Concept

EventEmitter는 말 그대로 이벤트를 발생시키는 모든 객체를 지칭한다. 서버에 접속(connect)할 때 이벤트가 발생하고 파일을 읽을 때 이벤트가 발생하는 식으로 이미 내장된 이벤트들이 존재할 것이고, 사용자 정의 이벤트를 만들 수도 있을 것이다. 



> require('events') 첨부한다 
> 이벤트를 발생시키는 모든 객체는 events.EventEmitter 의 인스턴스 
> 이벤트 발생할 때 실행할 함수를 객체에 연결, 이러한 함수를 리스너(Listener)라고 부른다 
> EventEmitter 접근 : require('events').EventEmitter
> emitter.on(event, listener) 또는 emitter.addListener(event, listener)
  예) server.on('connection', function(stream){...});
> emitter.once(event, listener) : 한번만 수행 즉, 일회성 listener 
> emitter.removeListener(event, lisetener) : listener 제거 
> emitter.removeAllListeners() : 모든 listener 제거 
> emitter.setMaxListeners(n) : listener등록이 10개 default로 제한, emitter의 listener 갯수를 늘릴 수 있다. 


'NodeJS > Concept' 카테고리의 다른 글

[EJS] 사용하기  (0) 2012.12.15
[Node.js] Global Objects  (0) 2012.12.10
[Node.js] File I/O 사용하기  (0) 2012.12.10
[Node.js] debugger 사용하기  (0) 2012.12.10
[Express] Express Framework 사용하기  (0) 2012.10.30
posted by Peter Note
2012. 12. 10. 15:42 NodeJS/Concept

node명령으로 자바스크립트 코드를 수행할 때 콘솔상에서 debugging을 할 수 있다. 


  • debugger 키워드를 코드에 끼워 넣는다 : breakpoint 역할을 한다 
  • cont, c : 계속 진행 
  • next, n : step next
  • step, s : step in
  • out,   o : step out
  • pause  : 실행 멈춤 
  • 상세명령들

> 예제 코드 (debuggerTest.js)
x = 5;
setTimeout(function () {
  debugger;
  console.log("world");
}, 1000);
console.log("hello");



> 디버깅 수행 : node debug <수행 자바스크립트 파일명>

D:\Framework\Node.js> node debug debuggerTest

< debugger listening on port 5858

connecting... ok

debug> cont

< hello

break in D:\Framework\Node.js\debuggerTest.js:3

  1 x = 5;

  2 setTimeout(function () {

  3   debugger;

  4   console.log("world");

  5 }, 1000);

debug> next

break in D:\Framework\Node.js\debuggerTest.js:4

  2 setTimeout(function () {

  3   debugger;

  4   console.log("world");

  5 }, 1000);

  6 console.log("hello");

debug> cont

< world

program terminated


hello을 찍고 debugger가 있는 곳에서 멈추면 next step으로 이동하면 console 객체로 가고 cont하면 수행을 다시 하여 world 문자가 찍힌다. 수행되는 process를 command line에서 추적해 보고자 할 경우 사용하면 좋겠다. 


'NodeJS > Concept' 카테고리의 다른 글

[EJS] 사용하기  (0) 2012.12.15
[Node.js] Global Objects  (0) 2012.12.10
[Node.js] File I/O 사용하기  (0) 2012.12.10
[Node.js] EventEmitter 에 대하여  (0) 2012.12.10
[Express] Express Framework 사용하기  (0) 2012.10.30
posted by Peter Note
2012. 12. 8. 15:16 NodeJS

Node.js 주말강좌 요약하기 


> 참조 : 라이언 일병(Ryan Dahl) 의 발표와 PPT자료 : Node.js 에 대한 문화적, 구조적 차이를 이해하자!

> 참조 : Node.js API 사용 (예제 포함)


  • 현재 System(I/O) : L2 Cache <-> Memory <-> Disk  대비 Network I/O = compiler 서비스
  • Web System : a = b() 식의 assign 즉 sync를 사용하지 않는다. b(a) {} 를 사용하자 (async 방식)
  • b(a) {} 구문에서 Node.js는 a = call back 객체이다 = anonymous object = closure object = 스트림에서 이해됨 
  • stream = functional의 목적은 네트워크에 있는 모듈을 Merge하여 사용하는 것이다 = social web service 세대 
  • Node.js는 모듈 기반이고 모듈을 위한 스펙 CommandJS와 AMD를 이해하자 
  • Node.js의 수많은 Modules in GitHub
  • Node.js에 대한 기본적이 이해


'NodeJS' 카테고리의 다른 글

[Node.js] 프론트앤드 개발을 위한 Command-Line Tools (CLI)  (0) 2013.01.24
[Node.js] 역사와 기초  (0) 2012.12.08
[Node.js] 시작하기  (1) 2012.10.30
posted by Peter Note
2012. 12. 8. 11:18 NodeJS

이복영 강사님의 Node.jsMongoDB 주말강좌부분을 들으며 요약하기 




▶ 자바스크립트 
  • 에크마스크립트 : ECMAScript 6 로 가고 있다. 
  • 표준언어 : 자바스크립트 통일 = Presentation (Backbone.js or 앵귤러) + Application Tier(Node.js + Express.js) + Database(MongoDB + mongoos.js)


  • 자바스크립트를 크롬에서 간단히 테스트 해보기 : 크롬에서 F12에서 console 선택하여 자바스크립트 코드 넣고 Enter
  • 각 Tier별 MVC Fraemwork = Presentation (BackBone.js) + Appllcation(Express.js) + MongoDB(Mongoos.js)
  • MongoDB 와 함께 Redis를 사용 : 이때는 mongoose를 사용한다 
  • 윈도우에서 Node.js 개발시 : Microsoft제공 webmatrix tool로 개발 - MVC 코딩이 쉽다  



▶ Web 역사

  • Polling Service (Request + Response) = internet polling (ajax : client side), long polling (web api : server side)
    content delivery service (webserver 기술) = document base operation  -> Compile 기술
    • 제 1세 web : static web - IBM Host 기술 
    • 제 2세 web : dynamic web - C/S PC 기술
  • bi-direction Service (websocket) = data (json) delivery service = stream task operation( = functional operation) 
    -> Service 기술 (공식 전용 언어 : JavaScript -> ECMAScript 6)
    • 제 3세 web : social network web service - Smart Device 기술 (Virtual Host)


▶ 3 세대 Web
  • Task Base Operation = workflow (사람 + 정보 + 프로세스) -> Activity 단위 (스마트폰을 통해 구현되고 있다)
  • 객체 {key, value} 에서 key = property 이고 { {k,v}, {k,v} } 에서 {k,v} 를 attribute라고 한다. 이를 가지고 functional 프로그램을 한다 
  • Presentation 자바스크립트의 코딩 이동방향
    • getElementByID : javascript 직접 핸들링
    • jQuery : MVVM의 Knockout.js 사용, 물리적 뷰 사용
    • Undersocre.js (4kbytes) : functional 코딩, 논리적 뷰 사용, {k,v} 같은 그룹객체를 다룬다 (ORM) 
    • BackBone.js : 논리적 뷰 사용 (모바일 통해 다운로드 받는 세상)
  • Ria -> WebApp -> Smart UI (?)
  • Node.js와 MongoDB의 조상은 Underscore.js 이다
  • Functional Operation = Execution 밖에 없다. 크기는 4 Kbytes 이다. 
  • 1,2 세대의 기술과 3 세대 기술을 mix 하지 말고, 비교하지 말라


posted by Peter Note
2012. 12. 7. 14:38 Dev Environment/Sublime Text

Sublime Text 2를 설치하고 한글 문서를 열어 보면 깨져 나온다. 우선 인코딩이 안맞는 것인데 그럴경우 플러그 하나 설치하자. 


  • 우선 Install Package 설치하자 
  • 제공하는 플러그인 : EncodingHelper
  • Install Package (ctrl+shift+p)에서 EncodingHelper 나오면 설치를 한다 
  • 설치후 sublime text에서 
    • edit menu 선택
    • 맨 하단 convert to UTF-8 from Encoding 선택
    • 맨 위 Complete List Sorted 선택
    • 위에서 7번째 EUC KR 선택

이제 한글이 제대로 보이기 시작한다. 


posted by Peter Note
2012. 12. 7. 13:59 Middleware, Cloud/Linux

운영중에 Free Memory size가 부족하다고 하여 top 명령어로 살펴보았다. 


top - 13:52:48 up 60 days,  4:05,  2 users,  load average: 0.09, 0.34, 0.46

Tasks: 186 total,   1 running, 185 sleeping,   0 stopped,   0 zombie

Cpu(s):  1.8%us,  0.2%sy,  0.0%ni, 97.8%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:  47185920k total, 47125908k used,    60012k free,  1250664k buffers

Swap: 10485752k total,      120k used, 10485632k free, 30877100k cached


  - Mem: 60,012 free 로 나온 것을 보아 헉 현재 60Mbytes 밖에 여유가 없다니! 과연 그럴까?

  - Linux의 경우 real free = free + cached of Swap 로 봐야 한다. 


free -gt 명령을 수행해 보면, 여유 메모리는 30G가 됩니다. 따라서 free 0 로 나오지만 buffers + cached 30G 의 free memory 여유가 있다고 보면 됩니다. 

[jboss@hostname ~]$ free -gt
                 total       used     free     shared   buffers  cached
Mem:            45         44          0          0          1         29
-/+ buffers/cache:     14         30
Swap:            9          0          9
Total:            54        44         10

cashed는 여유메모리로 보시면 됩니다.

리눅스 시스템은 파일형태로 관리되는 운영체제이기때문에 여유메모리를 캐쉬파일로 표현되고 있습니다.

또한 스왑이란 실제 메모리 캐쉬메모리까지 모두 사용해서, 부족할때 하드 일부분을 메모리 처럼 가져다 쓸때 사용되는 메모리를 말합니다.

free -gt로 보시면 사용되는 스왑메모리는 거의없습니다.

현재 메모리 여유가 있다고 보시면됩니다.


<참고>

  - 리눅스 메모리 관리

posted by Peter Note
2012. 12. 5. 20:16 Dev Environment/Sublime Text

Gist를 GitHub이 운영하는 코드 Snippet을 관리할 수 있는 서비스이다. 이와 비슷하게 jsFiddle.net 에서도 html/css/javascript를 저장하고 테스트까지 해볼 수 있다. 



> GitHub에 로그인 하면 상단에 Gist 메뉴가 나온다. 클릭!  (발음 : 지스트)


> Sublime Text를 통하여 등록한 코드조각이 우측에 보인다. (Create Private Gist 로 생성)


> 우측 등록된 코드조각을 클릭하면 코드를 볼 수 있고, 멘션을 달 수 있다. 




posted by Peter Note
2012. 12. 5. 10:39 Lean Agile Culture

예전 한 서버안에서 대량으로 들어오는 데이터처리를 위하여 Multi-Thread 기반 Queuing을 통하여 막힘없는 서비스를 구현했었다. 하지만 점점더 많은 데이터가 들어올 경우 Scale out을 하려면 결국 어떻게 해야 할까? 서로 다른 Stack에 있는 것들 예로 웹서버와 데이터베이스 사이, 또는 WAS와 데이터베이스사이에 Queue를 두고 사용하면 어떨까 생각해 볼 수 있다. 


  • A<->B 사이에 데이터량은 많으나 느린 성능이 예상될 경우
  • A는 계속 막힘없이 다음 C를 호출해야 할 경우
  • 정기적인 통계정보 생성 및 레포트 생성 배치 Job도 괜찮을 듯 하다. 

결국 Queue기반 Job 분산처리 Server 라고 이해하면 될듯...


▶ GearMan 이해하기

GearMan은 Queue를 하여 요청을 처리하는 Job Server이다. Scale Out을 고려하여 여러대의 서버를 운영하여 Job을 수행해야 한다면 좋은 대안으로 보인다. 



> 파란색의 Client와 Worker만 API를 사용하여 간단히 작성하면 된다. 다양한 언어에 대하여 지원한다


> Client 코드 : 함수를 문자 리터럴로 전송


> Worker 코드 : 함수를 문자 리터럴로 전송 


> 호출 흐름도 

> 구성 예시 : High Availibility와 Fault Tolerance의 분산 환경의 구성이 가능하다



posted by Peter Note
2012. 11. 28. 15:17 Protocols

Polyglot 에 기반한 서비스를 만들다 보면 아키텍쳐링을 위하여 Queue 시스템이 필요할 경우가 있다. Message Queue를 위하여 Open Source로 제공되는 구현체들이 존재하기도 한다. 각각에 대한 궁금증을 풀어보자


  • AMQP 무엇인가 : 메세지 통신을 위한 규약 스펙 (참조)
  • 구현체는 무엇들이 있는가 : Rabbit MQ, Apache Qpidetc
  • 어느 때 사용하는가 : 서로 다른 시스템이나 서비스를 업무적으로 엮으고 싶을 경우 (참조)
  • Spring Framework와 잘 어울리는 것은 : Rabbit MQ - spring AMQP 에 포함됨 (참조)

모바일 서비스 구축시 내부 확장과 다양한 언어에 대한 통합을 고려한다면 필수 아이템이 되겠다. 하기 그림은 CloudFoundry에서 제시하는 아키텍쳐이다





'Protocols' 카테고리의 다른 글

MQTT 사용하기 - 1  (1) 2012.09.11
MQTT Push  (0) 2012.09.10
posted by Peter Note
2012. 11. 27. 17:18 Middleware, Cloud/DBMS

AMPSetup에서 install wizard로 설치후에 MySQL을 사용해 본다. apmsetup으로 설치를 하면 mysql console을 수행할 수 있고, 여기서 부터 mysql 명령을 통해 테이블을 만들어 보자


  • 테이터베이스 로그인 : mysql -u <id> -p <password> (만일 root 패스워드 잃어버렸을 경우 재설정 방법, APMSetup으로 설치하면 root default 암호 : apmsetup)
  • 테스트 데이터베이스 생성 : create database <database명>;   (참조)
  • 생성 내역 보기 : show databases;  (참조)
  • 데이터 베이스 사용하기 : use <database명>;
  • 테이블 보기 : show tables;  
mysql> create database ajax;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ajax               |
| mysql              |
| phpmyadmin         |
+--------------------+
4 rows in set (0.00 sec)

mysql> use ajax;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table comment(
    ->    id  int primary key,
    ->    name varchar(20) not null,
    ->    content long varchar not null
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> create table id_repository(
    ->    name varchar(2) primary key,
    ->    value int
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> insert into id_repository values('commnet', 0);
Query OK, 1 row affected, 1 warning (0.00 sec)

ajax 샘플 프로그램-댓글 달기- 테스트 하면서 만든 테이블 구조


posted by Peter Note
2012. 11. 27. 16:54 Languages

Apache, PHP, MySQL을 가장 편하게 설치할 수 있는 방법을 제공하는 사이트 소개


  - APM 일반사항을 설치 : start, stop UI 제공

  - HongPD : 문서파일 검색 사이트 구축

  - WowIP : wifi 환경의 유동아피를 고정아이피화하여 내 PC를 서버로 만들 수 있게 해줌 


설정 관련 부분을 bitnami 처럼 패키징화하여 install wizard를 통하여 설치토록 해준다. Go~~~~od!


'Languages' 카테고리의 다른 글

[문서화 도구] Groc 사용하기  (0) 2013.03.09
posted by Peter Note

Eclipse Editor의 색상에 대하여 원하는 스타일로 변경하고 싶다면 직접하거나 또는 Plugin을 설치하여 손쉽게 변경을 할 수 있다. 



흰바탕의 깔끔한 Roboticket 스타일 추천


posted by Peter Note
2012. 11. 26. 18:07 Languages/JavaScript

서버단에서 페이지별로 사용하는 템플릿 엔진들(FreeMaker, Velocity) 같은것이 있다면 클라이언트 화면단에서 AJAX를 통하여 받는 데이터를 통해 화면을 변경시켜주는 템플릿 엔진도 있다. JQuery에 jquery template 엔진(소개)이 있지만, 다른 것도 검토해 볼 필요가 있겠다. 


  - 추천 javascript template engine 

    + Pure : loop 단점 존재 

    + TrimPath : google code project (강력 추천)

  - 더 극적으로 socketstream을 이용하여 HTML rendering 방법 : Node.js에서 구동되는 bi-direction 통신가능 (GitHub 설명


Single Page Application(wikipedia)을 만들기 위해서는 javascript template engine이 필수 일듯 하다. 


posted by Peter Note
2012. 11. 26. 11:38 Git, GitHub

git에서의 commit은 오직 로컬 레파지토리와 관계가 있다. SVN이 자신의 로컬 PC에 있다고 생각하면 된다. 개발자 혼자서 마음대로 가지고 놀 수 있는 레파지토리인 셈이다. 


어디에서 수행할 수 있을까? (참조)

  • workspace
    • commit -a -m 'msg'  : "workspace" -> "local repository"
  • index
    • commit -m 'msg' : "index" -> "local repository"
    • commit --amend :  "index" -> "local repository" (마지막 commit 수정하고 새로운 commit을 한다 )


commit이란?  (참조)

  • workspace 또는 index(stage)의 소스를 local repository로 저장하면서 "새로운 commit object"가 생성된다. 
    • 이때 HEAD와 현재 Branch가 가르키는 포인터는 "새로운 commit object" 주소로 바뀐다
    • index의 포인터도 "새로운 commit object" 주소로 바뀐다 


posted by Peter Note
2012. 11. 26. 10:59 Middleware, Cloud/WAS

JBoss의 deploy와 deployer 디렉토리의 차이는 무엇을까? 들여다 보면 xml과 서브 디렉토리가 존재한다. 



deploy는 배포되는 애플리케이션과 jboss 서비스들이 위치한곳, deployer는 그러한 것들을 deploy하는 관련 내역을 설정한 것 정도가 아닐까 싶다. micro container가 OSGi container 개념과 유사하게 이해 하면 되겠다. 


posted by Peter Note