李迟2022年5月工作生活总结
Posted 李迟
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了李迟2022年5月工作生活总结相关的知识,希望对你有一定的参考价值。
本文为 2022 年 5 月工作生活总结。
研发编码
Linux
查看gcc支持的默认宏定义(以不同平台的linux系统为例):
$ gcc -E -dM - </dev/null
重要的:
#define __unix__ 1
#define unix 1
#define __unix 1
#define __linux 1
#define __linux__ 1
#define linux 1
#define __INT32_MAX__ 2147483647
#define __gnu_linux__ 1
#define __GNUC__ 4
64位 arm:
#define __SIZEOF_LONG_DOUBLE__ 16
#define __SIZEOF_SIZE_T__ 8
#define __INTPTR_TYPE__ long int
#define __UINT16_TYPE__ short unsigned int
#define __SIZE_TYPE__ long unsigned int
#define __SIZEOF_LONG_LONG__ 8
#define __UINT64_C(c) c ## UL
#define __INT16_MAX__ 32767
#define __UINT64_MAX__ 18446744073709551615UL
#define __aarch64__ 1
#define __AARCH64EL__ 1
32位x86:
#define i386 1
#define __SIZEOF_SIZE_T__ 4
#define __INTPTR_TYPE__ int
#define __UINT16_TYPE__ short unsigned int
#define __SIZE_TYPE__ unsigned int
#define __UINT32_TYPE__ unsigned int
#define __SIZEOF_LONG_LONG__ 8
#define __INT8_MAX__ 127
#define __UINT8_MAX__ 255
#define __INT16_MAX__ 32767
#define __UINT16_MAX__ 65535
#define __INT32_MAX__ 2147483647
#define __UINT32_MAX__ 4294967295U
#define __INT64_MAX__ 9223372036854775807L
#define __UINT64_MAX__ 18446744073709551615UL
64位 x86:
#define __x86_64 1
#define __amd64 1
#define __SIZEOF_SIZE_T__ 8
#define __INTPTR_TYPE__ long int
#define __UINT16_TYPE__ short unsigned int
#define __SIZE_TYPE__ long unsigned int
#define __UINT32_TYPE__ unsigned int
#define __SIZEOF_LONG_LONG__ 8
小结:
- INT16、INT32、INT64等类型的最大值相同,从名称上就能知道已经确认了其值的范围。
- size_t在不同位数系统中的值不同。
- 不同平台,可以用不同的宏区别。比如 64 位 arm 系统上可以用宏
__aarch64__
。
数据库
某板子上已安装mysqld且服务已启动,且root无密码。新加普通用户latelee,密码为123456password
,同时授权较高权限,再创建数据库latelee_db
。实操如下:
mysql -u root
flush privileges;
CREATE USER 'latelee'@'%' IDENTIFIED BY '123456password';
grant all privileges on *.* to 'latelee'@'%' identified by '123456password' with grant option;
CREATE DATABASE latelee_db;
最后测试:
mysql -ulatelee -p123456password
oracle创建视图:
create or replace view xxx_view
as
select 语句
示例:
create or replace view xxx_view
as
select t.version, t.a, t.b, t.c
from
mydb.foobar t
where
t.version in
(
'001',
'002'
)
查询时指定某些字段为固定值,比如某些情况下,需要将001版本改为000版本。
select '000' as version, t.a, t.b, t.c
from
mydb.foobar t
where
t.version in
(
'001'
)
Golang
Golang中,环境变量不能直接用$HOME
,需使用Getenv获取,示例:
file, err := os.Open(filepath.Join(os.Getenv("HOME"), ".ssh", "known_hosts"))
错误示例:
file = "$HOME/.ssh/known_hosts"
vuepress
很早前用 vuepress 做了一个内部分享平台,使用 docker 部署,web 服务器是自编的。今年重构了去年年底写的web网页工具,两者其实不是一个体系的,前者是静态网站,后者是工具的网页版本。将了方便使用,在网页工具合并该静态网站。对于gin而言,只需要添加一条路由即可,十分简单,如下:
router.StaticFS("/website", http.Dir("./dist"))
其中/website
为URL地址,dist
是 vuepress 生成的目录。
另外,还需要在 vuepress 配置文件.vuepress/config.js
中添加根目录字段base
,如下:
module.exports = (site) => (
title: "内部知识管理平台",
base: '/website/',
head: [
['link', rel: 'icon', href: '/bug.jpg' ],
],
// theme: 'vuepress-theme-reform',
ga: 'UA-xxx-1',//待修改
extendMarkdown: md =>
md.use(require("markdown-it-disable-url-encode"));
,
//...
)
但如此一样,原来的静态服务器就无法使用了,只能用 nginx 转发,在server
中设置如下:
location /website/
proxy_pass http://127.0.0.1:8080/;
后续考虑一下怎么用golang实现转发,之前研究的是基于json内容,较复杂。
时间溢出
集中一点时间,学习了无符号数的溢出。这里给出结论。对于计时、延时类的函数,记录时间戳的变量为无符号数。类型为unsinged,不能加范围限制,这是指平台最大者,如32位系统,使用的是32位无符号数,64位的系统则是64位无符号数。当变量数值溢出后,其值归0,但计时函数是正常的,不需要额外处理溢出情况。
其它思考
工作记录
这段时间又遇上疑难杂症,某32位系统的程序,运行某个版本提示:
ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
用了几个引擎查了几个论坛,还是不知道解决方案,因为这个提示是在系统动态库中出现,程序只是使用curl库,而且64位不会出现。放着几天后,因迭代又更新了点代码,运行却正常了。实在不知原因。
生活记录
关于过日子,有了点想法。日子是一天天过的,好的坏的,都会过去。我就在想着怎么把一天过好,这个“好”我并没有要求十分高。比如,有时我能坚持几个晚上到楼下跑2圈(就2圈,不多),做几个引体向上,但有时又懒得动。周末有时陪大锤去公园听涛声,有时骑电车看夕阳。有时忙起来,连续一周都坚持2、3点才睡,甚至试过4点睡觉。又时又是瞎忙,自认为浪费时间,特别是对于一些未知问题的猜测、验证。——所有这些,都是过日子,好像是有意义的,好像又是浑浑噩噩的。再细探下去就涉及哲学问题了。
大锤最近有了些进步,像睡觉前都要叠被子,会要求自己给自己洗澡,这些都是进步。就是不午睡,动不动闹别扭。大妞一直跟她妈妈送货,我陪的时间很少,连洗手都不愿意我帮了。
思想方面
不同的人,思维不同,各种观点不同,如能相处,实在是难得的缘分,一般来说相处原则是“求同存异”,但不是每个人都是这样想的。我不算敏感,不是很迁就,也有脾气。
比如备案,因为政策问题,我使用了十余年的域名不能再使用了,在处理中有些误操作(阿某云的方式变化比较大),询问客服,反反复复来来回回重复相同的话术,当时就有点上火了,当然到现在已经解决了,域名的事暂时完毕。
比如移某动,去年某营业员打电话给我妈,操着流利的普通话跟我妈介绍套餐,我妈强调“听不懂煲冬瓜”,但还是开通了,最低消费40元,而原来的套餐是18元。直到半个月前我才知道这个事,当晚就打电话投诉,开始我还客气一番,一是了解情况,二是换回原来的套餐,客服反反复复来来回回重复相同的话术,就是不说解决方案,当时火了,一直追着要具体的方案和具体的时间,但最后也只能说向上级反馈,一天内回复。最终有客服打电话给我妈,还是用流利的普通话,后又换了个客服,操着不流利的白话,总算有个阶段性结果:退还3个月的超额的话费。但月底查询,话费还没有到账。
业余研究
域名及邮箱
申请的域名latelee.cn
备案通过了,但由于使用了原来域名latelee.org
的邮箱,且已大量使用:CICD脚本、开源项目代码、日常沟通邮箱、github账号,支付小号,等。这是项麻烦的工程。
蓝牙
蓝牙方面,花了很多时间在研究抓包,但就是搞不定环境。至于一些外设,已经着手看mpu6050,计划利用板子的LED做一个重力感应的流水灯,让大锤玩一玩。
以上是关于李迟2022年5月工作生活总结的主要内容,如果未能解决你的问题,请参考以下文章