当前位置:网站首页>李迟2022年7月工作生活总结
李迟2022年7月工作生活总结
2022-08-01 04:22:00 【李迟】
本文为 2022 年 7 月工作生活总结。
研发编码
近来编码,基本都是业务、自动化测试相关的,在写代码时,主要考虑便捷性,快速出结果。性能方面不怎么考虑。像写C++,如果没有什么特殊的要求,字符串都是用string
类型,涉及格式化,则还是用数组,结合sprintf
,但最后还是用string
,因为组装比较方便。另一方面,也不怎么纠结字节大小,一般数字用int
存储,也不考虑深拷贝还是浅拷贝,原则就是,怎么写代码快就怎么来。像实现web服务器,对外提供接口,优先考虑 golang,解析json文件亦然。
C++
某个txt文件,使用=
分割字段和值,需读取解析出来。使用了C++的getline
函数,但当文件格式为\r\n
结束时,会出错,会把\r
当成普通字符读取,导致值错乱,而结束符为\n
时正常。为了使用那套代码,在读取一行字符串时,判断最后一字符,如果为\r
则删除。
int readInputFile(std::string filename)
{
std::string str;
std::ifstream ifs1(filename);
if (!ifs1.is_open())
{
printf("open [%s] failed: %s\n", filename.c_str(), strerror(errno));
return -1;
}
while (getline(ifs1, str))
{
if ((int)str.size() == 0 || str.at(0) == '[' || str.at(0) == ';' || str.at(0) == '#')
continue;
if (str.at((int)str.size()-1) == 0x0d) str.pop_back();
std::vector<std::string> linestr = splitString(str, "=");
int len = (int)linestr.size();
if (len != 2)
{
continue;
}
std::string key;
std::string value;
key = linestr[0];
value = linestr[1];
if (key.compare("foo") == 0)
{
printf("foo = [%s]\n", value.c_str());
}
// ... 其它字段
}
return 0;
}
go
某工程需要使用测试数据,但又不想直接在代码中固定。可在指定目录使用特殊的文件名称以作区别,随机读取其中一个作为测试用例数据。思路:
- 先获取符合要求的文件数量N;
- 再从[0, N)中取一随机数,得到某个文件的索引,使用包
math/rand
即可; - 再读取该文件。
如此一来,不用再修改代码,而是添加不同测试用例文件即可达到目的。
func CmdCmd() {
fmt.Println("test...")
fmt.Printf("file: %v\n", getTestFileData("postcase_"))
fmt.Printf("file: %v\n", getTestFileData("getcast_"))
fmt.Printf("file: %v\n", getTestFileData("update_"))
}
// 固定测试目录
var testdata = "testdata"
// 获取指定目录N个指定文件格式中的随机一个,返回内容
func getTestFileData(patten string) (ret string) {
ret = ""
// 获取目录下所有符合的文件数量
files, err := com.GetAllFilesOneDir(testdata)
if err != nil {
return
}
var myfiles []string
for _, item := range files {
if strings.Contains(item, patten) {
myfiles = append(myfiles, item)
}
}
// 防止随机数函数小于0出错
if len(myfiles) == 0 {
return
}
// 随机一个
rand.Seed(time.Now().UnixNano())
randidx := rand.Intn(len(myfiles))
// fmt.Printf("files: %d %d %d\n", len(files), len(myfiles), randidx)
// 读取之
buffer, err := com.ReadFile(myfiles[randidx])
ret = string(buffer)
// ret = myfiles[randidx]
return
}
工作记录
在国产化工控机移植任务中,因为 onvif 视频播放有问题,最终定位到 gsoap 版本不兼容,于是重新编译,花了一定的时间。后机缘巧合下,拿到一台前前前前东家的相机进行测试,开机的LED灯状态没变化,依然是我设计的红灯、黄灯,绿灯的顺序,所幸还记得默认IP、默认账号,不需要额外的协助。离开那家公司时,大锤才三个月,现在他妹妹都两岁半了,时间过得真快。
主任工找了我一次,语重心长分享了编码、测试心得,并问我如何做好测试,如何管理代码,因为有个较重要较关键的工程要交接,——这也是主任担心的原因,我受宠若惊,也诚惶诚恐,如履薄冰,这是个挑战,也是个机遇。
生活记录
月初,网购了几种不同的蟑螂药,都一一试了,战果颇丰,清除几次后,半夜就没再见小强到处散步了。但不知道能坚持多久。
中旬,在大锤多次要求下,办了一张小区的游泳卡,共30次,但下个月底过期,所以周末又多了一个事:带大锤和大妞去游泳——当然现在更多的是玩水。
天气越来越热,用电量持续上升,但又不能天天呆家里,当然也不能长时间呆户外。某个周末全家去公园,天空时而放晴,时而下雨,看完荷花盛开,又爬小山坡听松涛阵阵,顺便找蝉壳和松果,让大锤大妞知道夏天的气息。
这段时间,看到新闻报道有较多负面的事:打人,取不出钱,篡改数据,烂尾,断供,停贷。我的不幸,是在去年利率处于较高(可能是最高)水平时买房。我的幸运,是当初没有在五象入手期房而是购买二手房、现在有份稳定的工作(虽然是外包,虽然工资延后近一个月发),所以现在有地方住,有钱交房贷。我和父母通话谈了这些事,父母说得最多的是没有多余的钱支持,但不用担忧他俩生活,管好我自己,孙子的钱不能太省。居安思危,我对工作的态度,可谓比家人还好,叫加班二话没有,叫搬东西二话不说,熬夜写代码是常事。
思想方面
互联网太泛了,聚集了不同的观点的人,可发表不同的看法。我关注但很少参与网上的事,目前我的重点是:努力工作写代码,顺便写点文章,偶尔看书提升自己,教育小孩,带小孩玩,买菜,做家务。人的精力有限,挑主要的做即可。
我在网上分享了软考的事,很人质疑,但没过多回复,因为没必要。如质疑证书真假,对我而言,能靠证书评职称或者有补贴就好,不用对外交待。如质疑技术,大可看写的文章和 github 的代码。如质疑我不懂带小孩,我也无须过多辩解和证明,小孩开心即可(当然不听话时该打还得打)。
业余研究
掘金平台上个月的日更活动得了全勤奖,共发表31篇文章,奖品在月末如期收到,大锤和大妞喝上新鲜果汁了,我的拖鞋码数也符合,后面整理些东西,和电饭煲一起寄回老家。
计划实现一个播放器,初步设想中,使用 Qt、ffmpeg、SDL编写,把以前写的YUV播放、H264裸码流播放、各种格式转换功能等加进去。目前迫切需要的是音视频分离,音视频截取功能。主要是要把下载的音乐、儿歌转成音频,减少小孩看手机的机会。
边栏推荐
- second uncle
- [Search topic] After reading the inevitable BFS solution to the shortest path problem
- 微软 Win10 照片磁贴后的又一“刺客”,谷歌 Chrome 浏览器将在新标签页展示用户照片
- 【愚公系列】2022年07月 Go教学课程 025-递归函数
- Advice given by experts with four years of development experience in Flutter tutorial
- 【 Make YOLO Great Again 】 YOLOv1 v7 full range with large parsing (Neck)
- FFmpeg 搭建本地屏幕录制环境
- PMP 项目资源管理
- Mysql中的数据类型和运算符
- ICML2022 | Deep Dive into Permutation-Sensitive Graph Neural Networks
猜你喜欢
随机推荐
FFmpeg 搭建本地屏幕录制环境
产品经理访谈 | 第五代验证码的创新与背景
[uniCloud] Application and Improvement of Cloud Objects
Take you to experience a type programming practice
干货!如何使用仪表构造SRv6-TE性能测试环境
safari浏览器怎么导入书签
typescript22-接口继承
深圳某游戏研发公司给每个工位都装监控,网友:堪比坐牢!
MLP neural network, GRNN neural network, SVM neural network and deep learning neural network compare and identify human health and non-health data
C# | 使用Json序列化对象时忽略只读的属性
One service layer needs to call the other two service layers to obtain data and assemble it into the final data. The data is all lists. How to design the cache?
云服务器下载安装mongo数据库并远程连接详细图文版本(全)
Weekly Summary (*67): Why not dare to express an opinion
Valentine's Day Romantic 3D Photo Wall [with source code]
PMP 项目沟通管理
MySQL modifies SQL statements to optimize performance
阿叶的目标
Input输入框光标在前输入后自动跳到最后面的bug
Error using ts-node
test