일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- go
- install
- Linux
- 영화
- Golang
- Sync
- json
- mutex
- write
- JavaScript
- window
- package
- c++
- File
- http
- bitcoin
- go언어
- GO 언어
- FOR
- C
- 리뷰
- 책
- range
- Python
- tcp
- Close
- channel
- windows
- API
- Callback
- Today
- Total
목록전체 글 (203)
Code Habit
최근 직무가 Client 개발에서 Server로 변경 되었다. Codec 관련 업무를 맏고 있는데 Metadata나 헤더 파싱하는데 bit 단위로 접근해야 하는 경우가 많더라.. 하여 간단하게 Bit값 읽어오는 함수 두개를 만들어 보았다. - 1Byte의 데이터를 입력 받아 index 번째 있는 bit 값을 가져오는 함수이다 ( 0 or 1 ) UINT8 GetBit(UINT8 nData, UINT nIndex) { if (8 8) { return 0; } int nOut = 0; for (int i = nIndex; i < nEnd; i++) { nOut = (nOut
cmake는 Closs Platform Make의 약자로 여러 플랫폼에서 사용할 수 있는 오픈소스 빌드 툴이다. 설치 > cmake를 설치하기 위해서는 아래 패키지가 우선적으로 설치되어 있어야 한다. make, gcc, gcc-c++, openssl, openssl-devel > cmake 설치를 하기 위해서는 소스를 먼저 받아야 하는데 아래 사이트에서 원하는 버전을 선택해 받으면 된다. 'https://cmake.org/files' $ wget https://cmake.org/files/v3.15/cmake-3.15.2.tar.gz $ tar -xvfz cmake-3.15.2.tar.gz $ cd cmake-3.15.2 > 빌드 및 설치를 위해 아래 명령어를 입력한다. $ ./bootstrap $ ma..
압축(인코딩)된 aac데이터를 fdk-aac 라이브러리를 사용하여 decode 하는 예제이다. 결과물은 pcm 데이터로 저장되며 audacity uitl 등을 통해 decode된 음원을 재생해 볼 수 있다. - FDKAACDecoder.h #include "aacdecoder_lib.h" class CFDKAACDecoder { public: CFDKAACDecoder(); ~CFDKAACDecoder(); boolInitialize(); voidDestroy(); intDecode(BYTE* pBuffer, UINT nBufSize); private: HANDLE_AACDECODER m_hDecoder; BOOL m_bInitialized; CStreamInfo m_stream_info; }; - FD..
WebRTC는 'web real-time communication'을 뜻하며 따로 서버를 구성할 필요 없이 peer-to-peer방식으로 peer간 media 데이터를 교환할 수 있게 해준다. 데이터를 교환하기 전 서로 연결을 위해 '시그널링' 이라는 과정이 필요한데 이때는 서버가 필요하긴 하나 일단 연결이 이루어지고 나면 peer간 통신에 서버는 더이상 관여하지 않는다. P2P(peer-to-peer)연결은 중개 서버를 거치지 않기 때문에 빠른 속도가 보장되며, HTTPS가 강제되기 때문에 보안이 보장된다. WebRTC를 이해하는데 필요한 몇몇 용어들을 간단히 정리해보겠다. - ICE Interactive Connectivity Establishment ( ICE )은 웹브라우저 간 서로 연결을 도와주..
localtunnel은 내부에서만 접근가능했던 서버를 외부와 공유할 수 있게 해준다. 공유하고 싶은 포트번호를 지정해 주면 임시 URL이 발급되며 이를 통해 외부에서 접근 가능하다. - localtunnel 설치 npm i -g localtunnel -localtunnel 사용 : 포트 공유하기 lt --port 3000 3000번 포트로 서버를 미리 열어두고 이를 'lt' 명령어를 통해 공유하였다. 실행하면 아래와 같이 임시 URL을 발급 받는다. 위 주소로 접속하면 아래와 같은 안내 화면이 먼저 나오고 'Click to Continue'를 클릭하면 서버에 접속할 수 있다.
스트림에서 트랙이란 스트림을 구성하는 미디어 요소 하나하나를 구분하는 단위이다. 비디오나 오디오, 자막 같은 요소가 하나의 트랙이고, 코드를 통해 각각의 트랙에 접근하여 제어할 수 있다. - Track 접근 예제 const video = document.getElementById("myVideo"); async function getMedia() { try { const myStream = await navigator.mediaDevices.getUserMedia({ audio:true, video:true }); console.log(myStream.getTracks()); console.log(myStream.getVideoTracks()); console.log(myStream.getAudioTra..
MediaDevices 인터페이스는 카메라, 마이크, 공유 화면 등 현재 연결된 미디어 입력 장치로의 접근 방법을 제공하는 인터페이스이다. 다르게 말하자면, 미디어 데이터를 제공하는 모든 하드웨어로 접근할 수 있는 방법이다. MediaDevices 인터페이스를 구현하는 navigator.mediaDevices 객체를 통해 자바스크립트로 액세스할 수 있다. - navigator.mediaDevices 예제 const video = document.getElementById("myVideo"); async function getMedia() { try { const myStream = await navigator.mediaDevices.getUserMedia({ audio:true, video:true })..
JSON은 JavaScript Object Notation의 약어로 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 웹 어플리케이션에서 데이터를 전송할 때 일반적으로 사용하는데 최근에는 다른 플랫폼에서도 공용화된 문서 포맷으로 많이 사용한다. JSON 객체는 JavaScript에 내장되어 있어 문법 내 어디서든 사용 가능하며 데이터는 key와 value가 쌍으로 이루어져 있다. JSON 객체와 문자열(JSON형식)간의 변환이 가능하다. - JSON -> String const str = '{ \ "name" : "이진성", \ "nick" : "코드베어", \ "age" : "19", \ "location" : "suwon" \ }'; const json = JSON.parse..