전체 글 116

sscanf를 활용한 쿼리 파라미터 파싱

샘플 코드string streamName = "ce2b87e233cb_wlHByc?token=abcd&expiration=1234";char strStreamName[64] = {0};char strToken[128] = {0};char strExpiration[64] = {0}; sscanf(STR(streamName), "%63[^?]?token=%127[^&]&expiration=%63[^&]", strStreamName, strToken, strExpiration); 설명%63[^?] : ^가 나오기 전까지의 문자열 (최대 64자)%127[^&] : &가 나오기 전까지의 문자열 (최대 128자)%63[^&] : &가 나오기 전까지의 문자열 (최대 63자) 주의- token의 길이가 127자를 초과..

카테고리 없음 2017.07.06

[AWS] CloudFront Signed URL로만 데이터 접근 허용하기

AWS CloudFront Signed URL로만 데이터 접근을 허용하려면 아래 두가지를 모두 설정해줘야 합니다. CloudFront만 S3 Bucket Read 가능하도록 정책 변경CloudFront > Origins > Edit - Restrict Bucket Access : Yes - Grant Read Permissions on Bucket : Yes, Update Bucket Policy Signed URL만 CloudFront 접근 가능하도록 변경CloudFront > Behaviors > Edit - Restrict Viewer Access : Yes

카테고리 없음 2017.06.09

[Python] sqlalchemy "Mysql Gone Away" 오류

증상sqlalchemy로 DB 세션을 열었더라도 mysql의 wait_timeout동안 요청이 없으면 mysql에서 연결을 끊어버립니다. 따라서 이후의 요청은 Mysql Gone Away 오류가 발생합니다. 대책mysql의 wait_timeout보다 작은 값으로 pool_cycle을 지정하면 됩니다. 특정 시간 간격으로 재연결하는 옵션입니다. engine = create_engine("mysql://%s:%s@%s:%s/mydb" % (db_user, db_pass, db_host, db_port), pool_recycle=3600, echo=False)

Python 2017.05.22

MPEG TS Packet Structure

H264 Frame → PES Packet → TS Packets 변환 1. H264 Frame(ES)에 PES Header를 붙이면 PES 패킷이 된다. - PES Header에는 PTS, DTS 정보가 들어있다. 2. PES 패킷을 쪼개서 TS Header를 붙이면 TS 패킷이 된다. - PES 패킷은 TS 패킷 크기(188 Bytes)에 맞춰 쪼개진다. - 마지막 PES 패킷은 188 Bytes를 채우지 못하므로 Adaption Field를 0xFF로 채운다. TS Packet (188 Bytes)*MPEG-2 TS Packet Analyzer 캡쳐 1. TS Header0x47 : sync_byte0x40 : 0 : transport_error_indicator 1 : payload_unit_st..

카테고리 없음 2017.05.11

visual studio에서 libcurl 빌드하고 사용하기

libcurl 빌드하기 (dll)1. curl 다운로드 후 압축 풀기https://curl.haxx.se/download/curl-7.53.1.tar.gz 2. 미리 컴파일된 openssl 다운로드 후 압축풀기 3.openssl\include\openssl 디렉토리를 curl-7.53.1\include에 복사 4. curl visual studio 솔루션 실행curl-7.53.1\projects\Windows\VC10\curl-all.sln 5. 구성 및 플랫폼 설정LIB Release - LIB OpenSSL / Win32 6. 빌드 libcurl 사용하기1. libcurl을 사용할 visual studio 프로젝트에 include, lib 디렉토리 생성 2. include에 curl-7.53.1\in..

기타 2017.04.13

[Node.js] HTTPS 서버 실행 시 XP IE8에서 접속 불가능한 경우

증상Node.js HTTPS 서버를 운영하고 있는데, Windows XP IE8 브라우저에서 접속이 안된다고 한다. 원인https 서버 옵션의 ciphers 항목을 지정하지 않을 경우, Windows XP IE8과 호환되지 않음. 대책1. ssl-config 모듈 설치npm install ssl-config --save 2. ssl-config 모듈을 intermediate 모드로 로드 var sslConfig = require('ssl-config')('intermediate'); 3. https 서버 옵션의 cipher 설정var options = { key: fs.readFileSync(path.resolve(__dirname, 'ssl/key.pem')), cert: fs.readFileSync(..

Node.js 2017.04.12

[GStreamer] Push, Pull 방식

이 글은 GStreamer 튜토리얼 문서 Different scheduling modes를 요약한 글입니다. 엘리먼트의 Pad는 Push 방식과 Pull 방식의 스케쥴링 모드를 지원합니다. 대표적으로 아래와 같은 use-case가 존재합니다. 1. 모든 엘리먼트의 패드들이 push 모드인 경우① 첫번째 엘리먼트는 다음 엘리먼트의 sinkpad에게 버퍼를 push하는 작업을 반복합니다.② 두번째 엘리먼트는 sinkpad에 등록된 _chain() 함수를 통해 전달받은 버퍼를 처리합니다.③ _chain() 함수는 gst_pad_push() 함수를 통해 다음 엘리먼트의 sinkpad에게 버퍼를 push합니다. 2. sinkpad는 pull 모드, srcpad는 push 모드인 경우① sinkpad가 pull 모..

GStreamer 2017.04.05