일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Golang
- 책
- json
- go
- File
- write
- Python
- go언어
- 영화
- JavaScript
- Callback
- install
- window
- C
- windows
- API
- bitcoin
- 리뷰
- package
- range
- c++
- channel
- Sync
- GO 언어
- FOR
- Linux
- Close
- mutex
- http
- tcp
- Today
- Total
목록전체 글 (203)
Code Habit
c++ 11 이상부터는 std::function, std::bind 사용하여 callback 함수를 묶어 호출하는 패턴을 사용할 수 있다. class CallbackClass { public: void Callbackfunction(int x) { std::cout
범위 기반 for 문은 c++11 부터 도입된 문법으로 컨테이너의 모든 요소를 순회하기 위한 보다 간결하고 읽기 쉬운 방법을 제공한다. 이 구문은 Java의 enhanced for loop과 Python의 for-in loop과 비슷하다. Range-based for Loop은 컨테이너의 시작부터 끝까지 모든 요소를 순회하며 auto를 사용하여 각 요소에 대한 접근을 단순화 한다. std::map employee_map; employee_map[0] = "Kane"; employee_map[1] = "Jane" employee_map[2] = "Karr"; for (const auto& pair : employee_map) { auto& no = pair.first;// key 접근 auto& name ..
std::chrono 라이버리는 c++ 11부터 제공되는 라이브러리로 시간을 측정하고 관리하는 다양한 유형의 클래스와 함수를 제공하여 시간 간격, 지연 및 시간 단위 변환 등 시간을 관련 작업을 수행한다. 1. 시간 간격 구하기 #include #include int main() { // get start_time auto start_time = std::chrono::high_resolution_clock::now(); // wait 2 second std::this_thread::sleep_for(std::chrono::seconds(2)); // get end time auto end_time = std::chrono::high_resolution_clock::now(); // cal duratio..
스마트 포인터는 c++에서 메모리 관리를 자동화하고 안전하게 처리하기 위한 포인터 유형이다. 스마트 포인터는 메모리 누수와 댓글 포인터( 포인터가 가리키는 메모리가 해제된 후에도 그 주소를 참조하는 문제 ) 방지해준다. 1. std::shared_ptr - reference count를 사용하여 특정 메모리를 참조하는 포인터의 개수를 관리하며 count가 0이 되면 자동으로 메모리를 해제하여 메모리 누수를 방지한다. #include #include int main() { std::shared_ptr ptr1 = std::make_shared(42); // ref 1 std::shared_ptr ptr2 = ptr1; // ref 2 std::cout
Modern C++은 C++ 11 이 후의 버전을 가리키며 더 효율적으로 코드를 작성하고 안정성 및 최적화를 위해 등장했다. 1. auto 키워드 - auto 키워드를 이용하여 변수형을 자동으로 추론할 수 있다. auto n = 10; // int형으로 추론 auto str = "coding"; // char* 형식으로 추론 2. 범위 기반 루프 ( for 문 ) - 범위 기반 루프를 사용하여 컨테이너의 모든 요소를 간편하게 순회할 수 있다. std::map data; data[0] = "first"; data[1] = "second"; data[2] = "third"; for (auto& fit : data) { auto& idx = fit.first; auto& value = fit.second; /..

RTMP(Real Time Messaging Protocol)는 비디오, 오디오 혹은 기타 데이터를 인터넷을 통해 전송하는데 쓰이는 어도비사의 독점 통신 규약이다. 기본으로 1935번 포트를 사용하고 시도해서 실패하면 443 포트(RTMPS)나 80 포트 (RTMPT)로 재시도 한다. RTMP는 TCP 기반 프로토콜로 지속적인 연결 유지, 저지연, 더 나아가 원활한 스트리밍을 제공한다. RTMP는 보통 다음 과정을 통해 연결이 이루어진다. Handshake RTMP의 시작은 Handshake로 시작하는데 클라이언트는 서버로 C0, C1, C2를 보내고 서버는 클라이언트로 S0, S1, S2를 보내 서로의 정보를 확인하고 Handshake과정을 끝낸다. Chunking Handshake 과정 이후 데이터를..
vscode를 사용하면서 유용한 단축키를 정리해 두려한다. 작업 전/후 커서 이동 : Alt + 왼/오른 ( 방향키 ) 한 단어 씩 이동 : Ctrl + 왼/오른 ( 방향키 ) 주석 : Ctrl + K + C , Ctrl + / 주석 풀기 : Ctrl + K + U 자동 정렬 : Shift + Alt + F / 드래그 후 Ctrl + K + F 해당 함수 정의문으로 이동 : F12 / Ctrl + Click 문단 중간에 커서 내리기 : Ctrl + Enter 문단 중간에 문장 내리기 : Ctrl + Shift + Enter 찾기 : Ctrl + F 바꾸기 : Ctrl + H 라인 찾기 : Ctrl + G 한줄 삭제 : Shift + Del / Ctrl + X 한줄 이동 : Alt + 위/아래 ( 방향키 ..
Linux환경에서 개발한 프로그램이 크래시 났을 때 core 파일을 생성하여 gdb로 분석이 가능하다. 1. core 파일 생성 'ulimit -a' 명령으로 core 파일 생성 여부를 확인할 수 있다. 'core file size'가 0으로 설정되어 있다면 core 파일이 생성되지 않는다. 'ulimit -c unlimited' 명령으로 코어 파일을 생성할 수 있다. ( 'unlimited -c 0'으로 해제할 수도 있다. ) 2. core 파일 분석 프로그램이 죽으면 실행파일이 있는 경로에 core.xxxx 라는 파일이 생성될 것이다. 이를 gdb를 이용하여 디버깅할 수 있는데 다음 명령어들을 사용하면 된다. - file 'core.xxxx' : core 파일을 생성한 프로그램 정보를 출력한다. - ..