2017-11月

上月 下月

2017-11月上月 下月一、2017-11-01今日终于解决 cppcheck 屏蔽单个函数报错问题1、下载到 cppcheck 包,解压后,直接 make && make install2、对C代码进行检测在不使用 --inline-suppr关键字之前,检测效果:得到两个内存错误id="memleak"id="leakReturnValNotUsed"加上关键字 --inline-suppr 之后,代码中的 cppcheck-suppress立即生效:3、需要将安装目录的 cfg 目录 copy 到被检测目录。到少要将 cfg/std.cfg 复制过来。否则报错说找不到 std.cfg4、忽略某些目录,不检测的方法5、将 cppcheck 结果转化为 html 格式[22:09]终于找到一条临时策略,比之前方案略好FTP服务器`性能不错,PC端使用 filezilla,连接 android 服务器很流畅,不卡。[22:33]本想用 list.py 解决文件不连续问题,但是遇到了可怕的问题:三、vim 字符串替换替换之前的文本样子输入如下内容,回车后即执行替换操作替换之后的效果为四、Makefile 中创建临时的依赖目录五、sed首行插入1、进行 sed 插入实验之前的文本样子2、输入如下命令,文件每行行首插入内容3、只是将替换结果打印在屏幕,文件内容没有变化,这样保存六、文件行尾追加内容七、同时在文本行首和行尾插入内容八、在第一行前面插入,即新插入第一行九、在文件最后追加一行十、curl 上传文件十一、curl 删除服务器文件十二、字符串加工十三、git 删除整个目录十四、cppcheck配合C代码的规则十五、svn删除整个目录十六、 gtest更加精减,makefile 更加精减2017-11-06一、elog gtest异步 test case,不能在 case 后面直接进行 destroy,因为不确定 buffer中的内容是否已经打印完毕二、vim 怎样跳到函数头/尾三、 grep 的玩法四、shell 得到精确的时间,纳秒级五、putty 小工具,连接 ssh 小巧方便,只是不够强大六、windows 上一个播放 wav 的小程序2017-11-17[4:39]一大早研究 docker,费了好大力气,终于开局[6:15]在网站https://hub.docker.com/上注册成功2017-11-19[22:06]shttpd确实是人家作者提供了现成的接口grep 查找的一个小技巧linux 安装 snmp原来很简单linux 下安装 net-snmp的方法[22:47]一个bitmap的实现,比特表数组23:02 得到人家一份加密算法共享代码[23:04]精心制作的字符操作脚本欲将搜索命令做成通用命令 replace.sh[23:12]人家写的 bootstrap css 实现表格可增删功能2017-11-20struct 中定义union 变量使用 vimdiff 查看到的结果:[21:15]讲述net-snmp agent 开发的例子,甚详2017-11-23[22:17] go语言安装[22:22] ngrok 自己用源码搭建2017-11-25[21:03]孙悟空网http://www.72swk.com/task_list-indus_pid-469-page-2.html2017-11-26[10:00]成功将家中电脑 web-server101.45.176.37部署到外网[10:52]搭建自己 ngrok 的文档,相对比较完整[20:20]13时许出门,然后直接去公司,将代码优化一下2017-11-29[20:46]今日学习内容, valgrind --tool=massif --stacks=yes ./ut上月 顶部 下月

一、2017-11-01

今日终于解决 cppcheck 屏蔽单个函数报错问题

1、下载到 cppcheck 包,解压后,直接 make && make install

 

2、对C代码进行检测

 

在不使用 --inline-suppr关键字之前,检测效果:

 

得到两个内存错误id="memleak"id="leakReturnValNotUsed"

加上关键字 --inline-suppr 之后,代码中的 cppcheck-suppress立即生效:

 

3、需要将安装目录的 cfg 目录 copy 到被检测目录。到少要将 cfg/std.cfg 复制过来。否则报错说找不到 std.cfg

4、忽略某些目录,不检测的方法

 

5、将 cppcheck 结果转化为 html 格式

 

 

[22:09]终于找到一条临时策略,比之前方案略好

FTP服务器`性能不错,PC端使用 filezilla,连接 android 服务器很流畅,不卡。

 

[22:33]本想用 list.py 解决文件不连续问题,但是遇到了可怕的问题:

好端端的代码,被 markdown 转化成 html之后,看似很漂亮。但是直接 copy过去保存为 list.py,却不能正常运行,中间出现了许多奇怪的字符。需要十分小心

 

 

三、vim 字符串替换

替换之前的文本样子

输入如下内容,回车后即执行替换操作

替换之后的效果为

四、Makefile 中创建临时的依赖目录

五、sed首行插入

1、进行 sed 插入实验之前的文本样子

2、输入如下命令,文件每行行首插入内容

3、只是将替换结果打印在屏幕,文件内容没有变化,这样保存

sed 's/^/\<li\>/g' ./a.c | tee b.c

 

六、文件行尾追加内容

 

七、同时在文本行首和行尾插入内容

sed '/./{s/^/head_&/;s/$/$_end/}' ./a.c

但是换一种写法sed '{s/^/head_&/;s/$/$_end/}' ./a.c,屁股后面却多出一行

八、在第一行前面插入,即新插入第一行

sed -i '1i\要插入的首行内容' a.c

 

九、在文件最后追加一行

sed -i '$a\要追加的文字' a.c

 

十、curl 上传文件

 

十一、curl 删除服务器文件

 

十二、字符串加工

 

十三、git 删除整个目录

[user @ src_prj]# git rm dir -r

 

十四、cppcheck配合C代码的规则

cppcheck --inline-suppr dir/a.c --xml-version=2.0

 

 

十五、svn删除整个目录

 

十六、 gtest更加精减,makefile 更加精减

 

gtest不带 main函数的 makefile,更加精减

 

 

2017-11-06

一、elog gtest异步 test case,不能在 case 后面直接进行 destroy,因为不确定 buffer中的内容是否已经打印完毕

 

 

二、vim 怎样跳到函数头/尾

[[ 跳到函数头,对大函数十分有用

]] 跳到函数尾

 

三、 grep 的玩法

1、最简单的 grep str ./file

 

2、带上参数 -rn ,n 表示打印行数

 

 

3、 grep -rn Author ./axx | less

4、grep 只取2行

 

 

四、shell 得到精确的时间,纳秒级

五、putty 小工具,连接 ssh 小巧方便,只是不够强大

六、windows 上一个播放 wav 的小程序

 

编译方法:

 

 

2017-11-17

[4:39]一大早研究 docker,费了好大力气,终于开局

1、以前从 github 下载源码自己编译的,应该也是好的,但是不会,把它删除了

2、从 CSDN 上下载了一下现成的二进制 rpm包 centos_docer_install.tar,然后正常安装, rpm -ivh centos_docer_install.tar,但是安装后不会用,又删除了

3、想再次重新安装,却因为刚刚的暴力删除,造成安装失败,一执行rpm -ivh centos_docer_install.tar就提示 docker 已经安装。于是只得再暴力安装

 

4、安装提示成功后,再执行仍然失败

5、由于 cent-os是连网的,于是利用网络命令安装

 

6、再次运行仍然不行,但是得到重要提示

 

人家提示,无法连接上 docker 后台,是否要在本机'docker -d'命令启动后台,于是尝试之

 

7、然后再重新开启一个窗口

 

而在后台窗口,也在相应打印提示,先说没有找到 unbuntu 镜像,然后就开始从网上下载

 

然后,ubuntu下载完毕后, docker 自动运行了 ubuntu操作系统,并且登录了进去

 

8、再次查看有哪些 docker 进程在运行

 

9、至此,docker 算是开局成功,中间一个步骤不知是否有影响,补充在此

docker error: /var/run/docker.sock: no such file or directory的问题

 

 

[6:15]在网站https://hub.docker.com/上注册成功

 

docker 常用命令

 

 

2017-11-19

[22:06]shttpd确实是人家作者提供了现成的接口

程序最初的注册功能, shttpd_register_url其实就是说,哪个 url 要交给哪个函数处理,这是自己写服务器无法解决的大问题

grep 查找的一个小技巧

[user@ dir# grep -rn SNMPADDR_T ./ | grep '\.h',必须将点转义,否则会被当作通配符

 

linux 安装 snmp原来很简单

安装成功后,验证之:

 

snmp也可以获取设备全部信息,这是一个通用OID

 

 

linux 下安装 net-snmp的方法

官网下载 net-snmp5.7.3,下载到 centos7,然后 ./configure && make && make install,第一次编译报错,然后 make clean && make && make install,竟然成功了

==》》但是在自家电脑虚拟机上尝试失败。

==》》由于家中虚拟机可以连接外网,于是尝试,竟然成功

 

成功之后,将 snmpd 服务开启,

 

然后在其它机器上获取mib量

先在 centos开启服务

 

然后在 cygwin 里面获取 centos 中的 mib 量

 

[22:47]一个bitmap的实现,比特表数组

 

上图

bitMap.jpg

 

23:02 得到人家一份加密算法共享代码

https://github.com/zhangdongyue/AES128cbc,能编译运行通过,但是未深入研读代码

 

 

[23:04]精心制作的字符操作脚本

欲将搜索命令

 

做成通用命令 replace.sh

 

grep_shell.png

 

[23:12]人家写的 bootstrap css 实现表格可增删功能

代码尚未研究http://blog.csdn.net/wangmei4968/aritcle/details/48437175

 

 

2017-11-20

struct 中定义union 变量

使用 vimdiff 查看到的结果:

 

[21:15]讲述net-snmp agent 开发的例子,甚详

net-snmp-develop.md

 

2017-11-23

[22:17] go语言安装

安装包在这里go-pakage,具体的安装步骤:

http://blog.csdn.net/WuxCSDN/article/details/72872568

1、准备go安装包

[https://golang.org/doc/install?download=go1.8.3.linux-amd64.tar.gz](https://golang.org/doc/install?download=go1.8.3.linux-amd64.tar.gz)

2、选择安装路径

由于默认的go路径,在/usr/local下, 所以用如下命令,解压创建/usr/local/go 
tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz 

3、添加PATH环境变量

 

4、建立Go的工作空间(workspace,也就是GOPATH环境变量指向的目录)

GO代码必须在工作空间内。工作空间是一个目录,其中包含三个子目录: 
src —- 里面每一个子目录,就是一个包。包内是Go的源码文件 
pkg —- 编译后生成的,包的目标文件 
bin —- 生成的可执行文件。 
这里,我们在/home目录下, 建立一个名为gopath(可以不是gopath, 任意名字都可以)的文件夹, 
然后再建立三个子文件夹(子文件夹名必须为src、pkg、bin)。如下图

5、设置GOPATH环境变量

 

 

[22:22] ngrok 自己用源码搭建

源码包在这里ngrok-package

然后很简单的,先按上述说明安装好 go 语言环境,直接 make 就可以了。在当前目录下 ./bin/ 下面会生成 ngrok 和 ngrokd

 

如何运行你自己的ngrokd服务器

http://blog.csdn.net/shikewei0103/article/details/41284815

 

尚未动手验证,时间过的太快,已经 22:27,但是收获是 ngrokd 在本地运行起来了,而且本地的 ngrok 可以成功连接上 ngrokd ,只是ngrokd 没有把数据派发给 ngrok.

 

 

2017-11-25

[21:03]孙悟空网http://www.72swk.com/task_list-indus_pid-469-page-2.html

使用 coding 账号

 

2017-11-26

[10:00]成功将家中电脑 web-server101.45.176.37部署到外网

1、将自己PC的 web-server端口设置为8080(如 shttpd)

 

2、配置路由器

cfg_route_for_web_server.png

 

3、想办法得到路由器在外网上的ip

A、利用外网获取

B、到自己的路由器上去查看

但是,路由器一旦重启,其外网IP就会发生变化,甚是烦人

 

4、在外网访问自己的web-server

5、问题

每次路由器重启之后, 路由器的 ip 会发生变化,PC 的 IP也会发生变化

6、解决方案

A、利用域名解析,已经在百度购买域名解析服务,但是使用不便

B、自己写一个程序,主动上报路由器IP。一旦路由器重启,IP发生变化,就 给自己的139邮箱发邮件,目前技术可行,随便一个脚本搞定

C、将WEB-SERVER部署在虚拟机上,免得坏人搞破坏

D、将PC设置成静态IP

 

7、怎样利用百度 域名解析功能

经与百度云客服沟通。明确在不备案的情况下,用自己主机,无法访问(尽管此时不用域名,也能成功访问,但是总是不便)

但是如果用境外主机,则无需备案,就可以正常访问,这是逼我选选择境外主机啊,不然域名就浪费了。如果国外网站可以访问家中电脑,而国内域名可以访问国外电脑。那就实现间接访问家中电脑

 

 

[10:52]搭建自己 ngrok 的文档,相对比较完整

原网址:http://blog.csdn.net/u013216667/article/details/50782084

下载到本地:搭建自己的ngrok服务

 

[20:20]13时许出门,然后直接去公司,将代码优化一下

 

2017-11-29

[20:46]今日学习内容, valgrind --tool=massif --stacks=yes ./ut

主要学习内容,来自 valgrind 官网的阅读,http://valgrind.org/docs/manual/ms-manual.html,重要部分翻译如下:

1、 valgrind --tool=massif --stacks=yes ./ut
记录 heap, 额外 heap(用于内存管理、字节对齐等),默认 stack 功能不开
2、 massif 能检测 memcheck 发现不了的问题
3、运行 valgrind --tool=massif --stacks=yes ./ut
得到输出文件 massif.out.12345
查看其内容的方法:ms_print massif.out.12345
或者直接使用 vi 命令查看
4、对图像解释

Number of snapshots: 25 ==>>共有三个详细快照
Detailed snapshots: [9, 14 (peak), 24] 它们分别是 9、14、24

每个竖线代表一次快照,横线表示到下次快照之前的状态
默认最多只有100条 snapshots,每次申请/释放内存,都会产生一个快照
随着程序运行时间越来越久,它采集 snapshots 的频率会越来越低。还会将原来已经采集到的 snapshots 丢弃。
当达到最大值时,将有一半的 snapshots 被丢掉。所以每次执行程序,都应当配置合理的 --max-snapshots 值。
snapshots 主要是普通快照,detailed 隔一段有一个, peak 只会有一个

5、massif 检测到的峰值可能不对,因为
	A、峰值只有在释放的时候才采集。如果程序只有采集而无释放,所以如果代码里面只有 malloc 而无free。所以峰值就只能在最后才能发现,或者无法检测到
	B、massif 检测到的峰值可能与实际值相差 1%,可以用命令行 --peak-inaccuracy 配置

6、图像下方的数字说明

7、 --pages-as-heap=yes 不能与 '--stacks=yes'同用

 

 

上月 顶部 下月