전체 글 51

안드로이드 WebRtc 시작하기 -2

이번에는 PeerConnection의 작동 방식과 Android에서의 구현 방법에 대해 자세히 살펴 보겠습니다. 첫째, WebRTC는 피어 - 투 - 피어 연결 (또는 단순히 P2P)을 기반으로합니다. 그렇다면 P2P는 무엇일까요?위키 피 디아에 P2P에 대해 설명되어 있습니다. 피어 - 투 - 피어 (P2P) 컴퓨팅 또는 네트워킹은 피어간에 작업 또는 작업 부하를 분할하는 분산 응용 프로그램 아키텍처입니다. 피어는 동등하게 권한이 부여되며 응용 프로그램에서 동일한 권한을 가진 참가자입니다. 이들은 피어 투 피어 노드 네트워크를 형성한다고합니다. 따라서 WebRTC를 사용하면 외부 서버 컴퓨터없이 오디오 / 비디오 스트림을 다른 피어와 직접 공유 할 수 있습니다. 인프라에서 대량의 오디오 / 비디오 데이..

Android 2018.12.25

안드로이드 WebRTC 시작하기

이 글을 작성하게 된 주된 이유는 적절한 가이드가 없기 때문에 작성하게 되었다. 선행조건 1. 컴파일 된 WebRTC 원시 코드가 필요. 여기에서 참고.2. 안드로이드 스튜디오. Update: arr 파일을 여기에서 다운 받을수 있습니다. 첫번째, WebRTC의존성을 build.gradle파일에 추가 이제 카메라에서 비디오를 가져와서 화면에 표시하는 방법을 알아보겠습니다. (WebRTC apis 사용). 비디오 스트림을 카메라로부터 가져와 뷰에 표시하는 단계는 아래와 같습니다. PeerConnectionFactory를 생성하고 초기화장치의 카메라를 사용하는 VideoCapturer 인스턴스 생성Captuer로 부터 VideoSource를 생성source로 부터 ViedoTrack 생성SurfaceView..

Android 2018.12.24

Netty 특징과 아키텍처

Netty네티는 유지 관리가 용이한 고성능 프로토콜 서버와 클라이언트를 신속하게 개발하기 위한 비동기식 이벤트 기반 네트워크 애플리케이션 프레임워크이다. 자바의 네트워킹최초의 자바 API(java.net)은 블로킹 함수(accept())만 지원했다. 따라서 다수의 클라이언트를 관리하려면 새로운 클라이언트 Socket마다 새로운 Thread를 할당해야 한다.여러 스레드가 입,출력을 기다리며 무한정 대기 상태가 되는 경우 리소스 낭비가 될 수 있다. 또한 각 스레드가 스택 메모리를 할당해야하는데 스택 메모리를 차지하며, JVM의 컨텍스트 전환에 따른 오버헤드 문제가 생길 수 있다.10만명 이상의 동시 연결을 지원해야할 때는 이런 방식으로는 불가능 하다. Java NIO블로킹 시스템 호출 방식 외에 네이티브 ..

Language/Java 2018.12.16

Netty Codec Framework

코덱이란?모든 어플리케이션은 네트워크 상에 원시 바이트를 주고 받는다. 바이트 형태의 데이터를 대상 어플리케이션에 맞는 데이터 포맷으로 분석하고 변환하는 것이 필요하다. 이러한 데이터 변환은 인코더와 디코더로 구성된 코덱에 의해 처리된다.일반적으로 동영상 압축 알고리즘을 코덱이라고 부른다. 예를 들면 MPEG 알고리즘으로 압축된 동영상을 재생한다면, 원본 동영상을 MPEG 알고리즘으로 압축하고 시청자는 다시 MPEG 디코더로 압축 해제한 뒤 시청을 할 것 이다.디코더(Decoder)디코더는 네트워크 스트림을 프로그램의 메세지 포맷으로 변환한다. 즉 인바운드 데이터를 처리한다. 디코더는 인바운드 데이터를 다른 포맷으로 변환하는 일을 하므로 ChannelInboundHandler를 상속받는다. Netty의 ..

Language/Java 2018.12.15

TCP/IP 소켓 통신이란?

소켓(Socket)의 정의 소켓(Socket)은 1982년 BSD(Berkeley Software Distribution) UNIX 4.1에서 처음 소개되었으며 현재 널리 사용되는 것은 1986년의 BSD UNIX 4.3에서 개정된 것입니다. 소켓은 소프트웨어로 작성된 추상적인 개념의 통신 접속점이라고 할 수 있는데 네트웍 응용 프로그램은 소켓을 통하여 통신망으로 데이터를 송수신하게 된다. 소켓은 응용 프로그램에서 TCP/IP를 이용하는 창구 역할을 하며 응용 프로그램과 소켓 사이의 인터페이스 역할을 하고 있습니다. 두 프로그램이 네트워크를 통해 서로 통신을 수행할 수 있도록 양쪽에 생성되는 링크의 단자입니다.두 소켓이 연결되면 서로 다른 프로세스끼리 데이터를 전달할 수 있습니다.결국 소켓이 구현됨으로써..

Language/Java 2018.12.15

프레임워크란?

1. 프레임워크"소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것" 프레임워크는 구체적이고 확장가능한 기반코드를 가지고 애플리케이션의 틀과 구조를 결정할 뿐만 아니라 개발자의 코드를 제어한다. 구조에 대한 일종의 가이드라인이라고 생각하자. (이미 규칙이 정해진) 확장 가능한 기반 코드 : 설계의 기반이 되는 부분을 기술 라이브러리 : 개발자가 코드를 확장하는 데 필요한 라이브러리 를 통합제공하는 형태가 프레임워크라고 할 수 있다. 2. 프레임워크 vs 라이브러리쉽게말해 프레임워크는 내가 끌려가는 것이고 라이브러리는 내가 부르는 것이다. 라이브러리는 내가 필요할 때 가져다 쓰는 대상일 뿐이지만 프레임워크는 라이브러리에 일종의 뼈대처럼 '설..

용어사전 2018.12.15

MySQL 컬럼명 변경, 컬럼 타입 변경, 컬럼 추가, 컬럼 삭제

계속 찾아보게 되서 정리해 봅니다. 컬럼명 변경 ALTER TABLE 테이블명 CHANGE 기존컬럼명 변경할컬럼명 컬럼타입; mysql> ALTER TABLE user CHANGE socre score int;컬럼 순서변경 ALTER TABLE 테이블명 MODIFY 순서변경할컬럼명 컬럼타입 AFTER 앞에오는컬럼명; ALTER TABLE usr MODIFY nickname varchar(64) AFTER user_id;컬럼 디폴트값 변경 ALTER TABLE 테이블명 ALTER COLUMN 변경할컬럼명 SET DEFAULT 디폴트값; ALTER TABLE usr ALTER COLUMN gold SET DEFAULT 100; 컬럼 타입변경 ALTER TABLE 테이블명 MODIFY 컬럼명 병경할컬럼타입; ..

Web/Database 2018.12.14

HashMap과 HashTable 차이

1) 개요 자바에서 제공하는 HashMap과 Hashtable은 Map인터페이스를 상속받아 구현되어 데이터를 키와 값으로 관리하는 자료구조이다. 큰 특징으로는 키(Key)가 데이터를 추출할 때 구분자로 활용하는 방식을 취하는데 이는 리스트 인터페이스와 같은 자료구조보다 탐색에 있어 더 높은 효율을 기대할 수 있다. 2) 차이점 2.1 - 동기화 이 둘의 차이점으로 동기화(Synchronization)를 들 수 있다. HashMap의 경우 동기화를 지원하지 않는다.반면 다중 스레드 환경에서 Hashtable은 동기화를 지원하기 때문에 실행 환경에 따라 구분하여 사용하면 된다. 하지만 한 자바 관련 서적에 의하면 Vector의 상위호환(?)개념인 ArrayList의 사용을 권장하듯 새로운 버전인 HashMa..

Language/Java 2018.12.14