2021년 7월 28일 수요일

[WebRTC] AWS Chime SDK Architecture for LMS














2018년 11월 7일 수요일


시작하기

이번에는 Hyperledger Fabric과 Hyperledger Composer를 비교 합니다. 어느 쪽을 사용해도 블록 체인의 개발은 할 수 있지만 각각의 특징이 있습니다.
Hyperledger Composer는 Hyperledger Fabric 블록 체인 인프라에서 애플리케이션 개발을 단순화합니다. Fabric 튜토리얼에는 저레벨의 체인 코드 개발 샘플 (golang)도 포함되어 있습니다. Composer는 높은 수준의 애플리케이션 개발 프레임 워크입니다.
나는 두 기능을 전체적으로 살펴 보는 것을 권장합니다.

Hyperledger프로젝트에 대하여

현재 Hyperledger 프로젝트는 다음과 같이되어 있습니다.
프레임 워크 :
- Hyperledger Sawtooth
- Hyperledger Iroha
- Hyperledger Fabric
- Hyperledger Burrow
- Hyperledger Indy
도구 :
- Hyperledger Caliper
- Hyperledger Cello
- Hyperledger Composer
- Hyperledger Explorer
- Hyperladger Quilt

Hyperledger Fabric의 개념

먼저 Hyperledger Fabric의 개념입니다.
Hyperledger Fabric 블록 체인 프레임 워크이며, The Linux Foundation에 의해 호스팅되는 Hyperledger 프로젝트의 하나입니다. Hyperledger Fabric 모듈 아키텍처 응용 프로그램과 솔루션을 개발하기 위한 기반으로서 합의(consensus)와 맴버쉽 서비스 등의 구성요소(Component)를 플러그 앤 플레이(Plug and Play) 할 수있게되어 있습니다. Hyperledger Fabric은 컨테이너 기술을 활용하여 시스템의 응용 프로그램 로직을 구성하는 '체인 코드'라는 스마트 계약(Smart Contract)을 호스트합니다. Hyperledger Fabric 처음에는 해커톤(Hackathon)의 결과로 Digital Asset와 IBM에 의해 기증 된 것입니다.
주요 기능1. 기밀 정보를 공유하는 채널2. 주문 서비스는 네트워크의 피어(Peer)에 일관되게 트랜잭션을 전달3. 거래의 승인 정책4. 카우치DB(Apache CouchDB)의 월드 스테이트는 다양한 쿼리를 지원5. 회원 서비스 공급자 (MSP)

특징

아이덴티티의 규제
안전한 네트워크 블록을 제공하기 위해 Hyperledger Fabric의 회원 ID 서비스는 사용자 ID를 사용하여 모든 네트워크 회원을 규제합니다. ACL을 사용하여 특정 인증을 통해 정보에 대한 사용자 액세스의 추가 레벨을 만들 수도 있습니다
보호와 기밀성
Hyperledger Fabric은 비즈니스 요구에 따라 기밀 트랜잭션 구현을 위한 블록체인 네트워크의 비즈니스 그룹에 보안을 제공하기 위한 다양한 기술이 포함되어 있습니다. 거래 기록, 거래 참가자 및 채널 정보를 포함한 모든 데이터는 채널 밖에서 사용할 수 없습니다.

Chaincode의 기능
비즈니스 로직은 Chaincode에 적혀 있으며, 채널 내의 트랜잭션 유형(Type)을 규제하는 기능입니다. 소유자의 파라미터, 검증 등을 변경합니다.
모듈설계
모듈 아키텍처를 사용하면 암호화 알고리즘과 합의 메소드(Consensus method)의 일부 알고리즘을 활성화하거나 비활성화 할 수 있습니다. 그 결과 다양한 산업에 적용 가능한 범용 아키텍처 Hyperledger 플랫폼을 가질수 있습니다.

Fabric 아키텍처

3 가지 주요 구성 요소 :
  1. 사용자측 응용 프로그램
  2. Custom server
  3. Docker 컨테이너를 사용한 Fabric 네트워크
  • 사용자는 서버에 요청를 송신합니다.
  • 서버는 Fabric 네트워크에 트랜잭션을 보냅니다. 실행 노드가 트랜잭션에 입력된 함수, 키 및 인증서가 실행됩니다.
  • 트랜젝션의 실행을 제어하는 Orderer(통신측)은 인증서의 인증과 실행노드의 주소를 읽고 있는 인증센터에 매타 데이터를 보냅니다.
  • Orderer는 거래 데이터를 실행노드에 전달, 노드는 그 함수를 시작합니다.
  • Orderer의 지도하에 다른 노드는 트랜잭션의 검증을 시작하고 트렌잭션 로그를 받습니다. 결과는 SDK를 사용하여 동일한 경로 위에서 사용자에게 반환 됩니다.
  • Chaincode: Go, Java, JavaScript

Hyperledger Composer의 개념

다음은 Hyperledger Composer의 개념입니다.
개발자는 Hyperledger Composer를 사용하여 비즈니스 네트워크를 디지털화합니다. 비즈니스 네트워크 아카이브 (.bna 확장자의 파일)에는 자산(Asset), 참가자, 개념(Concept),  트랜잭션이 정의되어 있습니다.
Hyperledger Composer는 Hyperledger Fabric 블록 체인 인프라에서 블록 체인 비즈니스 네트워크를 구축하기위한 협업 도구의 집합입니다.
Composer의 목표는 가치 창출을 가속하여 블록 체인 응용 프로그램을 기존의 비즈니스 시스템에 쉽게 통합 할 수 있도록하는 것입니다. Composer를 사용하면, 
유스 케이스를 신속하게 개발할 수 있으며, 몇 달이 아니라 몇 주에서 블록 체인 솔루션을 구현할 수 있습니다.
JavaScript로 구축되어 Node.js의, NPM, CLI 인기 편집기 등의 현대적인 도구가 활용되고 있습니다. 비즈니스에서의 사용을 전제로하여 쉽게 테스트 할 샘플 응용 프로그램도 제공하고 있기 때문에 코드의 생성이 쉽습니다.
Hyperledger Composer는 기존의 Hyperledger Fabric 블록 체인 인프라와 런타임 플러그인 가능한 블록 체인 합의(consensus) 프로토콜을 지원하고, 지정된 비즈니스 네트워크 참여에 의한 정책에 따라 트랜잭션을 확인합니다.
[그림 내용]
비지니스 오너 또는 개발자가 스마트 계약(Smart Contract)을 작성
비지니스 네트워크를 모듈화
기존의 시스템과 데이터를 블록체인 응용 프로그램과 결합
Hyperledger Composer를 사용하면, 기존의 자산(Asset)과 연관된 트랜잭션을 포함한 현재의 비즈니스 네트워크를 신속하게 모델링 할 수 있습니다. 자산(Asset)은 유형 또는 무형의 상품, 서비스 또는 재산입니다. 비즈니스 네트워크 모델의 일부로 자산과 대화 할 수있는 트랜잭션을 정의합니다. 또한 비즈니스 네트워크에는 여러 비즈니스 네트워크에 걸쳐 각각 고유의 ID와 연관 될 수있는 참가자가 포함됩니다. 또한 Composer를 사용하는 것에 큰 장점은 학습 과정이 구조화되어있는 것입니다.
비즈니스 네트워크를 블록체인에 배치하려면 시간과 노력 및 기타 투자가 필요합니다. Composer를 사용하면 블록 체인의 비즈니스 네트워크를 쉽게 정의 및 모델링 할 수 있습니다.

주요기능

1. 거래가 가능한 비즈니스 규칙을 정의한다.
2. 트랜잭션 유형에 따라 각 역할의 참가자 신원과 액세스 제어 역할이 가능하다.
3. 비즈니스 네트워크에서 재사용 가능한 핵심 구성(코어 컴포넌트)의 모델 - 자산,  참가자 트랜잭션 로직, 비즈니스 네트워크의 액세스 제어를 제공하는 도구
4. 사용할 수있는 비즈니스 네트워크 정의에 따라 JavaScript 및 REST API를 생성
5. 아무것도 설치하지 않고 Web 기반 Composer Playground에서 개발 및 테스트 할때, 랩탑(laptop) 개발로 전환하고, 모델을 테스트하고 Hyperledger Fabric 또는 그 외의 블록체인 네트워크의 라이브・블록체인・인스턴스에 비즈니스 네트워크를 구축한다.

특징

블록 체인 애플리케이션의 개발 시간이 짧게 해결되기때문에 빌드에 필요한 엄청난 노력을 줄일 수 있습니다.충분히 테스트 된 효율적인 설계에 의해 비즈니스 전체의 이해를 일치시키고 위험을 줄일 수 있습니다.보다 높은 수준의 추상화로 인해, API를 통해 기존 응용 프로그램에 그들을 연결하는 기능을 포함하기 때문에 반복적 인 개발에 따라 응용 프로그램을 성장 시키는 것이 훨씬 쉽습니다.또한 Fabric Composer는 오픈 소스 개발자들에게 익숙한 기반 기술 스택으로 설계되어 있습니다.

Composer 프로젝트 모델


주요 컴포넌트

  1. 비즈니스 네트워크 아카이브
    비즈니스 모델, 트랜잭션 로직, 액세스 제어, 비즈니스 네트워크 아카이브등의 비즈니스 네트워크의 핵심 데이터를 패키지화하여 런타임에 배포합니다.
  2. Composer Playground
    Web에서 Hyperledger Composer를 배우고 비즈니스 네트워크를 모델링하고, 그 네트워크를 테스트하고 그 네트워크를 블록체인 네트워크의 실례에 배포하는 것이 가능합니다. Playground에는 자신의 비즈니스 네트워크를 구축하기위한 기반이되는 샘플 비즈니스 네트워크 저장소가 몇 가지 있습니다.
  3. REST API에 대한 지원과 통합 기능
    비즈니스 용 루프백 커넥터 실행중인 네트워크를 REST API로 공개하는 네트워크가 개발되고 있습니다. 클라이언트 응용 프로그램에서 사용 가능하고, 비 블록체인 애플리케이션을 통합 할 수 있습니다.

정리

이번에는 Hyperledger Fabric과 Hyperledger Composer의 비교 했습니다. 어느 것을 사용해도 비즈니스 요구에 맞는 솔루션을 개발 수 있습니다. 각각의 장점이 있기 때문에 실제로 어떤 것을 사용할지는 프로젝트에 따라 검토 할 필요가 있다고 생각됩니다.

2016년 8월 19일 금요일

안드로이드 자주 쓰이는 adb 명령어


안드로이드 자주 쓰이는 adb 명령어


adb devices (디바이스 검색) 
adb 서버와 연결된 폰의 디바이스와 에뮬레이터 목록을 보여줍니다. 연결된 devices의 TCP/IP 포트 번호를 알아 낼때도 사용합니다. 
adb shell (타겟 시스템의 쉘 명령) 
해당 시스템의 쉘에 연결하고 # 프롬프트를 띄어 해당 시스템을 탐색하고 수정할 수 있습니다. 
예) 여러 단말기중 하나를 선택해서 접속 adb -s emulator-5554 shell 
adb shell push Phone.apk /system/app (파일 복사) 
Phone.apk 파일을 해당 기기의 /system/apk 폴더에 Phone.apk 넣습니다. 
adb shell chmod 644 system/app/Phone.apk (파일 권한) 
해당 기기의 /system/apk 폴더에 있는 Phone.apk 파일 권한을 설정합니다. 
adb pull /system/app/Phone.apk (파일 추출) 
해당 기기의 /system/apk 폴더에 있는 Phone.apk 파일을 추출합니다. 
adb install [-l][-r] file_spec (app을 설치 또는 재설치 할 때 사용) 
-l : 다른 장치로 복사돼는것을 막습니다. -r : 이미 존재하는 app 데이터를 지우지 않은채 재설치 합니다. file_apec : 설치할 app의 .apk 파일입니다. 
adb uninstall [-k] package (패키지 이름을 가진 app를 제거) 
-k : app 의 데이터를 보존합니다. package : 패키지의 전체 경로, apk 확장자는 빼야합니다.
예) 패키지 삭제 adb unstall com.falinux.android.hello 
adb push local remote (local 파일을 remote 이름으로 복사) 
개발자 컴퓨터에 있는 local 이란 이름을 가진 파일을...
타겟 시스템 remote 란 이름으로 복사합니다. 
예) com.falinux.android.rose.apk 파일을 안드로이드 기기 /data/app 폴더 안으로 집어넣습니다. adb push c:\com.falinux.android.rose.apk /data/app/ 
adb pull remote local (remote 파일을 local 이름으로 복사) 
해당 시스템에 있는 remote 라는 파일을 개발자 컴퓨터에 local 이란 이름으로 복사합니다.
예) 안드로이드 기기 /data/app/com.falinux.android.rose.apk 파일을 C 드라이버로 가져옵니다. adb pull /data/app/com.falinux.android.rose.apk c:\com.falinux.android.rose.apk 
adb reboot (시스템 재부팅) 
안드로이드 시스템을 재부팅합니다. 
adb kill-server (adb 종료) ** -- 로그가 나오지 않을때 한번 실행해 볼 필요 있음
adb에 문제가 있을 경우, adb를 종료 시킵니다. 
adb start-server (adb 실행) 
종료된 adb를 실행 시킵니다.

예제 )
# adb devices
D:\>adb devices
List of devices attached

0123456789ABCDEF        device
f4fbc224        device

# adb install
D:\>adb -s 0123456789ABCDEF install 파일명.apk
(주의 apk 파일이 있는 경로에서 실행 또는 Full 경로 입력)


안드로이드 자주 쓰이는 adb 명령어


안드로이드 자주 쓰이는 adb 명령어


adb devices (디바이스 검색) 
adb 서버와 연결된 폰의 디바이스와 에뮬레이터 목록을 보여줍니다. 연결된 devices의 TCP/IP 포트 번호를 알아 낼때도 사용합니다. 
adb shell (타겟 시스템의 쉘 명령) 
해당 시스템의 쉘에 연결하고 # 프롬프트를 띄어 해당 시스템을 탐색하고 수정할 수 있습니다. 
예) 여러 단말기중 하나를 선택해서 접속 adb -s emulator-5554 shell 
adb shell push Phone.apk /system/app (파일 복사) 
Phone.apk 파일을 해당 기기의 /system/apk 폴더에 Phone.apk 넣습니다. 
adb shell chmod 644 system/app/Phone.apk (파일 권한) 
해당 기기의 /system/apk 폴더에 있는 Phone.apk 파일 권한을 설정합니다. 
adb pull /system/app/Phone.apk (파일 추출) 
해당 기기의 /system/apk 폴더에 있는 Phone.apk 파일을 추출합니다. 
adb install [-l][-r] file_spec (app을 설치 또는 재설치 할 때 사용) 
-l : 다른 장치로 복사돼는것을 막습니다. -r : 이미 존재하는 app 데이터를 지우지 않은채 재설치 합니다. file_apec : 설치할 app의 .apk 파일입니다. 
adb uninstall [-k] package (패키지 이름을 가진 app를 제거) 
-k : app 의 데이터를 보존합니다. package : 패키지의 전체 경로, apk 확장자는 빼야합니다.
예) 패키지 삭제 adb unstall com.falinux.android.hello 
adb push local remote (local 파일을 remote 이름으로 복사) 
개발자 컴퓨터에 있는 local 이란 이름을 가진 파일을...
타겟 시스템 remote 란 이름으로 복사합니다. 
예) com.falinux.android.rose.apk 파일을 안드로이드 기기 /data/app 폴더 안으로 집어넣습니다. adb push c:\com.falinux.android.rose.apk /data/app/ 
adb pull remote local (remote 파일을 local 이름으로 복사) 
해당 시스템에 있는 remote 라는 파일을 개발자 컴퓨터에 local 이란 이름으로 복사합니다.
예) 안드로이드 기기 /data/app/com.falinux.android.rose.apk 파일을 C 드라이버로 가져옵니다. adb pull /data/app/com.falinux.android.rose.apk c:\com.falinux.android.rose.apk 
adb reboot (시스템 재부팅) 
안드로이드 시스템을 재부팅합니다. 
adb kill-server (adb 종료) ** -- 로그가 나오지 않을때 한번 실행해 볼 필요 있음
adb에 문제가 있을 경우, adb를 종료 시킵니다. 
adb start-server (adb 실행) 
종료된 adb를 실행 시킵니다.

예제 )
# adb devices
D:\>adb devices
List of devices attached

0123456789ABCDEF        device
f4fbc224        device

# adb install
D:\>adb -s 0123456789ABCDEF install 파일명.apk
(주의 apk 파일이 있는 경로에서 실행 또는 Full 경로 입력)


2016년 1월 26일 화요일

[그누보드] 그누보드5 테마 - 구조, 상수, 파일용도, G5함수

그누보드5 테마 제작을 위해 먼저 알아두셔야 할 내용

1. 기본구조
테마에는 상당히 많은 파일이 포함되어 있습니다만 핵심 파일은 head.php, index.php, tail.php 파일입니다. 테마에 포함된 skin, mobile 폴더는 그누보드5 루트에 있는 해당 폴더와 역할이 동일합니다. 테마에 스킨을 포함시켜 배포하는 경우에 사용됩니다.


2. 테마 경로 상수
테마 작업을 위해 필요한 테마 경로 상수입니다. 기본으로 제공되는 상수는 아래와 같습니다.

G5_THEME_PATH : 사용 중인 테마 폴더의 절대 경로입니다. 사용 중인 테마가 basic 이라면 /home/example/www/theme/basic 입니다.

G5_THEME_URL : 사용 중인 테마의 웹접근 절대 경로입니다. 사용 중인 테마가 basic 이라면 http://example.com/theme/basic 의 경로를 가집니다. 실제로 사용자가 입력하는 경우는 없을 것이며 G5_THEME_JS_URL 등의 상수를 선언하기 위해 사용됩니다.

G5_THEME_MOBILE_PATH : 사용 중인 테마의 모바일 폴더 절대 경로입니다. /home/example/www/theme/basic/mobile 과 같습니다.

G5_THEME_LIB_PATH : 테마에 별도 라이브러리 파일을 포함시켜 사용하는 경우를 위한 경로 상수입니다. /home/example/www/theme/basic/lib 와 같습니다.

G5_THEME_CSS_URL : 현재 사용 중인 테마의 CSS 폴더 경로입니다. http://example.com/theme/basic/css 와 같습니다.

G5_THEME_IMG_URL : 현재 사용 중인 테마의 img 폴더 경로입니다. http://example.com/theme/basic/img 와 같습니다.

G5_THEME_JS_URL : 현재 사용 중인 테마의 js 폴더 경로입니다. http://example.com/theme/basic/js 와 같습니다. 

기본 제공되는 경로 상수는 위와 같으며 테마에 추가적으로 필요한 상수가 있다면 테마의 theme.config.php 파일에 선언해서 사용하시면 됩니다.

3. 파일용도
_common.php : 그누보드5 루트 common.php 파일을 include 합니다. 일반적으로 php 파일 등의 상단에 include_once('./_common.php'); 와 같이 입력해서 사용합니다.

group.php : bbs/group.php 파일과 동일합니다. 그룹 최신글을 노출할 때 사용합니다. 테마에 포함되어 있으면 bbs/group.php 대신 사용됩니다.

head.php : 테마의 헤더 부분을 담당하는 파일입니다. 필수 파일입니다.

head.sub.php : 그누보드5 루트의 head.sub.php 파일과 동일한 역할을 합니다. 테마에 이 파일이 포함되어 있으면 루트의 head.sub.php 파일 대신 사용됩니다. 테마에서 그누보드5 기본 css파일, jQuery 등을 사용하지 않고 별도의 파일을 사용하시려면 이 파일을 수정해 css 파일 등의 경로를 지정해주시면 됩니다. 이 파일은 필수는 아니지만 보통 css 파일의 경로를 테마로 지정해야 하고 그누보드5에서 사용되는 팝업에는 head.sub.php 파일을 include 하기 때문에 테마에 맞게 디자인을 변경하시려면 사용하셔야 합니다.

index.php : 사이트 초기화면 파일입니다. 필수 파일입니다.

readme.txt : 테마 이름, 버전, 라이선스 등의 정보를 담고 있는 파일입니다. 관리자 테마설정에서 상세보기 내용이 담겨있습니다.

screenshot.png : 테마의 스크린샷입니다. 관리자 테마설정 페이지에서 설치된 테마의 이미지로 사용됩니다. png 파일만 사용이 가능합니다.

tail.php : 테마의 푸터 부분을 담당하는 파일입니다. 필수 파일입니다.

tail.sub.php : head.sub.php 파일과 마찬가지로 필수 파일은 아닙니다. 푸터 부분에 테마만의 코드 넣는 등의 용도로 사용하실 수 있습니다.

theme.config.php : 테마의 기본 설정을 담고 있는 파일입니다. 테마의 지원기기 설정 등의 설정을 할 수 있습니다. 이 파일은 common.php 파일에서 자동 로드됩니다.


그외 css, img, mobile, skin 등의 폴더 역할은 그누보드5 루트에 있는 해당 폴더의 역할과 동일합니다.

4. G5 함수

G5_ADMIN_DIR     =   adm
G5_BBS_DIR        =   bbs
G5_DATA_DIR      =   data
G5_JS_DIR           =   js
G5_LIB_PATH       =   lib
G5_SMS5_DIR      =   sms5
G5_SMS5_ADMIN_DIR   =   sms_admin

G5_PATH             =   /home/www
G5_ADMIN_PATH   =   /home/www/adm
G5_BBS_PATH      =   /home/www/bbs
G5_DATA_PATH    =   /home/www/data
G5_JS_PATH        =   /home/www/js
G5_LIB_PATH       =   /home/www/lib
G5_PLUGIN_PATH =   /home/www/plugin
G5_SKIN_PATH     =   /home/www/skin
G5_SMS5_PATH   =   G5_PLUGIN_PATH.'/'.G5_SMS5_DIR
G5_SMS5_ADMIN_PATH   =   G5_ADMIN_PATH.'/'.G5_SMS5_ADMIN_DIR

G5_URL              =   http://도메인
G5_ADMIN_URL   =   http://도메인/adm    ex. http://www.happyjung.com/adm
G5_BBS_URL       =  http://도메인/bbs
G5_DATA_URL     =   http://도메인/data
G5_JS_URL         =   http://도메인/js
G5_LIB_URL        =   http://도메인/lib
G5_SKIN_URL      =   http://도메인/skin
G5_SMS5_URL    =   G5_PLUGIN_URL.'/'.G5_SMS5_DIR
G5_SMS5_ADMIN_URL   =   G5_ADMIN_URL.'/'.G5_SMS5_ADMIN_DIR

$board_skin_path     =   G5_SKIN_PATH.'/board/'.$board['bo_skin']  // ex. /home/www/skin/board/
$board_skin_url        =   G5_SKIN_URL .'/board/'.$board['bo_skin']     // ex. http://도메인/skin/board/
$member_skin_path   =   G5_SKIN_PATH.'/member/'.$config['cf_member_skin']  // ex. /home/www/skin/member/스킨
$member_skin_url     =   G5_SKIN_URL .'/member/'.$config['cf_member_skin']     // ex. http://도메인/skin/member/스킨
$new_skin_path       =   G5_SKIN_PATH.'/new/'.$config['cf_new_skin']  // ex. /home/www/skin/new/스킨
$new_skin_url         =   G5_SKIN_URL .'/new/'.$config['cf_new_skin']     // ex. http://도메인/skin/new/스킨
$search_skin_path   =   G5_SKIN_PATH.'/search/'.$config['cf_search_skin']  // ex. /home/www/skin/search/스킨
$search_skin_url      =   G5_SKIN_URL .'/search/'.$config['cf_search_skin']     // ex. http://도메인/skin/search/스킨
$connect_skin_path   =   G5_SKIN_PATH.'/connect/'.$config['cf_connect_skin']  // ex. /home/www/skin/connect/스킨
$connect_skin_url   =   G5_SKIN_URL .'/connect/'.$config['cf_connect_skin']     // ex. http://도메인/skin/connect/스킨
$faq_skin_path   =   G5_SKIN_PATH.'/faq/'.$config['cf_faq_skin']  // ex. /home/www/skin/faq/스킨
$faq_skin_url   =   G5_SKIN_URL.'/faq/'.$config['cf_faq_skin']     // ex. http://도메인/skin/faq/스킨
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기