일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tcp
- Sync
- Python
- JavaScript
- window
- go
- 영화
- Callback
- API
- 리뷰
- File
- Linux
- windows
- bitcoin
- package
- mutex
- 책
- Golang
- go언어
- write
- channel
- range
- Close
- GO 언어
- http
- FOR
- C
- json
- c++
- install
- Today
- Total
목록전체 글 (203)
Code Habit
리눅스 서버에서 네트워크를 점검할 때 많이 사용하는 iperf3와 네트워크 트래픽 측정 관련 shell을 정리해보려 한다. 간단한 툴이지만 실제 회사업무에서 서버 네트워크 상태를 체크하는데 유용하게 사용했다. 1. CentOS에 iperf3 설치하기sudo dnf install iperf3 2. iperf3 사용하기 2.1 서버모드 실행iperf3 -s 2.2 클라이언트 모드로 접속하기iperf3 -c server_ip 2.3 결과 ( 클라이언트 모드 ) server 역할을 수행할 서버에서 서버모드로 iperf3를 실행 후 타 서버에서 클라이언트 모드로 접속하면 위와 같이 초당 네트워크 전송량을 측정해준다. 전송량을 따로 명시하지 않으면 NIC카드가 허용하는 최대치까지 전송해 준다. 초당 전송량..
YAML 파일은 간결하고 직관적인 데이터 구조를 표현하는 형식으로 구성 파일에 주로 사용된다. yaml-cpp는 c++언어에서 yaml파일을 다룰 수 있는 강력한 라이브러리로, 다양한 yaml 기능을 지원하며 설치가 쉽고 사용이 간편하다. 이 글에서는 yaml-cpp의 기본적인 사용법을 단계별로 알아보겠다.1. yaml-cpp 설치하기1.1 git code 다운, 빌드 & 설치git clone https://github.com/jbeder/yaml-cpp.gitcd yaml-cppmkdir buildcd buildcmake ..makesudo make install 1.2 CMakeLists.txt 파일에 yaml-cpp 라이브러리 추가find_package(yaml-cpp REQUIRED)target_..
회사 작업 중 서버를 Active/Pause 상태로 변환하는데 http 통신을 할 필요가 있어 파이썬으로 간단하게 구현해 보았다. 필요요구 사항과 구현된 프로그램 특징은 다음과 같다. - 프레임 크기에 따른 체크박스 자동 배치 ( 줄 바꿈 처리 ) - 성공/실패 여부 Text로 출력하면서 자동 스크롤 되는 debug 창 필요. - 파이썬 기본 내장 라이브러리인 tkinter 사용하여 간단한 ui 구현 ( 체크박스, push 버튼, Debug Text 창 ) - 파이썬 requests 라이브러리 사용하여 http request 구현 import tkinter as tkimport requestsfrom dataclasses import dataclassfrom tkinter import scrolledt..
싱글턴 패턴은 소프트웨어 디자인 패턴 중 하나로 프로그램 내에 인스턴스가 오직 하나만 존재하도록 보장하는 패턴이다. 이 패턴은 전역 변수를 사용하지 않고 객체의 단일 인스턴스에 대한 전역적인 접근을 제공한다. - example #ifndef _SINGLE_TON_TMPL_ #define _SINGLE_TON_TMPL_ #include template class Singleton_tmpl : public T { public: Singleton_tmpl() {} ~Singleton_tmpl() {} static Singleton_tmpl *GetInstance() { if (Singleton_tmpl::m_pInstance == nullptr) { Singleton_tmpl::m_pInstance = new..
epoll은 리눅스에서 고성능 네트워크 프로그래밍을 위해 사용되는 I/O 이벤트 알림 모델이다. 대규모 파일 디스크럽터를 효율적으로 관리하며 이는 서버가 많은 수의 클라이언트와 동시에 통신해야 하는 고성능 네트워크 애플리케이션에 매우 유용하다. - epoll_create int epoll_create(int size); size만큼의 입출력 이벤트를 저장할 공간을 만든다. 그러나 리눅스 2.6.8 부터는 커널이 필요한 데이터의 크기를 동적으로 조정하기 때문에 0보다 큰 값만 입력하면 된다. - epoll_ctl int epoll_ctl(int epfd, int op, int fd, struct epoll_events *event); epoll에 fd를 등록/수정/삭제 하는 함수로 epoll에서 관심있는 ..
Nats는 오픈소스 메시징 시스템을 지원하는 서비스의 한 종류로 다양한 응용프로그램 간의 효율적인 통신을 지원한다. 기본적으로 publisher와 subscriber로 구성되어 있으며 다양한 프로그래밍 언어에 대한 클라이언트 라이브러리를 제공하므로 다양한 언어로 작성된 애플리케이션 간의 통신을 할 수 있다. c++로 작성된 client 예제이다. #include #include void messageHandler(natsConnection* conn, natsSubscription* sub, natsMsg* msg, void* closure) { // get data const char* data = natsMsg_GetData(msg); int dataLen = natsMsg_GetDataLength(..
dynamic_pointer_cast, static_pointer_cast 는 c++에서 스마트 포인터를 다룰때 상/하향 캐스팅을 위해 사용된다. 여기서 상/하향 캐스팅은 자식 클래스에서 부모 클래스로 변환 ( 상향 캐스팅 ), 부모 클래스에서 자식 클래스로 변환 ( 하향 캐스팅 )을 의미한다. - dynamic_pointer_cast dynamic_pointer_cast는 런타임에 타입의 안정성을 검사하는 동적 캐스팅을 수행한다. 이는 주로 하향 캐스팅 ( 부모 -> 자식 )에 사용된다. - static_pointer_cast static_pointer_cast는 컴파일 타임에 수행하는 정적 캐스팅을 수행한다. 이는 상향 캐스팅( 자식 -> 부모 ), 하향 캐스팅 ( 부모 -> 자식 )에서 모두 쓰일 ..
여러 쓰레드에서 공유되는 데이터에 대해 동시에 접근하는 것을 방지하기 위해 std::mutex를 사용할 수 있다. #include #include int g_shared_data = 0; std::mutex g_mtx; void IncrementSharedData() { // 스코프 기반 락 관리 std::lock_guard lock(g_mtx); g_shared_data++; } int main() { std::vector threads; // 10개의 쓰레드 생성 및 실행 for(int i=0; i < 0; i++) { threads.emplace_back(IncrementSharedData); } // 모든 쓰레드가 종료될때까지 기다림 for(auto& thr : threads) { thr.join..