life's a struggle.
2014-12-19
2014-12-19
2014-12-19
用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。
捕捉器语法
[not] primitive [and | or [not] primitive ...]
primitive := qualifiers id
id := name or number
qualifiers := type dir proto
type
type qualifiers say what kind of thing the id name or number refers to. Possible types are host, net , port and portrange. E.g.,
host foo
,net 128.3
,port 20
,portrange 6000-6008
. If there is no type qualifier, host is assumed.
常用过滤器
DHCP
port 67 or port 68
目的MAC
ether dst 74-D4-35-46-3C-8E
tcp端口
tcp port 80
参考
2014-12-18
对于工作副本的每一个文件,Subversion 在管理目录 .svn/ 记录两项关键的信息:
工作文件的基准版本(叫做文件的工作版本)
一个本地副本最后更新的时间戳。
给定这些信息,通过与版本库通讯,Subversion 可以告诉我们工作文件是处与如下四种状态的那一种:
未修改且是当前的
文件在工作目录里没有修改,在工作版本之后没有修改提交到版本库。svn commit 操作不做任何事情,svn update 不做任何事情。
本地已修改且是当前的
工作副本已经修改,从基准版本之后没有修改提交到版本库。本地修改没有提交,因此 commit 会成功的提交,update 不做任何事情。
本地未修改且过时
这个文件在工作副本没有修改,但在版本库中已经修改了。这个文件应当更新到最新公共版本。commit 不做任何事情,update 将会更新工作副本到最新的版本。
本地已修改且过时
这个文件在工作副本和版本库中都被修改了。提交 该文件将会因为 过时 而失败。该文件应该先更新; 更新 命令将会尝试合并公共更改和本机更改。如果 Subversion 不能顺利的自动完成合并,则需要用户解决冲突。
参考
2014-12-16
目录组织
[3rdparty] 第三方包
[bin] 动态库或可执行文件生成目录
[cmake] cmake辅助
[doc] 文档
[include] 对外接口声明
[库名称]
- [include]
[lib] 静态库生成目录
[src] 内部声明(.h),实现文件(.c, *.cpp)
[test] 测试
参考:
- http://stackoverflow.com/questions/2360734/whats-a-good-directory-structure-for-larger-c-projects-using-makefile?lq=1
- http://stackoverflow.com/questions/13967296/why-place-headers-in-a-separate-directory?lq=1
- http://stackoverflow.com/questions/1383174/source-file-organisation?lq=1
- http://stackoverflow.com/questions/1398445/directory-structure-for-a-c-library
文件空行
#pragma once
后空2行#include
模块间空1行#include
后空2行函数定义间空1行
头文件
使用
#pragma once
凡是能使用前向声明的,尽量使用,减少外部依赖!
- 若该文件是作为外部引用入口,则需确保使用者不用再include其他文件,除非故意划分子模块使用!
头文件包含顺序
各部分最好按字母序排列
实现文件对应的头文件
可以尽早发现该模块头文件中缺少的必须的头文件,使模块完全独立,不依赖于其他模块导入的头文件,减少了编译时间!
本模块下其他的头文件
C++库
- C库
系统库
确保该实现不依赖其他模块导入的头文件!
第三方库(根据使用广泛度,不同库换行)
本项目的其他模块头文件
Note:
- 若一些头文件依赖特定宏,则宏定义于头文件前
- 若头文件之间存在顺序问题,则可以不遵循
参考:
- http://stackoverflow.com/questions/614302/c-header-order
- http://stackoverflow.com/questions/2762568/c-c-include-file-order-best-practices
命名约定
文件命名
- 若是类文件,则与类名保持一致
- 若是C函数,则采用下划线分隔,因为本身C中就是用下划线分隔,不一致的话,在源码中如果涉及到该文件名,则可能需要转换规则
如单元测试中,对inet-helper.h
进行测试,则测试套件名需要转换。
变量命名
普通变量
下划线分隔
成员变量
下划线分割,添加后缀’_’
常量命名
前缀k
,骆驼命名,如kDaysInWeek
函数命名
普通函数
函数名以小写骆驼命名,如isEmpty()
存取函数
下划线分隔,如get_num()
宏命名
大写,下划线分隔
类
类组织
public
,成员函数public
,静态函数private
,宏定义private
,类型定义private
,内部成员函数private
,静态数据成员定义private
,数据成员定义
参考
2014-12-15
2014-12-15
2014-12-12
2014-12-12
2014-12-12
通过访问注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{2A7DEE95-B437-444C-BB09-85E4EAD5E61C}