本文为 2023 年 9 月工作生活总结。
某工程部署于alpine镜像,当初看上是因为其体积小,其它微服务,在250MB左右,但那个工程只用50MB。最近发现时间戳转换不正确。对于同一时间字符串转时间戳函数,在centos镜像和alpine镜像,得到的结果不同,相差8小时,这导致系统功能出错,本来应该是0点生效的,结果需等待8时方生效。花了些时间排查,未果,为不影响上线时间点,于是改成centos镜像,问题解决。后面使用Go和C++整合测试,发现Go转换是没有问题。
关于地图的事,一直不理解切片和经纬度之间的联系,请教了同事,同事说是有个公式,能从经纬度转得到切片的X、Y值,于是在网络搜索了一番。找了个实例来验证。
先在高德地图找一个真实的经纬度:
https://www.amap.com/regeo?lng=111.015295&lat=22.891922
通过下面的代码,可以找到对应的真实切片,查询:
http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x=3311&y=1780&z=12
转换js代码(代码来自网络,缩放等级12):
// 结果:test: x = 3311 y = 1780
// 经纬度转瓦片编号
function lon2tile(lon,zoom) {
return (Math.floor((lon+180)/360*Math.pow(2,zoom)));
}
function lat2tile(lat,zoom) {
return (Math.floor((1-Math.log(Math.tan(lat*Math.PI/180) + 1/Math.cos(lat*Math.PI/180))/Math.PI)/2 *Math.pow(2,zoom)));
}
// 瓦片编号转经纬度
function tile2long(x,z) {
return (x/Math.pow(2,z)*360-180);
}
function tile2lat(y,z) {
var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
}
function main()
{
var x = lon2tile(111.015295, 12);
var y = lat2tile(22.891922, 12);
console.log("tile test: x =", x, "y =", y);
}
main()
这个月,同事重新安装Kylin嵌入式版本,比桌面版少了一些功能。重新理了系统脚本,让其更合理。比如数据库TiDB,原来是在应用层启动脚本中进行的,现在改成service方式,再在应用层脚本中通过有无该进程判断是否已正常,然后再启动其它依赖数据库的程序。
由于之前啃了不少骨头,现在遇到的坑基本不是很大。
本月做的事,一个是音频,要安装play命令,在Kylin技术沟通群里专家,隔了一天才回复询问是什么环境,在此之前通过一些外部英文网站找到解决方案,连接网络情况下,执行命令apt-get install -y sox libsox-fmt-all
即可完成安装,播放几个wav音频正常,通过alsamixer
命令调节音量,正常。就如此简单。
另一个是时间同步,在嵌入式版本上,手动执行date -s
可看到预期结果,但再执行date
即失败,断网后,问题修复。最终发现是设置界面里,日期时间配置项默认是自动同步的,改为手动同步,或设置不存在的NTP服务器,可达到手动改时间目的。
趁磁盘被格式化之际,重新整理了残留下来的工作文档,再按类别分目录。比如:自己研发的内部工具,负责的工程代码,负责的事务,协助事务,问题排查,等。目前计划做一个类似mypkc
的目录,所有的资料及文档均放于此,像分析日志及大型文件,如压缩后,还是较大,则抽取所需部分存放,其它不要。考虑便捷性,基于markdown
管理。该目录会提交到远程仓库备份。
本来有个事务/项目一直是我跟着,上个月中旬开始至本月下旬,业主方那边没进一步消息(可能消息没到我这一level)。月底,领导询问另一同事关于此事的进度,原来业主方又提了些新的需求,这是之前专家评审会上没提过的,至于原因未明,经评估,改动的系统较多。从此事看来,自身能力还是不行,需想办法提升。
中秋节下午,有同事在微信群里发一个和数据有关的问题,傍晚时分在家吃着饭,打电话给我,程序跑了近一个月没重启过,日志正常,查不出什么问题。当时没意识问题严重性,由于舟车劳顿,想早点睡,结果领导打电话问进展,再质问。接着副领导打电话问我有没有处理这个问题,接着联系值班同事查日志、重启,同时查代码改代码测代码打镜像导出包。从木星在东山出现,搞完一切再在微信汇报给领导时,土星已经快到西山了。
原来的小米手机,经过一个多月与店家周旋,最终免费换了一个屏幕。基本每周去问一次,回复都是没有货。目前有2台正常可用的手机了,刚好分主备。像支付宝领红包之类的操作,可以用2个手机操作,方便很多。
在放假前2天,终于候补成功中秋节当天的火车票,于是退了次日的票,当天回,妹夫到车站接,赶上了家里的晚饭,大锤大妞能和表姐表弟一起碰杯喝饮料。在家享受几天不用洗碗煮饭的日子。
大锤正式上学了,但从不愿意分享在学校学的,问也不说,或者只是没对我讲而已。最近的关系差了很多,之前要求他每天写几个字,但没几天就不干了,骂了几句,晚上就不再跟我睡。而他妈妈,基本每天都灌输一些注意事项,讲的都是一些我觉得不太好的事,比如被老师罚站,被同学打。在教育过程中,我试图插话,反而引发大人级别的日常争吵 。现在还是动不动就出现上火、病毒、生病、打人这些话,我担心一直如此,小孩心理会有问题。
大锤刚开始上学时,他妈妈早上起来煮早餐,坚持一周多,就把这个任务移交给我了。买了箱牛奶,每天一瓶,至于吃的东西,粥、面、包子、饺子来回换着。菜品是有些单调,但好过每天到外面买包子吃。
上个月至今,断续看了些三垣四象等天文资料和视频,也教大锤背北斗七星和二十八星宿名称,在手机和电脑下载了Stellarium软件,也带大锤看了若干次星星,就目前季节,在城市楼顶只能看到大角、织女、河鼓二、天津四这几个较亮的星星,但大锤更喜欢是拿着手机放大去看金星和土星。而大妞,因为某些原因,不给带着去楼顶。但在老家里,总算能带着他们到楼顶看星星了,只是月亮太亮,不合适在楼顶睡觉,做不到“卧看牵牛织女星”。今年,完成部分的带娃任务,去了科技馆,博物馆、图书馆,看了日落和星星。
最近终于下了一些决心,把我的个人文章重新整理。最早的文章还是大学没毕业时写的,年代久远,历史遗留问题较多,只能按需整理,当前最大问题是分类不合理,同一个技术点,会被分到不同的目录里,回溯麻烦。或许年龄见长,要研究的技术方面太多。像数据库,接触了mysql、oracle、clickhouse、tidb,有的涉及到用docker部署,有的涉及修改源码或修改配置或写测试程序,所以要分到不同的目录。像nginx,涉及到docker部署,涉及高可用,一些事务也用到nginx做协助。诸如此类。
已完成了账单json的导入到sqlite3数据库功能,后续研究怎么写前端页面。前段时间,通过某些手段方法,获取到了我在那个APP的账本分类,账户信息以及从2010年至今的记账明细,虽然从网页上获取较麻烦,较花时间,但终究也能全部下载完。不过遇到一个严重问题,没有按账户记录的明细,本来可以通过记账明细推导,因历史原因,有部分账户在不同时期被手工重置金额且无法获取。目前能想到的办法是在APP中查询,手动记录,再导入数据库。
八月既望于二楼阳台,望月写。