DSL with Jinja2

본 글에선 C++의 구조체를 정의하는 DSL(Domain Specific Language)을 구현하기 위해 Jinja2를 사용하는 예를 설명한다. 이 예의 동작 방식은 Google의 Protocol Buf의 message 생성 방식이나 Osquery의 Table 생성방식을 간접적으로 이해 할...

Linux Kernel Crypto API on User Space

Linux Kernel Crypto API The kernel crypto API offers a rich set of cryptographic ciphers as well as other data transformation mechanisms and methods to invoke these. Crypto API는 리눅스...

The sqlite virtual table with csv vtab

Sqlite Virtual Table A virtual table is an object that presents an SQL table interface but which is not stored in the database file, at least not directly. The Virtual...

The basis of RocksDB

RocksDB Rocksdb is an embeddable persistent key-value store for fast storage. High Performance (Write performance) log-structured storage engines (Leveldb, Rocksdb, and Cassandra) page-oriented storage engines (PostgreSQL, MySQL, and sqlite) Btree...

Factory Method Pattern with Modern c++

본 글은 팩토리 메소드 패턴의 내용를 정리하고, 템플릿 메소드 패턴을 같이 활용함으로써 복합 패턴을 정리한다. 이를 통해 객체 지향 설계의 OCP 원칙과 DIP 원칙을 준수 할 수 있다. 또한, C++의...