- 博客(85)
- 资源 (8)
- 收藏
- 关注
原创 shell脚本常用
杂$0 脚本名$1 第一个参数awkcat data.txt | awk '{print $2}' #默认以空格为区分,打印第二列cat data.txt | awk -F'{2,}' '{print $3}' #以两个及以上空格为区分,打印第三列cat data.txt | awk -F: '{print $4}' #以:为分隔符,打印第四列cat data.txt | awk '{print $1=null,$0}' #不打第一列,其他列都输出cat data.txt
2022-04-20 17:14:58
1004
原创 python的pyplot画折线图
python3,脚本挂日志就能生成折线图import numpy as npimport matplotlib.pyplot as pltimport sysimport rex = []y = []x_start = 0x_step = 5fp =open(sys.argv[1], 'rb')for line in fp.readlines(): text = line.decode() if "%," in text: #print(re.f.
2022-01-20 21:15:56
1048
原创 conan基本
1、conan是c/c++包管理工具,类似nodejs中的npm。2、c/c++项目从白盒能变为黑盒,依赖间不用再是源码级,问题好定位,管理清晰。3、依赖python大于等于3.54、跨平台linux、mac、windows等5、能管理所有中间二进制文件6、//在远端仓库查看poco库的情况conan search poco --remote=conan-center//查看某个库的信息conan inspect poco/1.9.4//conan运行conan inst
2022-01-10 16:16:35
1009
原创 webrtc嵌入式中转推流端
牢骚团队要搞什么webrtc,一天假回来啥都没了,抢回来了一个webrtc推流端模块,不然整个webrtc就没我啥事了。webrtc是现在的热门,刷boss的适合发现很多媒体开发岗都蹭热度要webrtc相关经验。所以同事看到webrtc眼睛放光,啥都没给我留。系统用的是kurento。推流端有两种,一种是直接运行在相机上,直接代码上拿流,这个比较简答,rtsp模块是我做的,砍了砍就实现了。另一种就是我这里要写的内容。从成品相机拉rtsp视频再推给kurento 的 kms。这个复杂一些,需要有 rt
2020-06-07 12:41:23
1089
原创 关于我上传的H265(ffmpeg_and_nginx-rtmp).7z的一些说明
这个压缩包已经被下载了3次,当时上传也比较仓促,说明不多,有必要做尽可能详细的说明。总共包含两个部分,一是ffmpeg,二是带rtmp模块的nginx。这两个部分就能搭建 rtmp-h265 的整套测试系统!用ffmpeg文件夹中的 ffmpeg或ffmpeg_g 作为推流端,里面已经支持了 h265. nginx 作为中间的服务器,再用ffmpeg文件夹中的 ffplay或ffplay_g 作为拉流预览端,3端都有就可以去做你需要的事情了。我是要做自己的推流端——嵌入式相机。如果不自己做而用完整的ff
2020-06-07 11:42:44
495
7
原创 onvif——1——从零到可以编程
在老东家做了五年的onvif,都是在已有架构上改,偏业务,由于各种原因一致也没有从头搭建过。新东家要做onvif,这回我全权负责,光杆司令一枚,配上我这个司令之前做的rtsp,现在已经能够基本运行,odm和海康NVR都OK。这篇文章就从头写到这。时间也过了很久,我尽量回忆写细。gsoaponvif协议一般都是用工具辅助开发,所有的都自己做当然可以,因为onvif就是 http + xml ...
2020-04-25 17:13:27
724
原创 vim常用快捷键
ctrl ] 前进ctrl o / ctrl t 后退:w 保存:e! 退到上次保存位置w 后移一个单词b 前移一个单词dw ...
2020-04-25 15:10:22
244
2
原创 配置vim为程序编辑器
程序员圈子里有这样一个传说,用vim编程的都是大神。工作近七年未见一人是这种操作,本周开始我决定改用vim进行编程,最终实现双手不离键盘不动鼠标的终极目标!本文讲解vim配置方法,后面还会讲到常用快捷键,使用中的一些心得。已经使用了三天左右进行开发调试,没比clion差太多,右手去触碰鼠标的次数明显降低,就是比较费脑子,因为你的移动,复制粘贴,替换等所有操作都需要思考如何去做。vim的配置...
2020-04-25 15:03:47
286
原创 工业相机传输照片丢数据
最近使用工业相机抓拍,用arm64的sdk抓图总是存在丢帧问题,最终发现是cpu性能导致。下面将一些点分享出来。问题照片大小基本是7M到10M之间。共出现两种异常照片。第一种经常出现在刚开始抓拍的时候,第二种在后面随机。1、照片中有横向绿色条纹。2、照片中某些地方存在水波纹。调试在多种平台进行过调试。1、rk3399(2个A72+4个A53);2、tx2(2个d...
2020-03-19 15:06:12
647
原创 将expect脚本移植到嵌入式linux上
嵌入式设备需要telnet访问服务器并在服务器上执行工具,用expect脚本实现,但嵌入式系统已经将expect裁剪掉,今天将expect移植过来,不是十分清晰,为了防止以后忘记,将整个过程记录下来。网上相关并不多,这篇是我认为写的最好的。tcl和expect版本有很多,为了简洁,我使用的也是这篇文章链接中的版本,分别是tcl8.6.10-src.tar.gz和expect5.45.3.tar...
2020-01-08 09:05:33
588
原创 opencv3.4.0安装
ubuntu18.04安装opencv3.4.01、apt-get install aptitude2、apt-get install cmake3、apt-get install libgtk2.0-dev4、aptitude search libgtk2.0-dev5、apt-get install libavcodec-dev libavformat-dev libsws...
2020-01-04 14:08:55
199
原创 6——嵌入式WebServer的移植——appweb实现文件上载(upload)
开发一个从chrome上传文件到嵌入式设备上的功能,再次调试appweb。费了九牛二虎之力最终实现了。appweb对http支持非常完整加上我对http理解算不上精通导致了巨大的困难,现在将一些心得分享出来。sample中的实现在samples文件夹中esp-upload是上载的例子。其中README.md中介绍了运行方法和地址,测试好用。整个功能是appweb加载解析appweb.con...
2019-12-10 20:55:35
994
原创 libpcap/tcpdump—6—交叉编译
我使用海思编译链,gcc分别是:arm-hisiv300-linux-gcc和arm-himix200-linux-gcc。和其他工具类似,先configure,再make。1、libpcap:1、configure:./configure --disable-usb --disable-bluetooth --host=arm-himix200-linux如上所示为配置方法,编...
2019-11-26 14:15:11
396
原创 libpcap/tcpdump—5—捕获方式(AF_PACKET原始套接字)
pcap_loop调用pcap_read_linux_mmap_v3循环捕获数据,此时程序已经进入正常嗅探过程,而我们应该重点关注的点应该是在这之前的启动过程。整体了解之后发现一切都是围绕着socket展开,这个socket和以往纯应用层tcp/udp的socket不一样,它将Ethernet、ip、tcp层的数据都暴露出来,被称作原始套接字。libpcap/tcpdump就是用原始套接字...
2019-11-21 20:48:17
1082
原创 libpcap/tcpdump—4—文件结构
抓包的输出虽然可以在终端上显示,但使用-w选项写一个文件用wireshark打开分析才是最常用的方法。这篇文章讲解写出的文件结构,暂不介绍函数调用关系。The pcap file has the following format: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | file h...
2019-11-08 22:18:06
194
原创 libpcap/tcpdump—3—抓包结论(3 packets captured,3 packets received by filter,0 packets dropped by kernel)
每次在退出tcpdump的时候,终端上都会显示上图这样的3行信息。本篇文章就是想讲解这3个数值的相关信息。我会尽量写的详细,但能力有限,核心地方无法点到本质。这条信息是tcpdump.c中info(register int verbose)接口打印的信息。部分代码如下所示:其中packets_captured表示捕获到的包的数量,如果指定了-w选项也就是写入到文件中的包数,下一篇...
2019-11-05 21:56:43
4265
原创 动态库链接动态库运行问题
问题liba.so包含函数符号abc,libb.so里面又调用了函数abc。程序运行的时候如果普通dlopen会报错,libb.so无法找到符号abc。解决dlopen的时候参数加入RTLD_GLOBAL即可。下面是man中的解释,就是针对这种问题。一个动态库需要的符号在另一个动态库中定义,非常不提倡!但有时候动态库不是你做的,你没有办法去修改,也只能这么去做保证程序的运行。RT...
2019-10-24 20:43:45
212
原创 libcurl中cookie的使用
异步multi没有使用,easy是最常用的。cookie我试了下面4个宏,基本全了。cookie的细节很多,但不是我的重点,就这么笼统的写一下。CURLOPT_COOKIE参考https://curl.haxx.se/libcurl/c/CURLOPT_COOKIE.html说明1、第一种自定义cookie,只需调用一次,多次调用以最后一次为准2、格式必须是NAME=CONT...
2019-10-11 16:44:17
1442
原创 libcurl交叉编译方法
linux上开发httpClient使用最广发的就是curl了,关于curl和libcurl区别等科普知识不是我要写的内容。我使用版本是curl-7.66.0。交叉编译和发行版大linux编译我都进行了尝试,其实最开始只是交叉编译,但因为要用cookie,所以才进行的ubuntu编译,比交叉编译遇到的问题更棘手。这篇文章会把遇到的一些问题说一下,细节不赘述。点击这里是下载地址,写此文章时最新的版本...
2019-10-11 16:17:39
714
原创 讲数字证书最清晰的一篇博客
链接在这里,看了很多文章,这一篇是最好的,讲的最简洁清晰,很多其他文章都是稀里糊涂。当然这一篇是翻译过来的,不是阮一峰自己写的。
2019-09-24 10:38:25
167
原创 libpcap/tcpdump—2—网络信息(listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes)
这条信息在运行tcpdump的时候都会见到,那它到底代表什么,又是怎么产生的。这篇文章就说一下这个事。这条信息共有4个内容,分别是:ens33,EN10MB,Ethernet 和 262144.这是最全的情况,查看tcpdump代码你会发现还有3个内容的情况,那个比这个要简单。忘了说了,我使用的tcpdump是4.9.2,libpcap是1.9.0.下面就把这4个内容分别介绍一下。ens3...
2019-09-17 17:40:38
5192
原创 解决一个信号6问题(sig6,signal6,SIGABRT,double free or corruption (!prev))
我遇到的信号6 99%都是由于数据越界导致,在memcpy的时候没有错误,在free的时候系统报SIGABRT。今天也不例外。代码是我写的,考虑不周,以后拷贝更多加小心。上图中的data大小为1024,如果memcpy 1025各字节,拷贝正常,但是在你free它的时候就会报上面截图中的错误。这就是原因。遇到这种问题不要怕,新手不要给自己设置障碍,信号是系统提供给你的帮助,而不是困难。...
2019-09-04 17:56:42
30570
2
原创 使用nc在linux设备间传送文件
嵌入式linux设备不一定都支持tftp,我遇到的还好支持nc工具,可以实现文件传递的功能。nc netcat步骤1、接收方运行:busybox nc -l 接收方IP:接收方端口 < 文件名2、发送方运行:busybox nc 接收方IP 接收方端口 < 文件名简单的2个步骤就能解决文件传递问题,记录下来是因为总忘,总需要baidu...
2019-08-17 15:17:52
596
原创 libpcap/tcpdump—1—编译安装
tcpdump的编译依赖libpcap编译出来的libpcap.a 所以在编译tcpdump之前需要先编译libpcap,我使用的是libpcap-1.9.0和tcpdump-4.9.2。1、将两个文件夹放在同一个文件夹下,也就是目录下。这个在tcpdump的README.md中有说明,包括先编译libpcap也有说明。2、进入libpcap文件夹执行./configure进行配置,开始阶...
2019-08-09 17:33:48
976
原创 openssl交叉编译方法
查看手头openssl文件夹,发现有以前交叉编译openssl时候的一个说明,已经不记得了,防止丢失写此文章。总共就3步。1、先执行: ./config no-asm 如果需要动态库,执行: ./config no-asm shared。--prefix=/usr/local/openssl选项指定install的地址,install后可以在里面找到库和头文件等,有需要的话,可以加入-fPIC...
2019-08-09 15:05:07
982
原创 动态库链接静态库遇问题
问题liba.so的编译依赖libb.a,链接后正常编译通过。运行加载liba.so的时候报找不到函数int c(int d ).原因原因现在讲不清楚,只知道和链接,地址,程序执行过程有关。解决在编译libb.a的时候加上 -fPIC 选项(编译为位置独立(地址无关)的代码)这篇博客写的挺好的其他ldd -r liba.so | grep c 和nm liba.so ...
2019-07-24 20:39:04
1094
原创 第一次写shell脚本遇到的一些问题
最近的一个任务需要用shell脚本实现,这也是我第一次正式的写shell脚本。由于之前没怎么写过shell脚本,所以流程的每一步我都需要上网查,然后实验,过程还是挺艰难的。网上能查到的比较多的相关知识我就不赘述了,写一些我认为不是特别多的吧。脚本要实现一个什么功能呢?在服务器上实现嵌入式设备程序的自动下载、编译、升级、验证。下载:git下载,多地址,多分支,多版本,需要校验。编译:简单...
2019-06-24 20:46:46
184
原创 1——嵌入式WebServer的移植——boa&&appweb学习1
项目做到现在这个阶段,是时候引入http服务器了。以前的团队移植过boa作为http服务器,一方面给网页使用,另一方面给其他在http之上封装的协议使用。什么协议是加挂在http里面的呢,这里就不说了,我们业内覆盖范围最广的协议就是在http的body里面开发的,那不是本文重点。当时移植boa我不在,没怎么参与,只是后续的工作中偶尔遇到问题会看看boa移植的代码,所以对boa我也不是非常熟悉,...
2019-06-17 18:59:23
944
原创 2——嵌入式WebServer的移植——boa&&appweb学习2
年前已经做了一部分工作,马上就要开始向嵌入式设备上移植,再不补上就要断档。这里把appweb的一些东西贴出来。上一篇文章没有说appweb的大小,因为appweb功能多,很复杂,当时没有一个稍微确切点的定论。后来调试的时候有了一点概念。appweb分dynamic和static两种方式,dynamic没有说的必要,依赖太多的so,无法确定appweb的大小,所以我尝试了去编译static方式,...
2019-06-17 18:59:14
876
3
原创 3——嵌入式WebServer的移植——appweb的运行
WebServer的开发到今天是一个阶段,现在已经能够用chrome设置参数,浏览实时视频(flash+rtmp)。appweb也使用了一点点,与上一篇文章已经有了断档,刻不容缓必须更新了。上一篇文章是在linux下运行appweb,去尝试sample文件夹下那几十个例子,里面的很多例子都已经尝试着去运行,问题很多,这里不一一赘述。本篇文章写:我复制了哪些文件能让appweb启动服务。下面...
2019-06-17 18:59:03
652
2
原创 4——嵌入式WebServer的移植——appweb对http的简单实现——Action Handler
上一篇说了appweb使用的版本,可以查看。话不多说直接上干货。前端使用chrome浏览器,实现参数的设置。按java的方案是使用表单,也就是html里面的form。就是一种非常简单的格式:a=b&c=4...... appweb对http uri和form的解析都有它的成熟的方案,可以查看appweb的网页结构。我选择里面最简单的方式来实现Action HandlerAction H...
2019-06-17 18:58:50
466
原创 5——嵌入式WebServer的移植——appweb对json的支持——最后一篇
刚刚收获了一个赞,所以才写这最后一篇。appweb对json这种应用最广的网络协议自然有支持,无论是解析还是拼装,我就大概写一下。解析/** Get a request param @description Get the value of a named request param. Form variables are define via www-urlencode...
2019-06-17 18:58:27
412
原创 ffmpeg/VLC连接rtmp视频断开的一个原因
问题这几天解决了一个问题。问题是这样的,用ffmpeg向我做的rtmp server请求rtmp视频,99%的情况视频会在10秒钟内断开。ffmpeg会报一个mismatch的错误。打印是这样的:RTMP packet size mismatch %d != %d。在ffmpeg代码中是在rtmp_packet_read_one_chunk接口中,前后两包所在帧的尺寸不匹配,需要断开。...
2019-05-27 09:33:08
4478
8
原创 感到压力
本周阅读量突破了6000,从5000到6000的这1000完全是靠之前文章的阅读量叠加上去的。这周,甚至过去一多半的5月只写了一篇文章。这段时间多少有些懈怠,各人状态也并不是很好。肯定是要早日调整过来继续向前的,年初定下的学习内核和网络的目标一直记得,每天都会告诉自己还有很多东西要学习,书要坚持看。已经写了40篇原创文章,最近总是感觉质量太差,不够详细,不够清晰,没有用心准备......质量这...
2019-05-17 17:42:35
103
原创 大规模回调函数(函数指针)的一种实现方法
/** * 这是今天看到的一种写法,以前没有注意,今天其他 * 需求又看了一下,有点感触,精简一下分享出来。 * * register和call里面的while循环是此方法的精髓。 * 同一个id可以有很多个不同的注册函数, * 这些函数通过register中的while循环添加到链表中, * 又通过call中的while循环一个一个的调用。 * * 在复杂重复逻辑的地方用...
2019-05-15 16:33:49
145
原创 readelf——2—— -h --file-header Display the ELF file header
-h显示文件头应该是最简单的一个参数,我想没有之一了,只有下面这一点点的输出:ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's co...
2019-04-16 20:54:51
183
原创 readelf——1——环境搭建(编译)
上一个阶段翻译完了man elf,下面准备学习一下readelf,addr2lime,objdump等elf相关工具。之所以从readelf入手,是因为我感觉它最合适吧,原因也不清楚,因为哪个工具我都谈不上精通,选择一个马上行动才是最重要的。学习readelf,当然要知道它是从哪里来的。不是这个计划我真的不知道它们这些神秘的神器是来自哪里,linux内核是没有它们源码的。它们都是来自binut...
2019-04-16 20:40:46
561
H265(ffmpeg_and_nginx-rtmp).7z
2020-05-20
vim-plugins.zip
2020-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人