本文为 2024年9月工作生活总结。
研发编码
vuepress构建的几个问题
某vuepress项目,是我在3年多以前自行构想自行着手搞的,主要用于将一些常用的数据文件(markdown样式)渲染成html网页文件,在自建服务程序里开启访问。没什么技术难度,但胜在方便用。不过因为对node有一种抗拒感,且node_modules
深似海,涉及太多组件,去年开始无法构建,于是不再更新,但近期有同事反馈网页数据不正常,于是抽时间解决之。
问题1:执行vuepress build
提示错误:
{
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
原因:组件的openssl和node版本的不一致。
解决办法:在package.json文件里,修改构建脚本,核心语句如下:
"build": "set NODE_OPTIONS=--openssl-legacy-provider && vuepress build",
问题2:
[BABEL] Note: The code generator has deoptimised the styling of E:\project\golang_test\vuepress-pkc\XXX.md as it exceeds the max of 500KB.
原因:md文件内容体积超过500KB。
解决办法:
一说在项目的.babelrc
文件添加:
{
"compact": false
}
添加后,警告依然,未能解决。
问题3:
<--- Last few GCs --->
[15060:00000231B5A3CF90] 2167010 ms: Scavenge 4091.7 (4132.3) -> 4091.5 (4133.3) MB, 9.48 / 0.00 ms (average mu = 0.233, current mu = 0.284) allocation failure;
<--- JS stacktrace --->
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 00007FF668303CEF node::SetCppgcReference+15695
2: 00007FF66827E606 EVP_MD_meth_get_input_blocksize+78566
3: 00007FF6682803F1 EVP_MD_meth_get_input_blocksize+86225
4: 00007FF668CEA191 v8::Isolate::ReportExternalAllocationLimitReached+65
5: 00007FF668CD3928 v8::Function::Experimental_IsNopFunction+1336
6: 00007FF668B35190 v8::Platform::SystemClockTimeMillis+659552
7: 00007FF668B41413 v8::Platform::SystemClockTimeMillis+709347
8: 00007FF668B3ED74 v8::Platform::SystemClockTimeMillis+699460
9: 00007FF668B31EB0 v8::Platform::SystemClockTimeMillis+646528
10: 00007FF668B4752A v8::Platform::SystemClockTimeMillis+734202
11: 00007FF668B47DA7 v8::Platform::SystemClockTimeMillis+736375
12: 00007FF668B566CF v8::Platform::SystemClockTimeMillis+796063
13: 00007FF668816C95 v8::CodeEvent::GetFunctionName+116773
14: 00007FF608D5AAFA
error Command failed with exit code 134.
方法:
# 在项目中运行
npm install increase-memory-limit
npm install --save cross-env
在package.json
脚本中添加内存限定:
"scripts": {
...
"fix-memory-limit": "cross-env LIMIT=12192 increase-memory-limit"
},
添加后,在Linux下执行,提示:
ReferenceError: GA_ID is not defined
at theme_enhanceApp (server-bundle.js:9305:16)
最终未能解决问题。
切换淘宝镜像
某次在linux安装执行命令npm install yarn
,提示:
npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/yarn failed, reason: certificate has expired
经查,是淘宝镜像地址证书过期,需切换新地址,命令如下:
npm config set registry https://registry.npmmirror.com
看重启命令
某天临近下班,现场电话向同事反馈问题,说服务器重启了,同事让我查一下。经查,服务器在不久前的确重启了,但是什么原因,谁重启的,无法从系统信息中知晓。
期间,学到了几个命令。使用who -b
、last reboot
查看上次重启的时间,示例如下:
# who -b
系统引导 2024-09-09 07:43
# last reboot
reboot system boot 3.10.0-1160.el7. Mon Sep 9 07:43 - 15:23 (21+07:40)
wtmp begins Thu Aug 29 08:04:18 2024
领导找谈话
有天下午,领导找我和另一个同事谈话。主要内容概括起来,有几点:做事靠谱、有想法、主动做事 、持续学习。这些要求,我自认做得不差。不过,有些事不是单靠自己能做成的,哪怕是已经完成,有时没有其它方面的配合和推动,也是无济于事的。不管怎样,我觉得那些要求,的确是值得记住并实践的。
一个Golang工程的重构思考
某Golang工程,运维手段比较原始:查日志。对于一些性能指标或关键事件,没有记录。比如软件运行时长、IP地址、处理耗时、何时何处发生错误,等,都需要记录。再将记录做成外部请求接口方式,方便跨主机访问。这些内容,上峰没有提出过,只是自己在运维过程中觉得有必要做的。由于当初设计工程时,没有考虑得周详,有些地方没有做模块化处理,导致现在添加功能会出现全局变量。而如果重构,又怕产生大影响------今年已经有几年生产事故挂我头上了。
在上线前,应该进行回归测试,尴尬的是,我所负责的东西,没有测试人员,靠自己测试。除工程自身外,还需要考虑如何测试,如何高效率地测试。
生活记录
流水账
这个月体重增长势头已经抑制了。只有管住嘴,迈开腿,相信体重会下降的,对于几时能看到效果,就看缘分了。
月底,因为大锤的一些事,又吵架了。已经买了的车票,退了。我自己一个人回去,也不好。于是跟父母说国庆不回家。