bootStrapServer | csle1:9092 | Kafka 접속 주소(IP, 포트번호)
#####Controller
#####Controller
Controller 로는 WindowedSparkSessionOrStreamController 를 선택합니다. WindowedSparkSessionOrStreamController 는 스트림으로 입력되는 데이터를 큐에 저장하고, 일정 주기 마다 정해진 윈도우 크기로 잘라서 operator 에게 전달합니다.
field |value | 설명
--|---|--
operationPeriod | 2 | Reader로 부터 데이터를 읽어올 주기 | 53002 | HTTP 서버의 포트번호를 입력합니다.
...
...
@@ -54,14 +58,16 @@ inputQueSize | 1 | 입력 큐의 크기 | |
selectedColumnName | temperature | Spark dataframe에서 추출할 컬럼의 이름 | |
windowSize | 10 | 큐에서 사용할 윈도우의 크기 | |
#####Runner
#####Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드 라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
첫번째 엔진에서는 센서로부터 입력되는 온도 데이터를 여섯가지 전처리 기법을 적용하여 정제합니다. 본 예제에서 사용한 전처리 기법은 ColumnSelectOperator, MinMaxScalingOperator, TransposeOperator, SparkMLPredictOperator, MinMaxScalingOperator, ColumnSelectOperator 입니다.
- ColumnSelectOperator
...
...
@@ -126,11 +132,12 @@ field |value | 설명
selectedColumnId | 13 | 선택할 칼럼 ID
### 두 번째 엔진 생성하기
####엔진 선택
####엔진 선택
스트림 형태로 전달되는 온도 예측값을 온디맨드 서빙을 하기 위해 OnDemandStreamServing 엔진을 선택합니다. (KSB프레임워크에서는 도커 컨테이너 내부의 지식베이스(KB)가 실행되고 있습니다.)
#####Reader
#####Reader
첫번째 엔진에서 입력되는 실시간 온도 예측값을 입력 받기 위해 KafkaOnDemandReader 를 선택합니다.
ksbuser@etri.re.kr 계정으로 접속하면 예제 워크플로우가 만들어져있습니다. 불러오기해서도 돌려볼 수 있습니다.
##워크플로우 실행 및 모니터링하기
##워크플로우 실행 및 모니터링하기
### 워크플로우 실행하기
위에서 작성한 워크플로우를 실행하기 위해서는 워크플로우 편집기 상단의 실행 버튼을 누릅니다. 이 때, StreamToStream 엔진과 OnDemandStreamServing 엔진은 배치형태로 실행되지 않는 엔진들이므로 Batch 체크 박스는 해제하고 워크플로우를 제출해야합니다.
...
...
@@ -213,7 +221,7 @@ WorkFlow History 탭을 선택하면, KSB프레임워크에서 워크플로우
![워크플로우 동작 로그](./images/2.5.9_06.png)
##결과 확인하기
##결과 확인하기
#### 온도 스트림데이터 생성하기
워크플로우 실행 결과를 확인하기 위해서는 온도데이터를 스트림 형태로 발생시켜야 합니다. 이를 위해 위에서 설명한 Jmeter 도구를 활용합니다.
텐서플로우 기반 딥러닝 모델을 이용한 교통 속도 예측 RESTful 서비스 예제를 설명합니다.
## 입력 데이터 준비하기
<ahref="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/2.6.2.TrafficTraining.html">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있다고 가정합니다.
<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.6.2.TrafficTraining.md">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있다고 가정합니다.
##워크플로우 생성하기
##워크플로우 생성하기
워크플로우 편집화면에서 워크플로우를 작성합니다. 하나의 엔진을 생성합니다.
- 워크플로우 속성
...
...
@@ -44,6 +44,7 @@ TensorflowServingController 를 선택합니다.
교통센서로부터 시계열 속도 데이터를 수집한 후 전처리를 수행하고, 텐서플로우 기반 딥러닝 모델에 의해 예측된 속도를 클라이언트로 전달하는 예제를 설명합니다.
## 입력 데이터 준비하기
본 예제에서는 교통센서로부터 시계열 속도 데이터(LINK_ID, 속도, 날짜)를 Kafka로 입력 받는 것을 가정합니다. 5분 단위로 측정된 센서 데이터가 시간 순으로 들어온다고 가정합니다. 또한, <ahref="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/2.6.2.TrafficTraining.html">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있다고 가정합니다.
본 예제에서는 교통센서로부터 시계열 속도 데이터(LINK_ID, 속도, 날짜)를 Kafka로 입력 받는 것을 가정합니다. 5분 단위로 측정된 센서 데이터가 시간 순으로 들어온다고 가정합니다. 또한, <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.6.2.TrafficTraining.html">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있다고 가정합니다.
### 시계열 속도 스트림데이터 생성하기
본 예제를 위해 준비된 파일로부터 시계열 속도 데이터를 한줄씩 읽어 Kafka로 보내주는 파이썬 프로그램을 제공합니다.
...
...
@@ -112,12 +112,14 @@ slidingSize | 170 | 윈도우를 sliding 하는 크기
#### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
<ahref="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/2.6.2.TrafficTraining.html">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있을 경우, 아래 과정을 생략합니다.
<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.6.2.TrafficTraining.md">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있을 경우, 아래 과정을 생략합니다.
그렇지 않을 경우, Host PC의 /home/csle/ksb-csle/examples/models/kangnam/model 폴더에 있는 텐서플로우 서빙용으로 export 한 모델을 HDFS repository에 웹툴킷을 이용하여 업로드합니다.
model/kangnam 위치에 model 폴더를 업로드 합니다.
...
...
@@ -64,7 +65,7 @@ model/kangnam 위치에 model 폴더를 업로드 합니다.
![파일 업로드](./images/2.6_fileUpload.png)
##워크플로우 생성하기
##워크플로우 생성하기
워크플로우 편집화면에서 워크플로우를 작성합니다. 본 예제에서는 세 개의 엔진을 생성합니다.
- 워크플로우 속성
...
...
@@ -92,6 +93,7 @@ verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true
#### Reader
KafkaPipeReader를 선택하고 아래표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
bootStrapServers | localhost:9092 | Kafka 접속 주소(IP, 포트번호)
...
...
@@ -107,6 +109,7 @@ failOnDataLoss | false |
#### Writer
KafkaPipeWriter를 선택하고 아래표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
mode | append | 새로 들어온 입력데이터에 대해서 처리함
...
...
@@ -124,12 +127,14 @@ StreamingGenericController 를 선택합니다.
#### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
sparkArgs | | 아래의 표 참고
sparkArgs 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
master | local[\*] | YARN 의 마스터
...
...
@@ -157,6 +162,7 @@ groupby | AVG | 평균 계산
window | | 아래의 표 참고
window 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
key | PRCS_DATE | 윈도우를 사용할 칼럼 이름
...
...
@@ -185,6 +191,7 @@ field |value | 설명
selectedColumn | | 아래의 표 참고
selectedColumn 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
selectedColIndex | 1 | window.start 칼럼 선택 (0번부터 시작함)
...
...
@@ -208,6 +215,7 @@ missing value를 채우고 잡음을 smoothing 하기 위해, 한번 더 카프
#### Reader
KafkaPipeReader를 선택하고 아래표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
bootStrapServers | localhost:9092 | Kafka 접속 주소(IP, 포트번호)
...
...
@@ -222,6 +230,7 @@ failOnDataLoss | false |
#### Writer
KafkaPipeWriter를 선택하고 아래표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
mode | append | 새로 들어온 입력데이터에 대해서 처리함
...
...
@@ -239,12 +248,14 @@ StreamingGenericController 를 선택합니다.
#### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
sparkArgs | | 아래의 표 참고
sparkArgs 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
master | local[\*] | YARN 의 마스터
...
...
@@ -272,6 +283,7 @@ groupby | AVG | 평균 계산
window | | 아래의 표 참고
window 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
key | PRCS_DATE | 윈도우를 사용할 칼럼 이름
...
...
@@ -300,6 +312,7 @@ field |value | 설명
selectedColumn | | 아래의 표 참고
selectedColumn 설정은 다음과 같이 합니다.
field |value | 설명
--|---|--
selectedColIndex | 1 | window.start 칼럼 선택 (0번부터 시작함)
...
...
@@ -355,13 +368,16 @@ slidingSize | 170 | 윈도우를 sliding 하는 크기
본 예제에서는 5초 주기마다 1530 개의 데이터를 잘라서 operator에게 전달합니다. 입력데이터는 총 170개의 LINK_ID 를 가집니다. 따라서 5분 간격으로 170개의 데이터가 들어오는 셈입니다. 그런데 170개 데이터의 순서는 무작위로 들어옵니다. 또한 스트림 데이터는 계속해서 들어오고 있으므로 첫 시작 데이터가 어디일지 가늠하기 어렵습니다. 따라서 필요한 8 주기 보다 한 주기를 더 가져와서 처리하고 (170 x 9 = 1530 개), 1 주기 씩 슬라이딩 합니다. 아래에서 설명할 GroupByFilterOperator 및 OrderByFilterOperator 를 이용하여 170 x 8 = 1360 개 데이터를 필터링해서 사용합니다.
#### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
본 예제는 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.6.6.TrafficStreamingPredict.html">실시간 시계열 교통속도 센서스트림 처리 및 텐서플로우 모델 서빙하기</a> 매뉴얼에 따라 워크플로우를 작성하였다고 가정하고 이어서 설명을 합니다.
본 예제는 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.6.6.TrafficStreamingPredict.md">실시간 시계열 교통속도 센서스트림 처리 및 텐서플로우 모델 서빙하기</a> 매뉴얼에 따라 워크플로우를 작성하였다고 가정하고 이어서 설명을 합니다.
## 입력 데이터 준비하기
...
...
@@ -60,10 +60,10 @@ dataset/tensorflowTrainSource 위치에 폴더를 업로드 합니다.
![코드 업로드](./images/2.6.2_codeUpload2.png)
`tensorflow_train.py` 파일은 텐서플로우 기반의 15분 뒤 속도를 예측하는 모델을 학습하는 코드가 구현되어 있는 파일입니다. (본 예제에서는 LSTM 알고리즘을 이용하여 15분 뒤 속도를 예측하는 모델을 사용합니다.) 프레임워크와 연동하여 학습이 되도록 파이썬 코드에 input 과 output 경로 등을 argument 로 받는 부분이 코딩되어야 합니다. 자세한 내용은 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.7.2.KSB_TfPyCoding_Guide.html">KSB 프레임워크과 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
`tensorflow_train.py` 파일은 텐서플로우 기반의 15분 뒤 속도를 예측하는 모델을 학습하는 코드가 구현되어 있는 파일입니다. (본 예제에서는 LSTM 알고리즘을 이용하여 15분 뒤 속도를 예측하는 모델을 사용합니다.) 프레임워크와 연동하여 학습이 되도록 파이썬 코드에 input 과 output 경로 등을 argument 로 받는 부분이 코딩되어야 합니다. 자세한 내용은 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.7.2.KSB_TfPyCoding_Guide.md">KSB 프레임워크과 연동을 위한 tensorflow 학습코드 작성하기</a> 를 참고합니다.
### 학습된 모델 업로드
<ahref="http://csleoss.etri.re.kr:8088/images/contents/manual_1.0/2.6.2.TrafficTraining.html">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있을 경우, 아래 과정을 생략합니다.
<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.6.2.TrafficTraining.md">교통속도예측 텐서플로우 모델 학습하기</a> 매뉴얼에서 학습한 후 export 된 모델이 ``hdfs://csle1:9000/user/ksbuser_etri_re_kr/model/kangnam`` 위치에 저장되어 있을 경우, 아래 과정을 생략합니다.
그렇지 않을 경우, Host PC의 /home/csle/ksb-csle/examples/models/kangnam/model 폴더에 있는 텐서플로우 서빙용으로 export 한 모델을 HDFS repository에 웹툴킷을 이용하여 업로드합니다.
model/kangnam 위치에 model 폴더를 업로드 합니다.
...
...
@@ -83,7 +83,7 @@ model/kangnam 위치에 model 폴더를 업로드 합니다.
![파일 업로드](./images/2.6_fileUpload.png)
##워크플로우 생성하기
##워크플로우 생성하기
워크플로우 편집화면에서 워크플로우를 작성합니다. 본 예제에서는 다섯 개의 엔진을 생성합니다.
- 워크플로우 속성
...
...
@@ -105,7 +105,7 @@ verbose | false | 디버깅을 위해 로그정보를 보고자할 경우, true
4 | StreamToBatch | PreprocessingEngine | 즉시실행 | 딥러닝 모델 학습을 위한 전처리
5 | Batch | TrainEngine | 반복실행 | 딥러닝 모델 학습
앞의 세 개 엔진은 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.6.6.TrafficStreamingPredict.html">실시간 시계열 교통속도 센서스트림 처리 및 텐서플로우 모델 서빙하기</a> 매뉴얼을 참고하여 생성합니다. 워크플로우 편집화면 상단의 **Load Workflow** 메뉴를 이용하여 *TrafficStreamingPredict* 워크플로우를 불러옵니다.
앞의 세 개 엔진은 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.6.6.TrafficStreamingPredict.md">실시간 시계열 교통속도 센서스트림 처리 및 텐서플로우 모델 서빙하기</a> 매뉴얼을 참고하여 생성합니다. 워크플로우 편집화면 상단의 **Load Workflow** 메뉴를 이용하여 *TrafficStreamingPredict* 워크플로우를 불러옵니다.
![워크플로우 불러오기](./images/2.6.7_workflowLoad.png)
...
...
@@ -121,6 +121,7 @@ KafkaPipeWriter를 하나 더 추가합니다. StreamJoin 엔진은 여러 개
#### Writer
KafkaPipeWriter를 선택하고 아래표와 같은 속성을 지정합니다.
field |value | 설명
--|---|--
mode | append | 새로 들어온 입력데이터에 대해서 처리함
...
...
@@ -176,12 +177,14 @@ slidingSize | 1360 | 윈도우를 sliding 하는 크기 <br> 170 x 8
#### Runner
SimpleSparkRunner 를 선택합니다.
field |value | 설명
--|---|--
inJason | false | false로 설정하는 경우 json 형태의 파라메타를 커맨드라인 파라미터 형태로 변환하여 호출되는 외부 시스템에 전달. True 이면 json 형태의 파라메타 형태 그대로 외부시스템에 전달.
이 예제에서는 CSV 자료를 Batch 형태로 입력받아 Parquet 파일로 저장하는 방법에 대해 설명합니다.
<b>참고</b>: Parquet 파일은 KSB 프레임워크가 제공하는 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.5.5.BatchAutoMLTrainInSingleEngine.html">AutoML 기능</a> 혹은 <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/2.5.4.BatchMLTrainInSingleEngine.html">ML학습 기능</a>을 사용하기 위해 필요한 입력자료 형태입니다.
<b>참고</b>: Parquet 파일은 KSB 프레임워크가 제공하는 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.5.5.BatchAutoMLTrainInSingleEngine.md">AutoML 기능</a> 혹은 <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/2.5.4.BatchMLTrainInSingleEngine.md">ML학습 기능</a>을 사용하기 위해 필요한 입력자료 형태입니다.
## 입력 데이터 준비하기
입력데이터는 헤더 정보를 포함하는 CSV 파일이어야 합니다. 본 예제에서는 Host PC의 "/home/csle/ksb-csle/examples/input/iris.csv" 를 사용자 HDFS repository 의 "dataset/input" 폴더에 업로드하여 사용합니다.
KSB 프레임워크를 이용한 신규 컴퍼넌트의 개발과 scala clientSDK를 이용한 워크플로우 실행 시나리오 작성 및 실행을 요청하기 위한 개발환경 구성방법을 설명합니다.
KSB 프레임워크 SW 개발을 위한 환경을 구성하기 위한 절차는 다음과 같습니다.
- KSB 프레임워크 실행 및 테스트 환경구성 ( <ahref="https://csleoss.etri.re.kr/images/contents/manual_1903/1.2.HowToInstallKsbToolBox-1903.html">툴박스 설치</a> 참조 )
- KSB 프레임워크 실행 및 테스트 환경구성 ( <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/1.2.HowToInstallKsbToolBox-1903.md">툴박스 설치</a> 참조 )
- Scala IDE 설치
- Java8 sdk 설치
- Maven 빌드도구 설치
...
...
@@ -19,7 +18,7 @@ KSB 프레임워크 SW 개발을 위한 환경을 구성하기 위한 절차는
## KSB 프레임워크 실행(테스트) 환경구성
[KSB 툴박스 설치][c87a2fc0] 에서 제시하는 절차에 따라 KSB 프레임워크 실행(테스트) 환경을 구성합니다.
<ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/3.2.1.HowToDevelopOperator.html">Operator 컴퍼넌트 개발하기 매뉴얼</a> 에서 SW 개발자가 만든 **MyColumnSelectWithFileOperator** 를 웹툴킷에서 사용할 수 있도록 등록하는 방법을 설명합니다. **Component** 메뉴를 클릭하여 Component 관리화면 으로 이동합니다. 컴포넌트를 등록하기 위한 절차는 다음과 같습니다.
<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/3.2.1.HowToDevelopOperator.md">Operator 컴퍼넌트 개발하기 매뉴얼</a> 에서 SW 개발자가 만든 **MyColumnSelectWithFileOperator** 를 웹툴킷에서 사용할 수 있도록 등록하는 방법을 설명합니다. **Component** 메뉴를 클릭하여 Component 관리화면 으로 이동합니다. 컴포넌트를 등록하기 위한 절차는 다음과 같습니다.
1. 컴퍼넌트를 등록할 버전 선택
2. Enum Component 등록하기
...
...
@@ -17,7 +17,7 @@ export_on_save:
## 컴퍼넌트를 등록할 버전 선택
**Revision** 탭으로 이동합니다. *Version Map* 표에서 웹툴킷의 *Component Version* 과 프레임워크의 *KSB Version* 목록을 확인할 수 있습니다. 본 예제에서는 SW 개발자가 만든 신규 컴퍼넌트를 웹툴킷의 *Component Version* = 1.0.1 에 등록합니다. 따라서 1.0.1 버전을 *Working version* 으로 선택합니다. 1.0.1 버전이 없을 경우, <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/3.4.HowToUseComponent.html">KSB 웹툴킷 컴퍼넌트 등록 매뉴얼</a>을 참고하여 생성합니다 (복제 기능 이용).
**Revision** 탭으로 이동합니다. *Version Map* 표에서 웹툴킷의 *Component Version* 과 프레임워크의 *KSB Version* 목록을 확인할 수 있습니다. 본 예제에서는 SW 개발자가 만든 신규 컴퍼넌트를 웹툴킷의 *Component Version* = 1.0.1 에 등록합니다. 따라서 1.0.1 버전을 *Working version* 으로 선택합니다. 1.0.1 버전이 없을 경우, <ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/3.4.HowToUseComponent.md">KSB 웹툴킷 컴퍼넌트 등록 매뉴얼</a>을 참고하여 생성합니다 (복제 기능 이용).
<ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/3.2.2.HowToDevelopReader.html">Reader 컴퍼넌트 개발하기 매뉴얼</a> 에서 SW 개발자가 만든 **MyFileReader** 를 웹툴킷에서 사용할 수 있도록 등록하는 방법을 설명합니다. **Component** 메뉴를 클릭하여 Component 관리화면 으로 이동합니다. 컴포넌트를 등록하기 위한 절차는 다음과 같습니다.
<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/3.2.2.HowToDevelopReader.md">Reader 컴퍼넌트 개발하기 매뉴얼</a> 에서 SW 개발자가 만든 **MyFileReader** 를 웹툴킷에서 사용할 수 있도록 등록하는 방법을 설명합니다. **Component** 메뉴를 클릭하여 Component 관리화면 으로 이동합니다. 컴포넌트를 등록하기 위한 절차는 다음과 같습니다.
1. 컴퍼넌트를 등록할 버전 선택
2. Enum Component 등록하기
...
...
@@ -17,7 +17,8 @@ export_on_save:
## 컴퍼넌트를 등록할 버전 선택
**Revision** 탭으로 이동합니다. *Version Map* 표에서 웹툴킷의 *Component Version* 과 프레임워크의 *KSB Version* 목록을 확인할 수 있습니다. 본 예제에서는 SW 개발자가 만든 신규 컴퍼넌트를 웹툴킷의 *Component Version* = 1.0.1 에 등록합니다. 따라서 1.0.1 버전을 *Working version* 으로 선택합니다. 1.0.1 버전이 없을 경우, <ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/3.4.HowToUseComponent.html">KSB 웹툴킷 컴퍼넌트 등록 매뉴얼</a>을 참고하여 생성합니다 (복제 기능 이용).
**Revision** 탭으로 이동합니다. *Version Map* 표에서 웹툴킷의 *Component Version* 과 프레임워크의 *KSB Version* 목록을 확인할 수 있습니다. 본 예제에서는 SW 개발자가 만든 신규 컴퍼넌트를 웹툴킷의 *Component Version* = 1.0.1 에 등록합니다. 따라서 1.0.1 버전을 *Working version* 으로 선택합니다. 1.0.1 버전이 없을 경우,
<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/3.4.HowToUseComponent.md"> KSB 웹툴킷 컴퍼넌트 등록 매뉴얼</a>을 참고하여 생성합니다 (복제 기능 이용).
![버전 선택](./images/3.4.1_revision.png)
...
...
@@ -55,7 +56,7 @@ message MyFileInfo {
}
```
<ahref="https://csleoss.etri.re.kr/images/contents/manual_1.0/3.4.HowToUseComponent.html">KSB 웹툴킷 컴퍼넌트 등록 매뉴얼</a>을 참고하여 입력합니다.
<ahref="https://etrioss.kr/thkimetri/ksb19.03-manual/blob/master/manual1903/3.4.HowToUseComponent.md">KSB 웹툴킷 컴퍼넌트 등록 매뉴얼</a>을 참고하여 입력합니다.
- 모집단을 먼저 중복되지 않도록 층으로 나눈 다음 각 층에서 표본을 추출하는 방법이다. 층을 나눌 때 층내는 동질적, 층간은 이질적 특성을 가지도록 하면 적은 비용으로 더 정확한 추정을 할 수 있으며, 전체 모집단뿐만 아니라 각 층의 특성에 대한 추정도 할 수 있다는 장점이 있다.