什么是CtrlP

CtrlP是什么?对一般人来说,是打印文档的快捷键。对sublime text的用户来说,是sublime最性感功能之一。而对vimer来说,是可以在论坛上又一次喊出”这有什么,vim也能实现”,其实心底在窃喜,vim终于有了一个好用的打开文件的插件了,虽然它从名字到功能都模仿了sublime。

阅读全文 »

##变参模板Variadic Templates
变参模板(Variadic Templates)顾名思义就是参数类型和个数可以改变的模板。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//定义
template<typename... Arguments>
class VariadicTemplate;
//实例化的方法
VariadicTemplate<double, float> instance;
VariadicTemplate<bool, unsigned short int, long> instance;
VariadicTemplate<char, std::vector<int>, std::string, std::string, std::vector<long long>> instance;
//参数个数甚至可以为0
VariadicTemplate<> instance;

//变参模板函数
template<typename... Arguments>
void SampleFunction(Arguments... parameters);
//使用
SampleFunction<int, int>(16, 24);
SampleFunction<std::string>("fun");
阅读全文 »

先前的博文介绍过tmux,极大的提高了远程登陆linux server的操作效率。但是tmux在系统重启后,所有的tmux session都会被消除,你分好的window pane, 所有的环境设置都没有了。这对于基本不关机的server问题不大,但是开发者如果想在自己的机器上使用tmux, 就不得不面对怎么在系统重启后恢复tmux session的问题。

阅读全文 »

C++的Pimpl惯用法或者说Pimpl模式,又被称为编译防火墙,是一种在头文件中隐藏实现的方式。Pimpl很古老,可能在标准C++诞生之前就有了这种用法,其间争论也早已尘埃落定,用和不用各有利弊,主要还是看组织内部的规范和项目的需要。最近Team一直同时在两个subsystem下工作,两个subsystem的code base一个用了Pimpl一个没有用,是以在Team中产生了到底要不要用的争论。虽然SA的决定是维持现状,但还是总结下Pimpl的相关知识,以备参考。

Pimpl 没有固定的形式,有的很复杂,如Qt中的private class和D-Pointer的结构。而Team在项目中用到的相对很简单,只是一个智能指针加一个Inner Class, 基本结构如下。

阅读全文 »

tmux是一个优秀的终端复用软件,类似GNU Screen,但是对两个软件评价已经是一边倒了,大多数人认为tmux功能更加强大,使用更加方便。详细的对比可以看这里, 这里

阅读全文 »