브로커에 등록

마지막 업데이트: 2022년 7월 13일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
AWS ElasticBeanstalk + Node.js
Module : mosca (Node.js용 module인 mosca를 사용했습니다.)
구조가 단순하지만 필요한 기능의 지원은 모두 가능하고 사용 환경에 따라 customizing 하기도 용이합니다.
필요에 따라 REDIS나 MongoDB를 활용한 storage option도 지원합니다.

MQTT 적용을 통한 중계시스템 개선

주문중계채널은 개별 디바이스들이 중계서버에 일정시간에 한번씩 API polling을 하는 구조로 운영되고 있습니다.
신규주문 뿐만 아니라 주문의 취소나 상태변경과 같은 정보를 전달 받기 위해 API polling을 수행합니다.
바로결제 이용 업소와 바로결제 주문건의 증가에 따라 채널별 디바이스에서 polling이 가파르게 증가하고 있습니다.
이러한 polling 횟수 증가는 대응 API에 부하를 가져와 auto-scale에 의한 instance 수 증가와 이에 따른 운영비용 상승의 원인이 됩니다.
또한 각 채널의 개별 디바이스들의 live 상태를 API 서버를 통해 update 해야 하는데 이전에는 polling API를 live signal로 판단했습니다.
하지만 운영을 진행하면서 개별 디바이스의 live도 명시적 live message를 통해 update 해야 할 필요가 발생했습니다.
이러한 이유로 구조적으로 polling API를 통한 pull 구조가 아닌 서비스 서버에 의한 push 구조로 변경함으로써 해법을 찾으려 했습니다.
MQTT Broker를 적용하고 Topic 구조에 Message 발행(publication) & 구독(subscription)을 이용한 EDA(Event Driven Architecture)로의 전환을 계획하게 되었습니다.

MQTT란 무엇인가?

MQTT(Message Queue for Telemetry Transport)는 M2M 또는 IoT 기기와 G/W의 연동을 위해 정의된 프로토콜입니다.
Facebook messenger가 MQTT를 사용했다고 알려져 있습니다(지금도 쓰고 있는지 정확히 어떤 용도인지는 모릅니다).
경량 프로토콜로 저전력 장비에서도 운용 가능하며 network bandwidth가 작은 곳에서도 충분히 운용 가능하도록 설계된 프로토콜입니다.
주요한 특장점은 아래와 같습니다.

Connection Oriented
* MQTT broker와 연결을 요청하는 client는 TCP/IP socket 연결을 한 후 명시적으로 종료하거나 network 사정에 의해 연결이 끊어질 때까지 연결 상태를 유지합니다.
* Topic에 발행된 message와 연결상태 확인을 위한 live(heart-beat)를 항상 유지된 연결을 통해 전달하게 됩니다.
* 연결 상태를 유지하는 것은 물론이고 연결이 끊어진 경우 재접속 등의 지원을 위한 자체 기능을 보유하고 있습니다.

Topic 그리고 발행(publication) / 구독(subscription)
* 개설된 Topic에 message를 발행하면 해당 Topic을 구독하는 client 들에게 message를 전송합니다.
* 따라서 one to multi 또는 one to one message 전송을 모두 지원할 수 있습니다.

QoS(Quality of Service)는 0, 1, 2 세단계를 지원
* 0 : 최대 1회 전송. Topic을 통해 message를 전송할 뿐 꼭 받으리라는 보장은 안해줍니다.
* 1 : 최소 1회 전송. 혹시 구독하는 client가 message를 받았는지 불확실하면 정해진 횟수만큼 재전송합니다. (계속 주는 건 좋은데 중복의 위험이 ;;;)
* 2 : 등록된 client는 요구된 message를 정확히 한 번 수신할 수 있도록 보장합니다.

다양한 개발언어의 다양한 클라이언트가 지원
* C는 물론이며 JAVA, Node.js, Python 등등 여러 종류의 개발언어로 Broker/Client Library가 존재합니다.
* 대부분 유료의 경우 QoS-2까지 지원하고 보통은 QoS-1까지 지원합니다.

각각의 Action에 따른 Notification
* Client의 연결, 연결해제, 구독, 발행 등등의 event에 대해서 MQTT broker가 대응할 수 있도록 해줍니다.

우리가 적용한 MQTT Broker는?

MOSCA

AWS ElasticBeanstalk + Node.js
Module : mosca (Node.js용 module인 mosca를 사용했습니다.)
구조가 단순하지만 필요한 기능의 지원은 모두 가능하고 사용 환경에 따라 customizing 하기도 용이합니다.
필요에 따라 REDIS나 MongoDB를 활용한 storage option도 지원합니다.

  • mosca는 무료 사용이 가능한 license
  • MQTT 3.1, 3.1.1 호환.
  • QoS 0 또는 QoS 1 지원.

주문중계시스템 구성

OST_MC

MQTT broker를 적용해 구성한 멀티채널 중계시스템의 모습입니다.
앞서 발생한 주문 data의 변동내용(신규,최소,상태변경)에 따라 API 서버에서 MQTT broker로 Message 발행하고 MQTT broker를 구독하고 있던 하위 MQTT Broker#1,2에 message 중계합니다.
각 채널에 소속된 개별 디바이스는 어느 MQTT broker를 구독하고 있던 message를 전달 받게 됩니다.
거꾸로 개별 디바이스는 구독하는 MQTT broker#1,2에 live 상태보고를 하고 MQTT broker#1,2는 API 서버를 통해 live 상태를 저장합니다.

적용 효과

MQTT를 중계시스템에 적용한 이후 기대하는 효과는 이렇습니다.

  • API 서버 부하 감소 및 트래픽 감소 : 각 디바이스들이 일정시간에 한번씩 히트하던 API polling이 없어지면서 API 서버 상태는 훨씬 쾌적해지기를.
  • 중계 정확성 증가 : 발생한 이벤트에 대해서 주문번호를 MQTT로 전송하고 이를 기반으로 API에서 data를 가져오게 함으로써 좀 더 정확한 전달을 기대할 수 있게 되기를.
  • 각 채널별 디바이스의 live 상태 정확성 증가 : 항상 연결된 디바이스에서 브로커에 등록 message 수신이나 연결상태에 대한 MQTT 이벤트를 통해 훨씬 실시간에 가까운 상태 확인이 가능해지기를.
  • 디바이스의 통신 오류 감소 : 디바이스는 MQTT 연결상태에만 집중하고 다른 추가적 연결이 필요 없어져서 코드도 단순해지고 내부 관리도 개선되기를.

아직 갈 길이 멀다

당초 단말기를 제외한 모든 채널을 MQTT로 통합하고 client에서의 API polling을 보조적 수단으로 지원하는 것을 목표로 했습니다. 그러나 …

주문접수앱
* 추진과정에서 스마트폰의 최근 OS에서 battery와 memory의 효과적 관리를 위한 보호모드로 인해 MQTT 접속이 지속될 수 없음을 확인하게 됩니다.
* 이러한 문제를 해결하고자 여러 방안을 시도해 보았지만 현재로서는 실패 ㅠㅠ
* 따라서 이 부분은 기약 없이 연기한 상태입니다.

배민 단말기
* 현재 사용하고 있는 단말기가 가진 구조적 한계가 있습니다. 이로인해 단말기도 현재로서는 MQTT를 적용할 수 없습니다.
* 차기 모델은 이 부분을 극복해 단말기도 MQTT 연동이 가능하도록 개선할 예정입니다.

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

플랫폼에 등록하는 것은 몇 번의 클릭만으로 이루어진 간단한 과정입니다. 한 번의 클릭으로 거래 인터페이스열려면 "START IN ONE CLICK" 버튼을 클릭하십시오.

이것은 당신을 데려 갈 것이다 데모 거래 페이지 . 거래 시작 "DEMO 무역을 계속"를 클릭 하여 데모 계정에 $ 10,000



계정을 계속 사용하려면 거래 결과를 저장하고 실제 계정으로 거래할 수 있습니다. "등록"을 클릭하여 Pocket Option 계정을 만드십시오.

세 가지 옵션이 있습니다. 이메일 주소, Facebook 계정 또는 Google 계정 으로 아래와 같이 가입합니다 . 적절한 방법을 선택하고 암호를 생성하기만 하면 됩니다.


이메일로 가입하는 방법

Facebook 계정으로 가입하는 방법

또한 Facebook 계정으로 웹을 통해 계정을 열 수 있는 옵션이 있으며 몇 가지 간단한 단계만 거치면 됩니다.

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

1. Facebook 버튼을 클릭 합니다

. 2. Facebook 로그인 창이 열리고 여기에 이메일 주소를 입력해야 합니다. 당신이 페이스 북에 등록하는 데 사용하는 것이

당신의 페이스 북 계정에서 암호를 입력하십시오

"로그인"에 4.를

당신이하면 버튼 "에서 로그"를 클릭 , 포켓 옵션입니다 액세스 요청 : 당신의 이름과 프로필 사진을하고 이메일 주소. 계속. 을 클릭

한 후 Pocket Option 플랫폼으로 자동 리디렉션됩니다.


Google 계정으로 가입하는 방법

1. Google 계정으로 가입하려면 등록 양식에서 해당 버튼을 클릭하십시오.

2. 새로 열린 창에서 전화번호 또는 이메일을 입력하고 "다음"을 클릭합니다.

3. 그런 다음 Google 계정의 비밀번호를 입력하고 "다음"을 클릭합니다.

그런 다음 서비스에서 귀하의 이메일 주소로 전송된 지침을 따르십시오.


Pocket Option iOS 앱에 가입

iOS 모바일 장치가 있는 경우 App Store 또는 여기 에서 공식 Pocket Option 모바일 앱을 다운로드해야 합니다 . "PO Trade" 앱을 검색하고 iPhone 또는 iPad에 다운로드하기만 하면 됩니다.

Pocket Option Android 앱에 가입

Android 모바일 장치가 있는 경우 Google Play 또는 여기 에서 공식 Pocket Option 모바일 앱을 다운로드해야 합니다 . "Pocket Option Broker" 앱을 검색하고 기기에 다운로드하기만 하면 됩니다.

모바일 웹 버전에서 Pocket Option 계정 등록

Pocket Option 거래 플랫폼의 모바일 웹 버전에서 거래를 하고 싶다면 쉽게 할 수 있습니다. 먼저 모바일 장치에서 브라우저를 엽니다. 그런 다음 " pocketoption.com "을 검색 하고 브로커의 공식 웹 사이트를 방문하십시오.

왼쪽 상단 모서리에 있는 "메뉴"를 클릭합니다.

"등록" 버튼을 클릭합니다.

이 단계에서 우리는 여전히 데이터를 입력합니다: 이메일, 비밀번호, "동의"를 확인하고 "가입"클릭하십시오.

여기 있습니다! 이제 플랫폼의 모바일 웹 버전에서 거래할 수 있습니다. 거래 플랫폼의 모바일 웹 버전은 일반 웹 버전과 정확히 동일합니다. 결과적으로 거래 및 자금 이체에 문제가 없을 것입니다.

데모 계정에서 거래하려면 "데모 거래 계속"을 클릭하십시오

. 데모 계정에 $1,000가 있습니다.


디지털 거래와 빠른 거래의 차이점

디지털 거래는 전통적인 거래 주문 유형입니다. 거래자는 "구매까지의 시간"(M1, M5, M30, H1 등)에 대한 고정된 기간 중 하나를 표시하고 이 기간 내에 거래를 합니다. 차트에는 "구매까지의 시간"(지정된 기간에 따라 다름) 및 "만료까지의 시간"("구매까지의 시간" + 30초)의 두 수직선으로 구성된 차트에 30분짜리 "회선"이 있습니다.

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

따라서 디지털 거래는 항상 고정된 주문 마감 시간으로 수행되며 정확히 매분 시작입니다.

반면 빠른 거래는 정확한 만료 시간을 설정할 수 있고 만료 30초 전부터 짧은 시간 프레임을 브로커에 등록 활용할 수 있습니다.

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

빠른 거래 모드에서 거래 주문을 할 때 차트에 하나의 수직선만 표시됩니다. 거래 패널의 지정된 기간에 직접적으로 의존하는 거래 주문의 "만료 시간"입니다. 즉, 더 간단하고 빠른 거래 모드입니다.

디지털 거래와 빠른 거래 간 전환

왼쪽 제어판에서 "거래" 버튼을 클릭하거나 거래 패널의 기간 메뉴 아래에 있는 플래그 또는 시계 기호를 클릭하여 이러한 거래 유형 간에 언제든지 전환할 수 있습니다.

"거래" 버튼

을 클릭하여 디지털 및 빠른 거래 간 전환 플래그를 클릭하여 디지털 및 빠른 거래 간 전환


데모에서 실제 계정으로 전환하는 방법은 무엇입니까?

계정 간에 전환하려면 다음 단계를 따르십시오.

1. 플랫폼 상단에서 데모 계정을 클릭합니다.

2. "실시간 계정"을 클릭합니다.

3. 플랫폼은 귀하의 계정에 투자해야 함을 알려줍니다(최소 투자 금액은 $10). 라이브 거래를 시작하려면 먼저 잔액을 충전하십시오. "지금 입금"을 클릭하십시오.
Pocket Option

에 입금하는 방법 입금이 성공적으로 완료되면 실제 계정으로 거래할 수 있습니다.

Pocket Option에 로그인하는 방법


Pocket Option 계정에 어떻게 로그인합니까?

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

Facebook을 사용하여 Pocket Option에 로그인하는 방법은 무엇입니까?

Facebook 버튼을 클릭 하여 개인 Facebook 계정사용하여 웹사이트에 로그인 할 수도 있습니다 .

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

1. Facebook 버튼을 클릭합니다

. 2. Facebook 로그인 창이 열립니다. 여기에 Facebook에 등록할 때 사용한 이메일 주소를 입력해야 합니다.

3. Facebook 계정의 비밀번호를 입력합니다

. 4. "로그인"을 클릭

합니다. 했습니다 버튼 "로그인"를 클릭 , 포켓 옵션은 귀하의 이름과 프로필 사진 및 이메일 주소 :에 대한 액세스를 요청. 계속. 을 클릭

한 후 Pocket Option 플랫폼으로 자동 리디렉션됩니다.


Google을 사용하여 Pocket Option에 로그인하는 방법은 무엇입니까?

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

1. Google 계정을 통한 승인을 위해서는 Google 버튼 을 클릭해야 합니다.

2. 그런 다음 열리는 새 창에서 전화번호 또는 이메일을 입력하고 "다음"을 클릭합니다. 이 로그인을 입력하고 «다음»을 클릭하면 시스템 에서 창이 열립니다. Google 계정의 비밀번호를 묻는 메시지가 표시됩니다.

3. 그런 다음 Google 계정 의 비밀번호입력하고 "다음"을 클릭합니다.

그런 다음 서비스에서 귀하의 이메일 주소로 전송된 지침을 따르십시오. 개인 Pocket Option 계정으로 이동합니다.

Pocket Option 계정에서 비밀번호 복구

플랫폼에 로그인할 수 없다고 걱정하지 마십시오. 잘못된 비밀번호를 입력했을 수 있습니다. 새로운 것을 생각해낼 수 있습니다.

웹 버전

사용하는 경우 로그인 버튼 아래의 "비밀번호 복구" 링크 를 클릭

하면 시스템에서 이메일 비밀번호(이메일) 복원을 요청하는 창이 열립니다. 시스템에 적절한 이메일 주소를 제공해야 합니다.

비밀번호를 재설정하기 위해 이 이메일 주소로 이메일이 전송되었다는 알림이 열립니다.

또한 이메일의 서신에서 비밀번호를 변경하라는 제안을 받게 됩니다. «비밀번호 복구»를 클릭하십시오.

암호를 재설정하고 Pocket Option 웹사이트로 이동하여 암호를 성공적으로 재설정했음을 알립니다! 새 비밀번호를 찾으려면 이메일을 확인하세요.

이메일에 새 비밀번호가 표시

됩니다. 이제 사용자 이름과 새 암호를 사용하여 Pocket Option 플랫폼에 로그인할 수 있습니다.

모바일 애플리케이션

사용하는 경우 그렇게 하려면 "비밀번호를 잊으셨습니까?"를 클릭하십시오. 링크

새 창에서 가입 시 사용한 이메일을 입력하고 "복구" 버튼을 클릭합니다. 그런 다음 웹 앱과 동일한 나머지 단계를 수행합니다.

Pocket Option 계정에서 보낸 이메일을 잊어버렸습니다.

이메일을 잊어버린 경우 Facebook 또는 Gmail을 사용하여 로그인할 수 있습니다.

Pocket Option Broker 거래에 가입하고 계정에 로그인하는 방법

이 계정을 생성하지 않았다면 Pocket Option 웹사이트에 등록할 때 생성할 수 있습니다. 극단적인 경우 이메일을 잊어버리고 구글과 페이스북을 통해 로그인할 수 없는 경우 지원 서비스에 문의해야 합니다.

모바일 웹 버전에서 Pocket Option에 로그인

Pocket Option 거래 플랫폼의 모바일 웹 버전에서 거래를 하고 싶다면 쉽게 할 수 있습니다. 먼저 모바일 장치에서 브라우저를 엽니다. 그런 다음 " pocketoption.com "을 검색 하고 브로커의 공식 웹 사이트를 방문하십시오.

당신의 입력 이메일비밀번호를 다음을 클릭합니다 "LOGIN" 버튼을 클릭합니다.

여기 있어요! 이제 플랫폼의 모바일 웹 버전에서 거래할 수 있습니다. 거래 플랫폼의 모바일 웹 버전은 일반 웹 버전과 정확히 동일합니다. 결과적으로 거래 및 자금 이체에 문제가 없을 것입니다. 데모 계정에 $1,000가 있습니다.

Pocket Option iOS 앱에 로그인하는 방법은 무엇입니까?

iOS 모바일 플랫폼에서의 로그인은 Pocket Option 웹 앱에서의 로그인과 유사합니다. 응용 프로그램은 장치의 App Store를 통해 다운로드하거나 여기를 클릭 하십시오 . "PO Trade" 앱을 검색 하고 «GET»을 클릭하여 iPhone 또는 iPad에 설치하기만 하면 됩니다.

설치 및 실행 후 이메일을 사용하여 Pocket Option iOS 모바일 앱에 로그인할 수 있습니다. "로그인" 옵션을 선택하기만 하면 됩니다.

당신의 입력 이메일비밀번호를 다음을 클릭합니다 "로그인" 버튼을 클릭합니다.

데모 계정에 $1,000가 있습니다.

Pocket Option Android 앱에 로그인하는 방법은 무엇입니까?

이 앱을 찾으려면 Google Play 스토어를 방문하여 "Pocket Option Broker"를 검색하거나 여기를 클릭해야 합니다 . 설치 및 실행 후 이메일을 사용하여 Pocket Option Android 모바일 앱에 로그인할 수 있습니다.

iOS 기기에서와 동일한 단계를 수행하고 "로그인" 옵션을

선택합니다. 이메일과 비밀번호를 입력 한 다음 "로그인" 버튼을 클릭합니다.

또한 데모 계정에 $1,000가 있습니다.

[더,오래] 사업 전 상표등록 안 하면 브로커 제물 된다

신길동 매운 짬뽕이 본격적으로 세상에 알려진 건 2010년쯤 매스컴을 타면서부터였다. 이런저런 매거진등 매체를 통해 조금씩 알려지다가 ‘식신로드’ 방영을 시작으로 무한도전까지 전파를 타면서 전국구 스타 맛집이 된 것이다.

필자는 해당 짬뽕집의 태생부터 단골로 왕래가 있어 그 역사를 꼼꼼히 알고 있다. 오늘은 상표등록의 함정에 대해 해당 짬뽕집의 에피소드를 들어 간단히 소개할까 한다.

신길동 매운 짬봉집은 방송에 소개되기 전부터 신길동에서 소수의 사람만 아는 숨겨진 맛집이었다. [사진 김민철]

신길동 매운 짬봉집은 방송에 소개되기 전부터 신길동에서 소수의 사람만 아는 숨겨진 맛집이었다. [사진 김민철]

이 짬뽕집은 방송에 소개되기 전부터 신길동에서 유명한 우동 맛집으로 이름을 알리고 있었다. 버젓한 가게가 아닌 포장마차에서 판매하고 있었기에 소문난 맛집이라기보다 소수의 사람만 아는 숨겨진 맛집이었던 것.

사장 아저씨는 지금도 착하지만 그때는 더 착했다. 가끔 오는 나의 얼굴을 알아보고는 매운 것 잘 못 먹으니 우동을 먹으라고 추천하면서 짬뽕 국물은 조금씩 서비스로 주곤 했다. (이 외 사장님의 선한 마음씨에 대한 다양한 에피소드는 다음 기회에 소개하겠다)

그러던 어느 날 아저씨는 포장마차를 접고, 안쪽 골목 상가에 들어가게 됐다는 소식을 전했다. 다소 걱정은 되지만 열심히 해보겠다는 희망찬 포부의 말씀에 ‘나도 저렇게 살아야지~’ 라는 교훈을 얻기도 했다.

그리고 몇 개월 후 다시 가게를 찾았다. 다행히 이전보다 큰 인기를 얻으며 ‘신길동 매운짬뽕’으로 이름을 날리는 유명 맛집이 돼 있었다. 그즈음 브로커에 등록 나는 첫 번째 사업을 망하고 재기를 위해 머리띠를 팔며 노점을 하던 때여서 그 아저씨가 참으로 부러웠던 것이 기억난다.

나의 좋지 않은 표정 때문인지 아저씨는 이런저런 이야기 끝에 파격적인 제안을 했다. “우동 짬뽕 기술 배워 볼래요? 내가 가르쳐 줄게~ 부산 사는 사람도 일주일 만에 배워 갔어요.”

이 아저씨 착한 것을 넘어서 천사다. 당시 나는 진짜 배워 볼까 진심으로 고민하기도 했다. 그 이후에도 점점 손님이 많아져 갈 때마다 대기 줄이 너무 길거나 재료가 다 떨어져 일찍 문을 닫는 상황에 자연스럽게 발길을 끊게 되었다.

그리고 다시 찾게 된 날 가게는 간판을 바꿨다. ‘신길동 별난아찌 짬뽕’. 착하고 순하신 분이었지만 세상의 지식은 부족하다 보니 상표등록에 대해 제대로 몰랐던 것이다. ‘신길동’과 ‘짬뽕’은 고유명사로서 ‘신길동 매운짬뽕’은 상표로 등록할 수 없는 명칭이다.

어느날 다시 찾게 된 날 가게는

어느날 다시 찾게 된 날 가게는 '신길동 별난아찌 짬뽕'이라고 간판을 바꿨다. [사진 김민철]

'신길동'과 '짬뽕'은 고유명사로서 '신길동 매운짬뽕'은 상표로 등록할 수 없는 명칭이다. [사진 김민철]

그래도 이 경우는 낫다. 상표를 통째로 뺏기는 경우도 있기 때문인데, 바로 청년 장사꾼으로 유명한 김윤규 대표 에피소드가 대표적이다. 이미 기사로도 보도된 내용이기에 간단하게 소개하겠다.

상표 브로커 관련 기사.

김윤규 대표의

김윤규 대표의 '열정감자'가 방송에 소개된 다음 날 아침, 소위 상표 브로커가 상표를 선점했다. [사진 특허정보넷]

김윤규 대표의 ‘열정감자’가 시사매거진 2580에 소개된 다음 날 아침 소위 상표 브로커가 열정감자 상표를 선점한 사건이 발생했다. 사업자등록증, 영업허가증, 간판 모두 열정감자였지만 상표권에 대해서는 무지했던 탓에 벌어진 일이었다.

이 문제로 열정감자 사건은 여러 신문에 상표 브로커 주요 피해사례로 소개되었고, 심지어 KBS 9시 뉴스에도 보도되어 큰 이슈가 됐다. 그 이후엔 국내 상표등록 관련해 선등록보다 선사용을 인정해주는 판결이 나오는 추세다. 실제로 브로커들이 선점한 열정감자 상표 출원 또한 법정 판결에 따라 기각됐다. (출처: 2014원5625 특허심판원 제2부 심결)

2014 원 5625 특허심판원 제2부 심결.

2014 원 5625 특허심판원 제2부 심결.

이는 비단 소상공인의 문제만이 아니라 상장사에서도 흔히 일어나는 일로, ‘소녀시대’도 상표 브로커에게 상표를 점령당해 골머리를 앓은 전적이 브로커에 등록 있다.

따라서 사업을 하기 전 제일 먼저 해야 할 일은 네이밍을 정한 후 상표와 도메인을 등록하는 것. 이 두 가지는 사업 전에 즉시 이행하지 않으면 어느 날 갑자기 ‘훅~’ 옆구리에 칼이 꽂히는 걸 느끼는 순간이 올 수도 있다.

필자가 필명으로 쓰고 있는 ‘마신’도 대표적인 사례로 들 수 있는데, 상표는 필자가 가진 상태이지만 도메인은 이미 다른 곳에서 선점한 상태이다.

참고로 상표와 도메인 등록은 그렇게 어려운 일이 아니다. 상표의 경우 특허청에서 운영하는 ‘특허로(www.patent.go.kr)’ 사이트, 도메인은 ‘가비아(www.gabia.com)’사이트를 이용하면 일반 개인도 쉽게 등록할 수 있다.

2. 특허고객번호부여 신청 (당일 발급)
- 특허로> 특허고객번호부여신청> 프로그램 설치 후 안내하는 프로세스대로 진행> 국내 자연인으로 신청
- 필요 서류: 주민등록등복, 초본, 가족관계등록부증명서 중 택1. 인감 혹은 서명 이미지(카메라 촬영 이미지 가능)

3. 상표등록신청
- 특허로> easy 출원 서비스> 상표> 출원서류> 이후 안내대로 진행
- 지정상품은 하고자 하는 사업 관련된 항목들로 구성
- 진행 후 등록료 납부(당일 혹은 익일 내 입금 필수)

4. 특허청심사 후 출원공고
상표등록출원서가 제출되면 특허청에서는 이를 접수하여 심사에 착수하여, 약 6~8개월 정도 후 출원공고를 함. 출원공고 기간은 공고된 날부터 2개월이며, 이 기간 내 제3자가 이의 신청 가능

5. 등록 결정
특허청은 출원공고 후 별다른 이의신청이 없거나, 이의신청이 있어도 적합한 사유가 없다면 등록 결정서를 발부한다. 출원인은 등록 결정서를 접수한 날로부터 2개월 내 소정의 등록비용을 납부하면 등록이 완료됨 (상표권은 등록일로부터 10년간 유지되며, 필요 시 10년마다 갱신하여 반영구적으로 상표권 향유 가능)

피해발생 대응 안내

중국 상표브로커에게 선점된 상표가 이미 등록이 되었고, 상표브로커는 단순히 상표만 보유하고 있을 뿐 실제 사용하지 않는 경우에는 불사용 취소심판이라는 제도를 활용해 볼 수 있습니다.
각국의 상표법은 상표의 공정사용이라는 목적 아래, 실제 사용없이 권리만 보유하고 있는 상표를 취소시켜 상표의 고갈을 막고 건강한 거래질서를 확립하는 제도를 가지고 있습니다. 이를 불사용 취소심판 제도라고 하는데 중국에도 이 제도가 있습니다. 다만, 이 제도를 활용하려면 반드시 상표권의 등록일로부터 3년 이상 불사용되고 있는 상태가 지속되고 있어야 합니다.
따라서, 최근에 등록이 되어 선점된 상표권에는 적용하기 어려운 단점이 있지만, 장기간 상표브로커에 의해 불사용되어 선점되어 있는 상표를 회복하는데에는 아주 효과적인 수단이 될 수 있습니다.
불사용 취소신청은 우리나라와 중국 뿐만 아니라 세계적으로 공통적으로 인정하고 있는 제도이며, 중국 상표법은 제49조 제2항에서 이를 규정하고 있습니다.

  • ① 상표 등록인이 등록상표 사용과정 중에 등록상표, 등록인 명의, 주소 또는 기타 등록사항을 스스로
    수정한 경우에, 지방 공상행정관리부서는 기한 내에 시정하도록 명령 내린다. 기간이 만료하여
    시정을 하지 못한 경우에는 상표국은 해당 등록상표를 취소한다.
  • ② 등록상표가 해당 지정사용 상품의 통용 명칭으로 되었거나 또는 정당한 이유없이 연속 3년간 사용하지
    않은 경우, 어떤 단체 또는 개인은 상표국에 등록상표의 취소신청을 할 수 있다. 상표국은 신청을 접수한
    날로부터 9개월 내에 결정해야 한다. 특별한 사정으로 연장해야 하는 경우에는 국무원 공상행정관리부서의
    비준을 받아 3개월을 연장할 수 있다.

서울특별시 강남구 테헤란로 131 한국지식재산센터 6층
한국지식재산보호원
Copyright ⓒ KOIPA All Rights Reserved

[사물 인터넷 네트워크와 서비스 구축 강좌] #5-3 MQTT 연동 IoT 서비스

사람들이 채팅 서비스에 모여 채팅방을 만들어 그룹화하고 메시지를 주고 받듯이, MQTT는 인터넷 네트워크에 참여한 다양한 장치들을 그룹화해서 서로 메시지를 주고 받을 수 있도록 해주는 프로토콜입니다.

이번 파트에서는 사물인터넷 구축할 때 사용할 수 있는 강력한 툴 중 하나인 MQTT 를 사용해보겠습니다. 그리고 MQTT 를 이용해서 센서장치, 서버, 모바일이 함께 동작하도록 만들어 보겠습니다. 그 전에, MQTT 의 동작 구조와 몇 가지 특징들을 기억해야 합니다.

MQTT 소개

MQTT (MQ Telemetry Transport)는 센서장치나 라즈베리파이 같은 임베디드 장치, 모바일 장치 사이의 통신을 위한 가벼운 메시징 프로토콜입니다. TCP/IP 기반으로 대역폭이 작은 네트워크에서 동작할 수 있도록 설계된 프로토콜입니다. 쉽게 얘기해서 임베디드 장치들을 위한 트위터라고 볼 수 있습니다.

MQTT 자체는 메시지를 어떻게 보낼 것인지를 정의하는 규약일 뿐입니다. 따라서 실제 “MQTT 트위터”를 동작시키기 위해서는 서버 역할을 해주는 장치와 프로그램이 브로커에 등록 필요한데 이를 MQTT 브로커(Broker)라고 합니다. MQTT 브로커는 각종 장치들(MQTT Client)이 보내주는 메시지를 수집하고 이걸 다시 필요한 장치들에게 전송해주는 중계서버 역할을 합니다.

MQTT 클라이언트는 브로커에게 메시지를 전달하거나 필요한 메시지를 받기만 하면 되고, MQTT 프로토콜의 구조도 간단하기 때문에 처리능력이 낮은 임베디드 장치에 잘 어울립니다. 메시지는 트위터처럼 140자 제한이 없으므로 긴 메시지나 JSON 포맷 또는 파일도 전송이 가능합니다. 이런 특징들 때문에 MQTT 프로토콜은 센서 네트웍을 구성하는데 유용한 도구로 관심을 받고 있습니다.

MQTT 동작 구조

트위터 서비스의 동작구조를 떠올려보세요. 트위터에서 사용자는 다른 사용자를 follow 할 수 있습니다. 그럼 다른 사용자가 생성하는 메시지(트윗)를 받아볼 수 있죠. 그리고 스스로 메시지를 생성할 수도 있습니다. 그럼 자신을 follow하는 사용자에게 메시지가 전달되죠.

MQTT도 거의 유사한 동작구조를 갖습니다. MQTT 시스템에 참여하는 MQTT 클라이언트는 메시지 발행(publish, 트윗에 해당), 메시지 구독(subscribe, follow에 해당) 두 가지 동작을 할 수 있습니다. MQTT 클라이언트가 메시지를 특정 채널(Topic, 토픽)에 발행하면 이 채널을 구독한 모든 클라이언트에게 메시지가 전달되는 겁니다. 중간에서 메시지를 수집, 재분해 하는 작업은 MQTT 브로커가 담당합니다.

토픽 (Topic)

메시지를 발행/구독(pub/sub) 하는 행위는 채널 단위로 일어납니다. 이를 MQTT에서는 토픽(Topic)이라고 합니다. 토픽은 슬래시(/)로 구분된 계층구조를 갖습니다.

topic_basics

메시지를 브로커에 등록 구독/발행 할 때 여러개의 토픽을 한번에 지정할 수 있도록 wild card 문자를 지원합니다. [+] 문자는 단 1개의(1 레벨) 토픽을 임의의 토픽으로 대체하는 와일드카드 문자입니다.

topic_wildcard_plus

반면 [#] 문자는 여러 레벨의 토픽을 대체할 수 있습니다. [myhome/#] 처럼 사용하면 myhome 의 하위 토픽들 모두를 지칭하게 됩니다. [#] 문자는 토픽 문자열 끝에만 사용할 수 있으며 하위 토픽 모두를 지칭합니다. (2단계 이상 하위 토픽도 포함)

topic_wildcard_hash

[$] 문자로 시작하는 토픽은 시스템에 의해 사용되는 특수한 토픽을 의미합니다. 이 토픽들은 [#] 문자열로 지정해도 포함되지 않는 토픽이 됩니다. 주로 [$SYS/] 로 시작하는 토픽들이 브로커의 내부 메시지를 위해 사용됩니다. (이에 대한 명확한 표준은 없는 상태인듯)

토픽 구조를 구성할 때 몇 가지 주의할 점이 있습니다.

  • 최상위 토픽이 [/] 문자로 시작하지 않도록 합니다. [/home/sensor/humid] 이렇게 사용할 수는 있지만 최상위 토픽이 이름이 없는 토픽이 되므로 사용하지 않는 것을 권장합니다.
  • 토픽 이름에 공백을 사용하지 않습니다.
  • 토픽 이름은 ASCII 문자만 사용합니다. (임베디드 장치와의 호환성을 위해 주의)
  • [#] 를 이용해서 토픽 전체를 구독하지 않도록 합니다. 오버헤드가 심할 경우 브로커/클라이언트 프로세스가 중단될 수 있습니다.

QoS (Quality of Service)

MQTT는 시스템에 참여하는 장치들의 처리 능력, 네트워크 대역폭, 메시지 오버헤드 등 주변상황에 맞게 시스템이 동작할 수 있도록 3단계 QoS(Quality of Service) 를 제공합니다.

  • 0 : 메시지는 한번만 전달하며, 전달여부를 확인하지 않는다. Fire and Forget 타입이다.
  • 1 : 메시지는 반드시 한번 이상 전달된다. 하지만 메시지의 핸드셰이킹 과정을 엄밀하게 추적하지 않기 때문에, 중복전송될 수도 있다.
  • 2 : 메시지는 한번만 전달된다. 메시지의 핸드셰이킹 과정을 추적한다. 높은 품질을 보장하지만 성능의 희생이 따른다.

0에 가까울수록 메시지 처리에 대한 부하가 적은 대신 메시지 손실 위험이 높아집니다. 2에 가까울수록 메시지 손실 위험은 줄어들지만 메시지 처리 부하가 급격히 늘어납니다.

(보통 0~1 정도의 QoS를 사용하면서 메시지 손실등의 위험은 상위 어플리케이션 차원에서 관리하도록 하는듯 합니다.)

MQTT 브로커 설치

MQTT 브로커는 시스템의 핵심 서버 역할을 하며, 여기에 메시지가 수집되고 다시 재분배 됩니다. 다양한 MQTT 브로커 프로그램들이 개발되어 있는데 ActiveMQ, Apollo, IBM Message Sight, JoramMQ, Mosquitto, RabbitMQ, Solace Message Routers 등이 자주 사용됩니다. 아래 링크에 MQTT 브로커의 특징을 비교한 자료가 있습니다.

여기서는 Mosquitto 브로커를 사용할 것입니다. Mosquitto는 MQTT의 기본 기능을 충실히 지원하는 가벼운 MQTT 브로커 프로그램입니다. Mosquitto 클라이언트 프로그램도 있으므로 여러대의 PC를 이용해서 테스트를 할 수 있습니다.

MQTT 동작 테스트를 위해 라즈베리파이에 Mosquitto MQTT 브로커를 설치하고 PC 및 모바일 폰에는 MQTT 클라이언트를 설치 할 것입니다.

라즈베리파이에 Mosquitto 브로커를 설치하는 작업부터 시작합니다. Mosquitto 는 apt-get 명령어를 통해 간단히 설치할 수도 있지만 업데이트가 되지 않는 문제점이 보고되고 있습니다. 아래 순서로 설치하길 권장합니다. (최신 소스코드를 다운로드 받아 설치하실땐 링크를 참고하세요.)

  • wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
  • sudo apt-key add mosquitto-repo.gpg.key
  • cd /etc/apt/sources.list.d/
  • sudo wget http://repo.mosquitto.org/debian/mosquitto-wheezy.list
  • sudo apt-get install mosquitto

설치가 완료되면 브로커는 1883 포트를 사용하게 됩니다.

이제 PC와 모바일 폰에 MQTT 클라이언트를 설치해서 연동을 해보겠습니다. PC(Windows, Linux, OS X)에서는 MQTT.fx 클라이언트를 설치하면 됩니다. 아래 링크에서 프로그램을 받을 수 있습니다.

MQTT.fx 클라이언트는 윈도우 64비트만 지원합니다. 이 문제 때문에 설치가 안된다면 크롬 브라우저의 확장 앱으로 설치해서 사용하는 방법도 있습니다. 크롬 브라우저에서 아래 링크를 통해 설치할 수 있습니다.

모바일 폰에서는 앱 스토어에서 MQTT로 검색하시면 됩니다. 다양한 클라이언트가 등록되어 있는데 대부분 비슷하므로 아무거나 사용하셔도 됩니다. 유명한 MQTT 클라이언트들은 링크에서 확인하실 수 있습니다.

설정 방법은 간단합니다. 일단 MQTT 브로커 연결을 위해 아래 항목들만 정확히 설정해 주면 됩니다.

  • MQTT 브로커 URL : MQTT 브로커를 설치한 서버의 URL 입니다.
    • 같은 공유기에 PC, 모바일 폰, 라즈베리파이가 같이 물려있다면 라즈베리파이의 내부 IP 주소(192.168.x.x)를 사용하면 됩니다.

    그리고 우리가 메시지를 받을 Topic 을 지정해주면 이후 해당 Topic 으로 들어오는 메시지를 볼 수 있습니다. MQTT 클라이언트에서 subscribe 버튼을 누르고 토픽에 messagebox를 입력합니다. 그럼 messagebox 토픽이 생성되고 구독이 됩니다. PC, 모바일 등 모든 장치에서 같은 작업을 해줍니다.

    이제 PC, 모바일에서 publish 를 합니다. 이때 토픽은 messagebox로 선택합니다. 그럼 입력한 메시지가 브로커로 전달되고 messagebox 토픽을 구독하는 다른 장치들에도 전달되어야 합니다. 제대로 동작하는지 확인해보세요.

    MQTT 브로커를 설치한 라즈베리파이에 MQTT 클라이언트를 설치해서 확인할 수도 있습니다.

    • apt-get install mosquitto-clients

    아래 명령으로 메시지 발행(pub)을 할 수 있습니다. 다른 기기에도 메시지가 보여야겠죠.

    • mosquitto_pub -d -t messagebox -m “sent from RPi server”

    특정 토픽을 구독(브로커에 등록 sub) 할 수 있습니다. 이 경우 특정 토픽에 메시지가 도착 할 때마다 표시됩니다. Ctrl+c 를 눌러 멈추기 전까지는 메시지 표시하는 상태로 유지됩니다.

    센서장치와 MQTT

    이제 센서장치에 MQTT client 기능을 넣어서 데이터를 뿌리면 PC – 서버 – 모바일 폰 등 다양한 장치들이 메시지를 수신할 수 있겠죠?

    센서장치에 MQTT 기능을 넣기 위해서는 라이브러리 설치가 필요합니다. 아두이노 개발환경을 실행해서 [메뉴 – 스케치 – 라이브러리 포함하기 – 라이브러리 관리] 를 순서대로 실행합니다. 그리고 PubSubClient 로 검색하세요. 발견된 라이브러리 중 PubSubClient 라이브러리를 설치하면 됩니다.

    ESP32 모듈이 MQTT 를 이용해 데이터를 송신, 수신할 수 있도록 코드를 올려보겠습니다. 아래 스케치를 받아 ESP32에 올려주세요.

    소스코드에서 아래 부분들을 수정해줘야 합니다.

    ssid, password 는 자신의 공유기 환경에 맞게 수정하세요. mqttServer 는 MQTT 브로커가 설치된 라즈베리파이 주소입니다. 같은 공유기 안에 있다면 내부 IP 주소를 넣어주면 됩니다. mqttUser, mqttPassword 는 사용하지 않습니다. topic_pub 가 메시지를 전송할 토픽 이름입니다. topic_sub 는 센서장치로 들어오는 메시지 수신을 위해 새로 만든 토픽입니다. (별도로 토픽을 만드는 작업은 필요 없습니다. 다른 장치에서 해당 토픽으로 보내기만 하면 됩니다.)

    이제 스케치를 업로드하고, 시리얼 모니터를 켜세요. 그리고 PC, 모바일 폰 등에 설치된 MQTT client를 유심히 보세요.

    messagebox 토픽으로 센서장치가 생성하는 랜덤한 숫자가 5초 간격으로 보일겁니다. 그리고 MQTT client 에서 messagebox2 토픽으로 메시지를 보내면, ESP32 가 받아서 시리얼 모니터에 표시해 줄겁니다.

    이처럼 MQTT 를 활용하면 큰 힘 들이지 않고도 장치들을 자유자재로 연결할 수 있습니다.

    ESP32 에 올린 소스코드를 보겠습니다. 초기화 함수인 setup() 함수부터 보죠.

    공유기에 연결된 이후로 mqttClient.setServer() 함수를 호출해서 MQTT 서버 연결 정보를 등록합니다. 그리고 mqttClient.setCallback() 을 호출해서 subscribe 한 토픽에서 메시지를 받았을 때 호출될 함수를 지정해줍니다. 콜백함수에는 호출될 때 받은 메시지를 출력하는 코드만 넣어뒀습니다.

    이제 mqttClient.connect() 함수를 이용해 MQTT 브로커에 연결을 시도합니다. 연결이 완료되면 subscribe() 함수를 이용해 메시지 구독할 토픽을 지정해줍니다. public() 함수를 이용하면 특정 토픽에 메시지를 전송할 수 있습니다.

    loop() 함수에서는 주기적으로 랜덤한 숫자를 생성해 messagebox 토픽으로 전송합니다.

    서버에서 MQTT 처리하기

    우리가 서버로 사용하는 라즈베리파이 홈 서버에는 MQTT 브로커가 설치되어 있습니다. 하지만 MQTT 브로커는 메시지를 중계할 뿐, 메시지를 받아 특정한 작업을 처리하지는 않습니다.

    라즈베리파이 서버도 MQTT 메시지를 받으면 특정한 작업을 처리하도록 파이썬으로 코드를 만들어 보겠습니다. 먼저 python 에서 MQTT client 모듈을 쓸 수 있도록 설치작업을 해야합니다.

    • sudo pip3 install paho-mqtt

    이제 아래에서 소스코드를 받아 라즈베리파이 적당한 곳에 올려두세요.

    여기서 mqttc.connet() 함수 호출할 때 넘기는 파라미터를 수정해주세요. 라즈베리파이 자신에 MQTT 브로커가 설치되어 있으니 자신의 IP를 넣어주면 됩니다. 그리고 mqttc.publish() 함수를 이용해 메시지를 전송할 때 사용하는 topic 이 ‘messagebox’ 로 되어있는지 확인하세요.

    수정이 끝났으면 이 파이썬 코드를 실행해보죠.

    • python3 mqtt-publish.py

    실행시키면 터미널 창에는 아무 반응이 없을겁니다. 하지만 주기적으로 MQTT 로 메시지를 보내도록 되어 있습니다. PC/모바일 폰에서 MQTT client 로 확인해보세요. 아래처럼 “Message from RPi” 가 브로커에 등록 브로커에 등록 주기적으로 찍히면 정상입니다.

    이번에는 반대로 MQTT 메시지를 받는 코드를 만들어 보겠습니다.

    마찬가지로 소스를 받은 후 몇 가지 수정해줘야합니다.

    MQTT 브로커에 연결되면 호출되는 콜백함수가 on_connect() 입니다. 여기서 client.subscribe() 함수를 이용해 특정 토픽을 구독하도록 짜여져있습니다. 따라서 구독할 topic 이름을 센서장치가 메시지를 보내주는 messagebox 로 수정해줘야 합니다.

    나머지 코드는 수정할 부분이 없습니다. 왜냐면 라즈베리파이 자신이 IP 주소를 가져와서 사용하도록 코드가 짜여져 있거든요.

    코드 중 on_message 함수는 구독한 채널로 메시지가 들어올 때 호출되는 콜백함수입니다. 센서장치의 데이터를 수신했을 때 호출되겠지요. 수신된 데이터를 출력만 합니다.

    파일을 실행했을 때 진행되는 코드는 아래와 같습니다.

    MQTT 브로커에 연결되었을 때, 구독한 topic 으로 메시지가 들어왔을 때 실행할 콜백 함수를 등록해 줬습니다. 그리고 client.connect() 함수를 이용해 MQTT 브로커에 연결했습니다. client_loop_forever() 함수를 호출하면 MQTT 관련 작업이 백그라운드에서 계속 실행됩니다. 그리고 코드 진행은 여기서 멈춥니다. (사용자가 Ctrl+C 를 눌러 강제로 멈추기 전까지는요.)

    이상의 mqtt.py 파일을 실행하면 아래와 같이 센서장치의 데이터를 받아 출력해 줄겁니다.

    이 코드에서 살을 붙여나가면 서버에서 각종 MQTT 메시지를 받아 처리할 수 있겠죠!! 물론 MQTT 메시지는 파이썬 외에 Node.js 등 다른 플랫폼에서도 라이브러리를 통해 같은 방식의 제어가 가능합니다.

    모바일에서 MQTT 처리하기

    안드로이드나 iOS 같은 모바일 장치에 MQTT client 를 설치했다면 센서장치가 전송하는 메시지를 수실할 수 있을겁니다. 모바일 폰에 이런 기능을 직접 구현하고 싶다면 Paho 라이브러리를 사용하길 추천합니다. Paho 프로젝트는 Java 뿐 아니라 C/C++, JavaScript, Android, Python, Go, Rust, C# 등 다양한 언어에서 MQTT client 를 구현할 수 있도록 라이브러리를 제공하는 프로젝트입니다.

    Paho 홈페이지에서 안드로이드 라이브러리를 이용하면 MQTT client 를 안드로이드 앱 안에 넣을 수 있습니다.

    다만 페이지 업데이트가 느리고 라이브러리 코드가 약간 복잡해서 사용이 어려울 수도 있을겁니다. 안드로이드용 라이브러리를 이용한 안드로이드 앱 샘플을 제작해서 올려뒀으니 아래 코드를 다운로드 받아 분석하고 실행해보세요.

    앱을 다운로드 받은 후 직접 빌드하고, APK 파일을 안드로이드 폰에 올려 설치해 보시기 바랍니다.

    MQTT를 응용해서 음성으로 센서장치 제어가 가능하도록 만든 안드로이드 앱도 코드를 공유하고 있습니다. 아래 링크를 참고하세요.

    안드로이드는 코드 양이 많고 라이브러리 사용법이 꽤 복잡해서 여기서 다루지는 않습니다. 하지만 MQTT 의 동작구조를 숙지하고, Java 언어와 Android 플랫폼에 대한 이해가 있다면 직접 분석하실 수 있을겁니다.

    사물인터넷에 참가하는 센서나 PC, 모바일 폰 등… node에 해당하는 장치와 사용자가 많을수록, 서버에 전달된 메시지를 적재적소에 직접 분배하기는 어려워집니다. MQTT 를 사용하면 Topic 기반한 채널 관리로 이런 수고를 상당 부분 줄일 수 있습니다. 실제 페이스북이나 우아한 형제들에서도 MQTT 를 서비스에 활용하는 것으로 알려져 있습니다.

    당장 사용하지는 않더라도 MQTT 의 존재와 활용 가능성은 염두에 두세요. 구현하는 서비스의 규모가 점점 커질수록 MQTT 에 대한 향수가 점점 커질지도 모릅니다.

    참고자료

    주의. [사물 인터넷 네트워크와 서비스 구축 강좌] 시리즈 관련 문서들은 무단으로 내용의 일부 또는 전체를 게시하여서는 안됩니다. 계속 내용이 업데이트 되는 문서이며, 문서에 인용된 자료의 경우 원작자의 라이센스 문제가 있을 수 있습니다.


0 개 댓글

답장을 남겨주세요