CreateProcess

定义消息

WM_USER through 0x7FFF

#define WM_MSG_UI_SHOW (WM_USER+5)

添加消息处理函数

类视图->添加函数
返回类型:LRESULT
参数:WPARAM wParam,LPARAM lParam
函数名:OnMyMessage
然后在OnMyMessage 成员函数声明前加上 afx_msg

添加消息映射

*.h
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

*.cpp
LRESULT CComBoxDemoDlg::OnShowMessage(WPARAM wParam, LPARAM lParam)
{
// Put in shared_ptr so it is automatically destroyed.
std::unique_ptr<wstring> ptr(reinterpret_cast<wstring*>(wParam));

showText(IDC_RICHEDIT21, ptr->c_str(), COLOR_GREEN);

return 0;
}

BEGIN_MESSAGE_MAP(Cmfc01aDlg, CDialog)
ON_MESSAGE(WM_MSG_UI_SHOW,OnMyMessage) //这里添加消息映射
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

批量响应消息

#define WM_DEMO_LOG_CLEAR		(WM_USER + 1)	//清空日志输出
#define WM_DEMO_ADD_DEVICE (WM_USER + 2) //添加设备
#define WM_DEMO_DEL_DEVICE (WM_USER + 3) //删除设备

BEGIN_MESSAGE_MAP(CZLNetSDKDemoDlg, CDialogEx)
...
ON_COMMAND_RANGE(WM_DEMO_LOG_CLEAR, WM_DEMO_DEL_DEVICE, &DemoDlg::OnTreeMessage)
...
END_MESSAGE_MAP()

void CZLNetSDKDemoDlg::OnTreeMessage(UINT nID)
{
//设备树右键菜单消息处理
switch (nID)
{
case WM_DEMO_LOG_CLEAR:
break;
case WM_DEMO_ADD_DEVICE:
break;
case WM_DEMO_DEL_DEVICE:
break;
}
}

字符串消息

// Put in shared_ptr so it is automatically destroyed.
shared_ptr<string> msg = reinterpret_cast<string*>(lParam);

发送消息

wstring* pwstr = new wstring(utils::s2w(strData));

pwnd->PostMessageW(WM_MSG_UI_SHOW, (WPARAM)pwstr, (LPARAM)i);

定义消息

WM_USER through 0x7FFF

#define WM_MSG_UI_SHOW (WM_USER+5)

添加消息处理函数

类视图->添加函数
返回类型:LRESULT
参数:WPARAM wParam,LPARAM lParam
函数名:OnMyMessage
然后在OnMyMessage 成员函数声明前加上 afx_msg

添加消息映射

*.h
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

*.cpp
LRESULT CComBoxDemoDlg::OnShowMessage(WPARAM wParam, LPARAM lParam)
{
// Put in shared_ptr so it is automatically destroyed.
std::unique_ptr<wstring> ptr(reinterpret_cast<wstring*>(wParam));

showText(IDC_RICHEDIT21, ptr->c_str(), COLOR_GREEN);

return 0;
}

BEGIN_MESSAGE_MAP(Cmfc01aDlg, CDialog)
ON_MESSAGE(WM_MSG_UI_SHOW,OnMyMessage) //这里添加消息映射
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

批量响应消息

#define WM_DEMO_LOG_CLEAR		(WM_USER + 1)	//清空日志输出
#define WM_DEMO_ADD_DEVICE (WM_USER + 2) //添加设备
#define WM_DEMO_DEL_DEVICE (WM_USER + 3) //删除设备

BEGIN_MESSAGE_MAP(CZLNetSDKDemoDlg, CDialogEx)
...
ON_COMMAND_RANGE(WM_DEMO_LOG_CLEAR, WM_DEMO_DEL_DEVICE, &DemoDlg::OnTreeMessage)
...
END_MESSAGE_MAP()

void CZLNetSDKDemoDlg::OnTreeMessage(UINT nID)
{
//设备树右键菜单消息处理
switch (nID)
{
case WM_DEMO_LOG_CLEAR:
break;
case WM_DEMO_ADD_DEVICE:
break;
case WM_DEMO_DEL_DEVICE:
break;
}
}

字符串消息

// Put in shared_ptr so it is automatically destroyed.
shared_ptr<string> msg = reinterpret_cast<string*>(lParam);

发送消息

wstring* pwstr = new wstring(utils::s2w(strData));

pwnd->PostMessageW(WM_MSG_UI_SHOW, (WPARAM)pwstr, (LPARAM)i);

键入ssh命令后,显示错误如下
Permissions 0644 for ‘xx.pem’ are too open.

修改一下权限就可以了
chmod 600 xx.pem

use ubuntu18.04 + python3 + dlib

Step 1: Install OS libraries
sudo apt install build-essential cmake pkg-config
sudo apt install libx11-dev libatlas-base-dev
sudo apt install libgtk-3-dev libboost-python-dev

# 下面的可选
sudo apt install -y python3-setuptools git g++

Step 2: Install Python libraries
sudo apt install python-dev python-pip python3-dev python3-pip

git clone https://github.com/davisking/dlib.git
cd dlib
mkdir build; cd build; cmake ..; cmake --build . --config Release

// 下面可能是不需要的
sudo make install
sudo ldconfig

进入 python 虚拟环境
cd ..
sudo python setup.py install

pip install wheel
pip install face_recognition
pip install opencv-contrib-python
sudo apt update
sudo apt-get install python3-venv
sudo apt install build-essential cmake libopenblas-dev liblapack-dev libx11-dev libgtk-3-dev python3 python3-dev python3-pip


sudo apt install build-essential cmake
sudo apt install libopenblas-dev liblapack-dev
sudo apt install libx11-dev libgtk-3-dev
sudo apt install python python-dev python-pip
sudo apt install python3 python3-dev python3-pip


python3 -m venv face_recognition
source ./face_recognition/bin/activate

// 应该会自动安装依赖
pip install face_recognition


pip install numpy scipy matplotlib scikit-image scikit-learn ipython

pip3 install numpy
pip3 install dlib

deactivate

C++ 相关环境

修改 c_cpp_properties.json 里面的配置

下面的路径是 vs2010 IDE 的,win10 下面

"includePath": [
"${workspaceFolder}/**",
"${workspaceRoot}",
"D:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include",
"D:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/atlmfc/include"
]

显示函数列表

方法一:显示大纲

方法二:Shift+Ctl+O

Code → Preferences → Settings or ⌘,:

tab to space

// The number of spaces a tab is equal to. This setting is overridden
// based on the file contents when `editor.detectIndentation` is true.
"editor.tabSize": 4,

// Insert spaces when pressing Tab. This setting is overriden
// based on the file contents when `editor.detectIndentation` is true.
"editor.insertSpaces": true,

// When opening a file, `editor.tabSize` and `editor.insertSpaces`
// will be detected based on the file contents. Set to false to keep
// the values you've explicitly set, above.
"editor.detectIndentation": false

Recently I create a private repository and I want clone it as usual,
but response with remote: Repository not found., I do some research and find out.

I can do it with ssh way.

ssh-keygen -t rsa -C "xx@email.com"

把公钥添加到 github 里面

GIT_SSH_COMMAND="ssh -i /path/to/id_rsa" git clone git@github.com:xx/xx.git

2018年过去了,艰辛,挣扎的一年,下半年的全心付出,让我学到了人生珍贵的一课。人生经历又圆满了许多。
感谢上帝给我的眷顾,一次次的机会放在我的面前,我在不断的成长,我要为我人生的下半场努力,另一个40年开始了。

python+ECharts+d3.js
交互式用 bokeh

可视化技术栈
具备专业素养的数据可视化工程师一般来说需要掌握以下技术栈:

  • 基础数学:三角函数、线性代数、几何算法
  • 图形相关:canvas、svg、webgl、计算图形学、图论
  • 工程算法:基础算法、统计算法、常用的布局算法
  • 数据分析:数据清洗、统计学、数据建模
  • 设计美学:设计原则、美学评判、颜色、交互、认知
  • 可视化基础:可视化编码、可视分析、图形交互
  • 可视化解决方案:图表的正确使用、常见的业务的可视化场景

学术界用得比较多的是 R 语言, ggplot2, Python 可视化库等

ECharts

ECharts 缩写自 Enterprise Charts,企业级图表,开源来自百度数据可视化团队,是一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器,底层依赖另一个也是该团队自主研发的轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。ECharts 是目前国内唯一一个入选 GitHub 全球可视化榜单的开源项目,2w+ star 全球排名第三,社区活跃,覆盖主流前端框架和 8 种编程语言的扩展,目前国内市场占有率处于绝对领先地位。
d56ab916.png

python

  1. matplotlib
    matplotlib 是 Python 数据可视化库的 OG。尽管它已有十多年的历史,但仍然是 Python 社区中使用最广泛的绘图库。它的设计与 MATLAB 非常相似,MATLAB 是 20 世纪 80 年代开发的专有编程语言。

  2. Seaborn
    Seaborn 利用 matplotlib 的强大功能,可以只用几行代码就创建漂亮的图表。关键区别在于 Seaborn 的默认款式和调色板设计更加美观和现代。由于 Seaborn 是在 matplotlib 之上构建的,因此还需要了解 matplotlib 以便调整 Seaborn 的默认值。

  3. Bokeh
    与 ggplot 一样,Bokeh 同样基于 The Grammar of Graphics,但与 ggplot 不同的是,它是原生 Python 的,而不是从 R 语言移植过来的。它的优势在于能够创建交互式的网站图,它可以很容易地输出为 JSON 对象、HTML 或交互式 Web 应用程序。Bokeh 还支持流媒体和实时数据

  4. Plotly
    Plotly 是一个开源,交互式和基于浏览器的 Python 图形库。可以创建能在仪表板或网站中使用的交互式图表(您可以将它们保存为 html 文件或静态图像)Plotly 基于 plotly.js,而 plotly.js 又基于 D3.js,因此它是一个高级图表库,与 Bokeh 一样,Plotly 的强项是制作交互式图

  5. Plotly Express
    它是 Plotly.py 的高级封装,它为复杂的图表提供了一个简单的语法。 受 Seaborn 和 ggplot2 的启发,它专门设计为具有简洁,一致且易于学习的 API

pyecharts

D3.js

语法

(参数列表) => { 语句块 }

x => y // Implicit return
x => { return y } // Explicit return
(x, y, z) => { ... } // Multiple arguments
(() => { ... })() // Immediately-invoked function expression