.NET 오프 소스 - stateless 라이브러리

유한 상태 머신을 쉽게 구현해 주는 라이브러리. 닷넷 코어 지원. Export to DOT graph 지원으로 상태 머신 구조를 이미지로 출력한다. async/await 지원. 공식 var phoneCall = new StateMachine<State, Trigger>(State.OffHook); phoneCall.Configure(State.OffHook) .Permit(Trigger.CallDialed, State.Ringing); phoneCall.Configure(State.Ringing) .Permit(Trigger.HungUp, State.OffHook) .Permit(Trigger.CallConnected, State.Connected); phoneCall.Configure(State.Connected) .OnEntry(() =>...
더 읽기

C++ - Redis 사용 방법 정리 GitHub 저장소

GitHub에 C++에서 Redis 클라이언트 라이브러리에 대해서 간단하게 정리하였다. jacking75/examples_cpp_redis 만약 Redis를 key-value 정도로 간단하게 사용한다면 RedisCpp-hiredis 와 redis_client 를 추천한다. hiredis 라이브러리만 있다면 위 라이브러리는 헤더파일 1개만으로 redis를 사용할 수 있어서 준비가 간단하다 RedisCpp-hiredis 보다는 redis_client가 기능이 더 많다. 둘...
더 읽기

C++ - 4개의 auto, 4개의 C++ 규격

원문 2020년에 출시될 예정인 「C++20」에서는 아래와 같은 함수 템플릿을 쓸 수 있다. cpp20.cpp template <auto N> auto func(auto x) { auto r = N + x; return r; } // 호출 예 assert( func<1>(0.5) == 1.5 ); 이 글에서는 C++...
더 읽기

C++ - Boost.Asio에서 Boost.Chrono 베이스의 타이머 사용

Boost 1.49.0 버전에서 Boost.Chrono 베이스의 타이머가 도입 되었다. basic_waitable_timer : 클락 전환용 system_timer : system_clock용 타이머 steady_timer : steady_clock용 타이머 high_resolution_timer : high_resolution_clock용 타이머 예제 코드 #include <iostream> #include <boost/asio.hpp> #include <boost/asio/steady_timer.hpp> namespace asio = boost::asio; namespace chrono = boost::chrono;...
더 읽기

C++17 - shared_ptr의 참조 카운트와 data reace

C++17 표준 라이브러리에서는 스마트 포인터인 std::shared_ptr의 unique 멤버 함수는 비추천이 되었다. 상위 호환이 되는 use_count 멤버 함수는 잔존하지만 스레드 간 동기에는 관여하지 않는다는 요건이 명확화 되어서 멀티스레드 실행에서는 반환 값은 근사(approximate)가 된다는 취지의 Note가 추가된다. shared_ptr 참조 카운트를 이용한 스레드...
더 읽기