Intelligence without ambition is a bird without wings.

2014-12-19
ejs语法

语法

<% javascript %>

参考

  1. http://www.embeddedjs.com/
阅读此文

2014-12-19
markdown语法

文件名后缀

采用*.md

阅读此文

2014-12-19
wireshark-捕捉过滤器

用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。

捕捉器语法

[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
    

参考

  1. https://www.wireshark.org/docs/wsug_html_chunked/ChCapCaptureFilterSection.html
  2. http://www.tcpdump.org/manpages/pcap-filter.7.html
  3. http://wiki.wireshark.org/CaptureFilters
阅读此文

2014-12-18
SVN-工作副本怎样跟踪版本库

对于工作副本的每一个文件,Subversion 在管理目录 .svn/ 记录两项关键的信息:

  • 工作文件的基准版本(叫做文件的工作版本)

  • 一个本地副本最后更新的时间戳。

给定这些信息,通过与版本库通讯,Subversion 可以告诉我们工作文件是处与如下四种状态的那一种:

  • 未修改且是当前的

    文件在工作目录里没有修改,在工作版本之后没有修改提交到版本库。svn commit 操作不做任何事情,svn update 不做任何事情。

  • 本地已修改且是当前的

    工作副本已经修改,从基准版本之后没有修改提交到版本库。本地修改没有提交,因此 commit 会成功的提交,update 不做任何事情。

  • 本地未修改且过时

    这个文件在工作副本没有修改,但在版本库中已经修改了。这个文件应当更新到最新公共版本。commit 不做任何事情,update 将会更新工作副本到最新的版本。

  • 本地已修改且过时

    这个文件在工作副本和版本库中都被修改了。提交 该文件将会因为 过时 而失败。该文件应该先更新; 更新 命令将会尝试合并公共更改和本机更改。如果 Subversion 不能顺利的自动完成合并,则需要用户解决冲突。

参考

  1. http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-basics-svn.html
阅读此文

2014-12-16
C++编码规范

目录组织

  • [3rdparty] 第三方包

  • [bin] 动态库或可执行文件生成目录

  • [cmake] cmake辅助

  • [doc] 文档

  • [include] 对外接口声明

    • [库名称]

      • [include]
  • [lib] 静态库生成目录

  • [src] 内部声明(.h),实现文件(.c, *.cpp)

  • [test] 测试

参考:

  1. http://stackoverflow.com/questions/2360734/whats-a-good-directory-structure-for-larger-c-projects-using-makefile?lq=1
  2. http://stackoverflow.com/questions/13967296/why-place-headers-in-a-separate-directory?lq=1
  3. http://stackoverflow.com/questions/1383174/source-file-organisation?lq=1
  4. 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:

  • 若一些头文件依赖特定宏,则宏定义于头文件前
  • 若头文件之间存在顺序问题,则可以不遵循

参考:

  1. http://stackoverflow.com/questions/614302/c-header-order
  2. 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,数据成员定义


参考

  1. http://google-styleguide.googlecode.com/svn/trunk/cppguide.html
  2. http://www.c-xx.com/ccc/ccc.php
  3. https://en.wikipedia.org/wiki/Underscore
  4. https://en.wikipedia.org/wiki/Naming_convention_(programming)
  5. https://en.wikipedia.org/wiki/Hyphen
阅读此文

2014-12-15
VC可变宏参数

代码

1
#define MACRO(s, ...) printf(s, ##__VA_ARGS__)

注:

  • ##防止没有参数

参考

  1. http://msdn.microsoft.com/en-us/library/ms177415.aspx
阅读此文

2014-12-15
win-api判断目录是否存在

阅读此文

2014-12-12
windows获取文件名组成

1
2
3
4
5
6
7
void _splitpath(
const char *path,
char *drive,
char *dir,
char *fname,
char *ext
);

参考

  1. http://msdn.microsoft.com/en-us/library/e737s6tf.aspx
阅读此文

2014-12-12
windows获取程序名

阅读此文

2014-12-12
windows获取网络接口相关信息

通过访问注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{2A7DEE95-B437-444C-BB09-85E4EAD5E61C}

参考

  1. http://www.cnblogs.com/kkindof/archive/2012/06/08/2542337.html
阅读此文