Intelligence without ambition is a bird without wings.

2015-01-16
python-拓展包列表

  • colorama

    跨平台颜色打印

  • requests

    人性化http操作库

    手册

  • sh

    linux命令的包装,可以用函数调用的方式执行命令

参考

  1. https://github.com/vinta/awesome-python
阅读此文

2015-01-15
npm-命令简记

  • 安装包

    npm install <package-name>
    
  • 从文件夹安装

    npm install .
    
阅读此文

2015-01-15
awk-学习笔记

阅读此文

2015-01-15
vim-查看脚本载入顺序

1
:scriptnames
阅读此文

2015-01-15
vim-查看最后设定

查看某个选项最后设置位置

  • 查看文件类型

    :verbose set filetype
    

查看某个映射最后定义位置

  • 查看vmap

    :verbose vmap l<CR>
    
阅读此文

2015-01-15
windows-__in-__out-in-C

阅读此文

2015-01-14
wireshark-开启tcp-ip校验码检查

步骤

1
2
[Edit] => [Perference] => [Protocols] => [IPv4] => [Validate the IPv4 checksum if possible]
=> [TCP] => [Validate the IPv4 checksum if possible]

如图:

参考

  1. http://wiki.wireshark.org/TCP_Checksum_Verification
阅读此文

2015-01-09
库的错误处理

编写库,常见的错误处理方式:

  • 返回一个错误代码,提供一个函数将其转换为字符串

  • 返回一个错误数据结构,该结构包括错误代码和描述信息

  • 提供一个函数去获取错误代码,并提供一个函数转换为字符串

  • 提供一个接口让调用者注册错误处理函数,当发生错误时,进行回调

参考

  1. http://stackoverflow.com/questions/4201856/error-handling-strategies-in-a-shared-library-c
阅读此文

2015-01-09
cmake-macro-vs-function

cmake中,macro类似于C中的宏函数,会进行参数替换,而function类似于C中的函数,
参数是一个变量,可以进行赋值等操作。

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
set(var "ABC")

macro(Moo arg)
message("arg = ${arg}")
set(arg "abc")
message("# After change the value of arg.")
message("arg = ${arg}")
endmacro()
message("=== Call macro ===")
Moo(${var})

function(Foo arg)
message("arg = ${arg}")
set(arg "abc")
message("# After change the value of arg.")
message("arg = ${arg}")
endfunction()
message("=== Call function ===")
Foo(${var})

输出:

1
2
3
4
5
6
7
8
=== Call macro ===
arg = ABC
# After change the value of arg.
arg = ABC
=== Call function ===
arg = ABC
# After change the value of arg.
arg = abc

参考

  1. http://stackoverflow.com/questions/24297999/function-vs-macro-in-cmake
  2. http://www.cmake.org/cmake/help/v3.0/command/macro.html
  3. http://www.cmake.org/cmake/help/v3.0/command/function.html
阅读此文

2015-01-08
pragma-once

#pragma once是一条非标准的预处理指令,用来防止同一文件被多次包含,同include guard作用一样。
绝大多数编译器都提供支持。

具有的优点:

  • 代码更少,不用include那么麻烦
  • 更有效,更安全,由预处理器去维护判断是否已经包含过,而include需要程序员定义不同的宏名来保证,
    若宏名冲突,则导致编译失败
  • 效率更高,预处理器针对其做了特殊的优化
  • 复制,修改代码更容易,当把一个头文件复制到另一个项目中,或改名时,不用按着命令规范去修改

注意

当同一个文件,在项目内有符号链接或硬链接时,可能导致无法工作。

参考

  1. https://en.wikipedia.org/wiki/Pragma_once
  2. http://stackoverflow.com/questions/1143936/pragma-once-vs-include-guards
阅读此文