Archives: software programming

c++ pass default shared_ptr reference as nullptr No ratings yet.

First of all, shared_ptr can be a nullptr.  Nothing wrong passing a null shared pointer. In fact, a null shared pointer is an actual Null Object, which means that it’s designed exactly for those kinds of uses.   but if we want to pass the share_ptr as default nullptr reference, we need to put a const • Read More »


srtp and h.235.6 secure rtp No ratings yet.

SRTP RFCs and h.235 is Not an easy read. Here is my very high level beriefing: AES Encryption (1) AES is the foundation for both srtp and h.235.6 secured rtp AES is symmetric encryption,  it takes those two as input key + IV:  128/192/256-bits length key , ( + optional Initialized vector or counter) src input:    • Read More »


rabbitMQ exchanges, queue , routing keys, bindings No ratings yet.

RabiitMQ implement the  AMQP protocol. written in Erlang. it is a quite useful message broker or message middleware. It works like this:   sender or receiver can create different type of Exchanges. Sender of course will send message to exchange. The receiver will create a queue, and binding to the exchange. The Exchange will route • Read More »


cmake how to build debug version No ratings yet.

Some of projects use cmake,  usually we can build like: mkdir build && cd build cmake .. camke –build . it usually a release version.   we as developer need debug version, some doc said cmake –build [–config Release] . that seems indicate if want a debug version we do: make –build –config Debug . but • Read More »


quick sort No ratings yet.

Quick sort High level code are quite simple ( divide/conque, recursively partition the array): void quickSort(int arr[], int low, int high) {     if (low < high)     {         /* pi is partitioning index, arr[p] is now            at right place */         int pi = partition(arr, low, high);         // Separately sort elements before         // partition and after partition • Read More »


Heap and Heapsort No ratings yet.

Heap/Heapsort is not difficult to understand when you reading online articles/watching online videos, but without using it everyday, it is quite easy to forget the evil details. Here are some notes to help memorizing this. (1) Min/Max heap, is a  a Complete Binary Tree with its parent nodes smaller or greater than its two children. a A • Read More »


Go Language vs C/C++ 3/5 (2)

I have spent several days on Go. It is a little more similar to C, not C++. As it has no class concept, only structure.  Also it has pointer ( but no pointer arithmetic), interface. Also it has slice, map, go routine( for multi-thread) which make it unique. Overall it is could be a good language. Here • Read More »


What’s the difference between BNF, EBNF, ABNF, ASN.1 ? 1/5 (1)

Abstract Syntax Notation One (ASN.1) is mainly for binary protocol, it is a standard and notation that describes rules and structures for representing, encoding, transmitting, and decoding data intelecommunications and computer networking.. A good tools like asn1c can convert ASN.1 to C structure, encoder/decoder. BNF, EBNF, ABNF are for text format parsing. In terms of power, • Read More »