
代码工人的仓库
李迟
李迟,男,已婚,来自岑山溪水之地,家住一垌之尾。毕业于桂林电子科技大学三院1专业。嵌入式软件工程师,摄影师,金融学者,历史家,科学哲学爱好者,社会问题研究者。别号水田居士,木草山人。爱好广泛,精通甚少。古文、诗词、文学、小说、武侠、经济、社会等无所不涉。目前主要混迹于显示器、鼠标、键盘之间。于代码及兴趣之事中有所得,与好友谈之一二,足够了。
-
原创 c++命令行解析库cmdline使用
之前用过 getopt 函数对主函数参数进行解析,后发现了 cmdline 这个库——说是库,实际只是一个头文件,非常方便集成到程序中。本文对此库进行简单测试。2020-12-31 20:41:1984
0
-
原创 yaml文件解析:golang篇
本文使用 golang 库 viper 对 yaml 文件进行解析。2020-12-31 20:42:5395
0
-
原创 yaml文件解析:nodejs篇
本文使用 nodejs 的 yamljs 库对 yaml 文件进行解析。2020-12-31 20:42:26131
2
-
原创 yaml文件解析:c++篇
本文使用 C++ 库 yaml-cpp 对 yaml 文件进行解析。2020-12-31 20:41:57149
0
-
原创 golang和C的输出格式化对齐
写代码那么多年,对代码,输出日志有一种近似洁癖的要求。对于不整齐、不整洁、命名混乱的代码,真心看不下去,总会想办法去整顿——或用工具,或人工。曾因这个原因耽误时间,虽然想着改,但一时也改不了多少。今年唯一例外的,应该我手上维护的那套98年开始写的 delphi 工程。 本文从小处着手,单说一些输出日志的对齐方法。2020-12-27 14:37:1372
0
-
原创 GCC弱符号的一个应用示例
GCC对C/C++做了很多扩展,很多基于Linux环境的开源项目都会使用。本文介绍一下弱符号的应用。2016-02-29 21:36:10967
0
-
原创 linux时区的几个代码片段
这两天学习了Linux环境下的时区方面的东西。做一些小笔记,也包括代码方面。2016-01-23 15:37:531358
0
-
原创 使用STL去除std::vector自定义结构体重复项
最近搞了一个小东西要去除一个vector中重复的项。是这样的:我用组播搜索设备,得到设备IP信息、版本号信息,等,但有时会接收到多个相同IP设备的信息,因此要过滤掉重复的IP。我使用vector存储每台设备信息,包括IP、版本号,因此需要使用结构体。另外,要对这些设备IP进行排序,让其IP顺序排列。2016-06-09 22:31:125176
3
-
原创 stl::vector排序二例
stl提供了sort排序,针对vector可以很方便地进行指定的排序。本文给出两个例子,一个是针对结构体(类)某个成员的排序;另一个针对分辨率排序。一个复杂的结构体(类)存在着大量的成员,使用vector存储,假如要依据某一成员进行排序,则可以重载“”、“==”,然后使用sort排序。下面的代码根据foobar类中的token关键字排序:2016-06-21 22:50:17496
0
-
原创 由子网掩码字符串转换成长度前缀的代码示例
最近在进行的ONVIF任务,有一个接口是设置IP的,叫SetNetworkInterfaces,可以设置包括网络速率、双工、自动协商等功能,还可以改IP。但里面有子网掩码字段,只有一个叫PrefixLenght的,直译为前缀长度。2016-01-24 18:54:267291
0
-
原创 visca协议及其实现的简单认识
最近在搞visca协议,在这里写写,算是个记录。从题2014-06-30 14:09:016492
7
-
原创 pelco协议及其实现的简单认识
在搞visca的同时顺便也搞了pelco。这里再做个笔记。pelco,中文翻译为“”2014-07-03 13:50:495881
1
-
原创 用户交互输入--mtd-utils代码一例
用户交互输入示例,来自 typedef int bool;#define true 1#define false 0/** * prompt the user for confirmation */static inline int prompt(const char *msg, int def){ char *line = NULL; size_t l2014-06-03 08:34:22892
0
-
原创 pelco-d协议数据解析示例
前段时间写了有关pelco协议的一些笔记,后来,有个小模块是接收pelco格式的数据,然后解析出是什么命令,于是又写了个简单的解析函数。这个函数没什么技术含量。主要思路:1、逐字节解析,保证每一字节都处理到;2、找到0xff,此为命令头;3、找到命令结束字符,方法是根据pelco命令组装的算法,——其实就是当某一字节的值是前面几个的校验和就结束,有一点要校验和正确但长度不符合p2014-08-14 21:57:414247
0
-
原创 关于svn、git生成版本号脚本的再次改进
自从很久之前写了《SVN、GIT生成版本号》和《关于svn、git生成版本号脚本的改进》两篇文章后,自以为不会再修改了,结果却不如人意,里面的的脚本还是有bug,现在又要进行再次的修改。这个bug隐藏的比较深,而且要在一定场合下才出现。——其实最主要还是git和svn的判断方法有问题。在低版本的svn(比如1.6),受控工程的所有目录下都会有.svn目录。而在高版本的svn中(比如1.8),只...2014-09-20 00:12:581017
0
-
原创 心血来潮,小试c++11
今天心血来潮,尝试玩一下c++11。话说这个标准都发布好几年了,c++14都出来了,c++17也快生出来了,还是赶紧摸一下c++11。本文使用实际业余工程使用到的代码片段,参考文章《stl::vector排序二例》。2016-08-02 21:59:39443
0
-
原创 python实现查询mac号对应的OUI厂商信息
心血来潮,突然想到做一个根据MAC号查询对应厂商信息的程序。方法无外几种:2016-09-11 21:27:274278
1
-
原创 Linux平台音频测试程序
一个音频测试程序,录音并播放。代码如下:2017-05-31 18:28:512982
9
-
原创 Linux系统无线网络抓包程序(分析手机WIFI MAC地址)
前面讲述了使用tcpdump和wireshark抓WIFI包,但这只是使用工具的层面,再深一层则是自己写代码实现这个功能。本文在前面文章《Linux系统有线网络抓包程序》的基础上添加实现无线网络的抓包功能。2016-11-01 23:10:246003
14
-
原创 双向链表list.h升序排序
前一篇文章《整理一个双向链表list.h》介绍了自实现的双向链表list.h,在Linux内核中,常见的是维护全局链表(如i2c板级有一个全局链表),基本上都是在尾部插入、模块退出时删除,不会涉及到链表中间插入、删除,——这也让我一度认为该链表的实现只具备这些“少许”功能。当然,如果抛开内核场合,其它场合可能会需要到更多的功能,所以前文中做了介绍。这里就说一下如何将链表做成升序(或降序)排列的。2016-10-20 12:57:371336
0
-
原创 整理一个双向链表list.h
一直觉得Linux内核的双向链表是十分巧妙的设计,它的实现方式与数据结构课程上讲的完全不同。内核list实现依赖于GCC的扩展,在其它平台不一定能正常运行。在内核中,一般是结构体中使用链表成员,而不是像数据结构课那样在链表结构体中使用数据域。C++中将lsit作为模板,能应用于各种类型数据上,但Linux内核无法使用,因而使用其它手段实现,方便扩展。事实上,内核大量结构体都使用了list。网上有很多关于此方面的介绍,就不展开说了。2016-10-19 12:55:391153
0
-
原创 Linux GNU C结构体数组初始化示例
突然心血来潮,想学习一下结构体数组的初始化方面的知识。GCC特有的数组初始化的风格:// 数组赋值另一种方式,但只在gcc下编译通过,g++不能enum { AAA = 0, BBB, CCC, DDD,};// 只对感兴趣的索引值进行赋值,而不管下标的顺序static const int regs[] = { [DDD] = 250, [CCC] ...2016-10-13 12:58:566422
2
-
原创 我的一些学习经验:视频流媒体方面
刚来公司还没转正时,接触视频方面的第一个任务是将一系列JPEG图片封装为AVI视频文件。当时我没有接触过FFMPEG,而且也不知道公司项目代码上能不能用第三方库,所以就自己看AVI格式文档,自己写代码组装。通过这个任务,对AVI格式有了了解,另外第一次将数据结构中的双向链表应用到实际工作中。完成后交付给其它部门的同事。至于到底有没有使用我写的模块,就不得而知了。2016-10-16 14:17:203113
0
-
原创 Linux系统有线网络抓包程序
今天心血来潮,玩一玩linux抓包。思路如下:1、使用raw socket接收网络数据;2、先解析以太帧头,得到是IP还是ARP包;3、再解析IP头,知道是UDP还是TCP;4、再解析UDP、TCP,得到IP地址、端口号等信息。2016-09-06 23:16:461866
0
-
原创 Linux C代码实现主函数参数选项解析
软件开发中难免会对命令行输入参数做解析、判断。本文给出2个此方面的示例。2016-08-21 16:38:503114
0
-
原创 Linux C代码实现读取配置文件示例
最近在看hostapd,该程序使用了conf配置文件,本文参考hostapd代码抽取出读取配置文件的示例,由于配置选项和业务密切相关,实际使用中仍需要做修改。2016-08-21 17:00:493507
0
-
原创 寄存器位域、位操作等示例
#include /*测试结果:struct testregister_value: 0x0000feadenable: 1 type: 6 id: a value: feunion testregister_value: 0x0000feadenable: 0 type: 6 id: a value: fe*//**虚拟的寄存器,各字段:0: enable1~3:2014-06-07 11:02:312600
0
-
原创 一个while的小小问题
最终结果i不为0,而是-1int main(void){ int i = 10; while (i--) { printf("hello: %d\n", i); } if (i == 0) { printf("last-----------i == 0\n"); } else {2014-05-29 12:55:51766
0
-
原创 SVN、GIT生成版本号
SVN生成编译版本号脚本:# file name: svn_local_ver_build.sh#!/bin/bash VER_FILE=version.hLOCALVER=`svn info | cat -n | awk '{if($1==5)print $3}'`echo "LOCALVER:" $LOCALVERVER=r$LOCALVER2012-07-31 13:42:364686
0
-
原创 求同心矩阵
背景:在CSDN论坛上看到的题目,写了出来。3的同心矩阵形式如下:3 3 3 3 3 3 33 2 2 2 2 2 33 2 1 1 1 2 33 2 1 0 1 2 33 2 1 1 1 2 33 2 2 2 2 2 33 3 3 3 3 3 3这个矩阵从最中间的数(0)开始,依次被后一个数包围。矩阵的行数和列数相同,为2 * x + 1,其中x就2011-11-02 20:48:381259
0
-
原创 在图片中添加自己的文本信息(PNG及JPEG格式)
背景:PNG格式和JPEG格式的图片都有一个表示文本信息的段,这些信息可以是任意的字符串,或者版权信息,或者工作室信息,或者其它的。本文的程序是在原始图片中添加这个段的信息。由于比较简单,不多说。对比图片格式,小弟学习过一段时间,由于工作原因,对JPEG了解深一些,但只限于格式,像JPEG的压缩算法还没学习到。代码如下:/****************************2011-11-13 11:29:221655
0
-
原创 linux下串口程序测试
linux平台下的串口程序网上比比皆是,这里是自己参考资料写的。2011-01-11 13:37:00759
2
-
原创 C宏的一个技巧:可变参数
前天晚上,和一个朋友天南地北地聊一些技术问题。无意中给我一个网址http://www.nongnu.org。无意中我发现了GNU Coding Standards(现在的我对一些专业名词非常敏感),于是不由自主地点击了进去。结果让我大开眼界增长了见识。这些单表一处:错误信息格式及2011-02-28 16:16:00658
0
-
原创 求前N个质数之和
求前N个质数之和,不知正确不正确。 /********************************************** 求前N个质数之和 $ ./a.out 2 3 5 7 11 13 17 sum: 58 **********************************************/#include #include /* 素数 */int2011-07-09 16:38:39940
0
-
原创 李迟2011年4月知识积累
李迟2011年4月知识积累2011-05-05 14:53:00612
0
-
原创 李迟2011年3月代码积累
2011年3月代码积累2011-04-06 18:41:00728
0
-
原创 Linux下弹出CDROM的程序(参考网上程序)
Linux下弹出CDROM的程序2011-01-13 14:07:00747
1
-
原创 一个简单的“ls -al”实现(其实网上已经有很多了)
显示目录文件相关信息的程序,效果如shell命令“ls -al”一样。2011-01-06 15:44:001441
2
-
原创 [郑重声明]木草山人编码的习惯
写代码如同写文章,每人风格不同。在此特别说明山人的编码风格及习惯,免得与他人混到一起了。2010-12-21 10:19:00604
0
-
原创 [编程手记小技巧]自定义调试信息宏及gcc技巧
本文讲述了调试信息“函数”的定义及使用,此外,还讲述了gcc编译器-D选项的用法。2010-12-15 11:08:002314
0