Tuesday, January 14, 2020

eMTC vs. NB-IoT

3GPP has already introduced a suite of two complementary narrowband LTE IoT technologies in Release 13.
eMTC: enhanced machine-type communication
NB-IoT: narrowband Internet of Things

LTE IoT is starting to connect the massive IoT today, thanks to eMTC and NB-IoT - Qualcomm
Choosing Between eMTC and NB-IoT
CAT-M1 vs NB-IoT - examining the real differences

Monday, January 6, 2020

Design Patterns

Refactoring Guru: Design Patterns
 - design patterns: C#, Java, php, python, Ruby, Swift, and TypeScript
Source Making: Design Patterns
 - design patterns, anti-patterns, refactoring, and UML

Monday, December 30, 2019

C++ - Reference variables

C++ - Reference variables
in the Thinking in C++ (p. 151)
"Pointers work roughly the same in C and in C++, but C++ adds an additional way to pass an address into a function. This is pass-by-reference and it exists in several other programming languages so it was not a C++ invention."

int a = 0;
int &ref = a;

https://www.learncpp.com/cpp-tutorial/611-references/

Pointer vs. Reference
1. Pointers are a superset, references are a subset.
2. References must be initialized when created.
3. References can not be reassigned.

Sunday, December 29, 2019

#pragma once vs. #ifndef

#pragma once is NOT standard
But #ifndef is standard
#ifndef XXX_YYYY
#define XXX_YYYY


#endif // XXX_YYYY

In the compile-time #pragma once is faster.

https://stackoverflow.com/questions/1143936/pragma-once-vs-include-guards
https://beesbuzz.biz/code/1473-pragma-once-vs-ifndef-define

Thursday, December 12, 2019

[VS Code] enable define in C & C++

Setting Visual Studio Code

c_cpp_properties.json
ctrl+shift+p
>C/C++:Edit Configuration (JSON)

Make c_cpp_properties.json in .vscode folder, and
 - Updated c_cpp_properties.json syntax

"configurations": [
    {
        "defines": [
            "WIN32",
        ],
        // ...
    }
],


Saturday, October 26, 2019

How can I find what instruction set extension is supported in my Intel Processor?

https://www.intel.com/content/www/us/en/support/articles/000005779/processors.html

1. Go to https://ark.intel.com/content/www/us/en/ark.html site
2. Processors
3. Select Intel xxx Processor type
4. Select Product Name: Intel® Core™ i7-5500U Processor
5. Find "Advanced Technology"
You can find the supported SIMD instructions
 Intel i7-5500U can support: Intel® SSE4.1, Intel® SSE4.2, Intel® AVX2

And 
How to Identify My Intel® Processor
And gcc x86 options
https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html