所有由罗佳(博主)发布的文章

[WebGL]使用javascript控制模型形变

此博文由一个话题引出,原话题是通过滑条控制页面上显示3D模型的某个部分,于是我就来尝试了一下。

由于Three.js我也已经2年没碰了,而且在项目里只用过一次,所以并不是很清楚它是否能通过本身的功能达到这个效果,甚至一开始我已经在想手搓点坐标来达到目标了。

但手搓点坐标实在太麻烦了一点,我就回到blender想看看通常用于控制形变的形态键是否可以导出来使用,然后发现确实可以,这样就方便了,只要控制形态键的数值就可以对模型的形态进行定量控制,以下是操作过程: 继续阅读[WebGL]使用javascript控制模型形变

自动裁剪nginx log

今天博客莫名其妙开始报数据库连接错误,重启了之后也还是一样,一看mysql日志,看来又是老问题,硬盘空间被占满了。

每次都要等到出问题了再来删日志实在太麻烦,查了一下nginx也没有自带缩减日志的功能,查到有用logrotate来自动分割和压缩日志的,不过我只是想简单地把日志文件缩小,能看到最近的日志就够了,所以还是自己写个脚本。

代码很简单,用tail命令把日志文件的最后20000行裁出来存到新文件,然后用新的日志文件替换旧文件,把这个脚本放到cron的daily目录中每日执行一次即可

cd nginx日志目录
tail -n 20000 -q access.log > access.log.new
mv access.log.new access.log
tail -n 20000 -q error.log > error.log.new
mv error.log.new error.log

这段脚本把access.log和error.log都裁剪了。

要注意的是这种办法虽然简单,但是如果在tail执行的时候nginx又向日志文件写入了新的内容,这部分内容可能会被丢弃,所以只能用于我这种简单场景,对于日志有严格保存需求的场景不能使用该方法,应该用logrotate。

[node.js]在redis上使用数据搜索

reids本身是一个基于键值对数据存储的内存数据库,也就是只能通过数据的key来获取数据项目,那么它自然也就没有任何数据搜索方面的功能,只能依靠一定规则生成的key来获取数据。

虽然它的本体是这样,但redis也提供了几个模块为其添加了一部分搜索功能的支持,并将这些模块整合为了redis-stack,官网介绍:https://redis.io/docs/stack/,我暂时还没测试它是否可以直接替代原本的redis实例,但就命令形式上来看,应该是兼容的。

本文是对于redis-stack官网上提供的node.js示例记录的笔记。

安装

redis-stack的安装我就不介绍了,直接从官网下载就好,或者使用docker之类的,本文只记录如何使用。

要在node.js中使用redis-stack的相关特性,我们需要redis-om模块,使用npm i redis-om安装进需要它的项目,关于该模块更详细的API介绍可以去其npm包页面上或者github仓库查看:https://github.com/redis/redis-om-node,不过要注意的是官方的示例中有些地方是错的,我会在下面对应的部分说明。 继续阅读[node.js]在redis上使用数据搜索

小米Mix2s修复距离传感器失灵

我的Mix2s不知道从什么时候开始出现了打电话时屏幕不灭,或者灭掉了之后又没法亮屏的问题,甚至还有打电话时有一定概率对方会完全听不见自己声音的情况,

原本我一直以为是刷的LineageOS和这硬件不太兼容,于是想着可能某次更新之后就解决了。

但我最近升了一个大版本之后发现这个问题依然存在,于是我网上查了几天,发现很多人都有这样的情况,而且和系统无关,全都有这种现象。

再仔细一查,发现似乎是因为距离传感器在长时间使用过程中被细小灰尘堵住了,导致它的超声波距离传感器灵敏度变差。

Mix2s的超声波距离传感器位于听筒两边,是从听筒的孔两边延伸出去的两条非常细的缝,长度大约各1厘米,用眼睛不太容易看出来,需要灯光位于一个特殊角度时你才可以发现听筒两边有一部分的缝比旁边要大一点点(如下图),用美工刀片是可以卡进去一点的。

修复方案那就是先用美工刀插进超声波缝,然后把里面固化的灰尘划出来,注意小心点别把听筒捅坏了,能划的灰都弄出来之后用能插得进缝的软毛刷狂捅一顿,再左右刷刷,尽量把能看到的灰都刷掉。

这样处理完之后距离传感器就可以恢复正常的感应距离了,也不那么容易出现卡在一个状态不变化的情况(但由于设计缺陷,某些情况下还是会有距离状态不变的问题,这个无法修复)

[SASS]指定import查找路径

本文为node包sass的使用笔记。

写这篇文章,是因为我碰到了引用node_modules目录中模块的scss文件的需求,但是它总是提示找不到: “Error: Can’t find stylesheet to import.”,于是我搜了搜,发现说是要在渲染参数中添加loadPaths数组来告诉sass去哪里找依赖文件,我在这个模块的typescript类型定义中也找到了这个参数名,但是我加上了之后并没有用,于是研究一番发现这个包使用的实际上并不是loadPaths,而是includePaths这个参数名,所以觉得有必要写篇笔记记录一下。

另外我发现有的解决方案中说可以在import的url前面加个~来表示这个文件在node_modules里,但我试了也没有用,这个特性似乎是webpack给sass引入的importer,所以单独使用sass的render api时此方式是不起作用的,如果使用的是sass-loader的话可以使用这个方法。

【佳佳拆解】台电幻影NP900C

这是之前买的台电幻影NP900C,三年质保,现在3年过了3个月就挂了,拆出来给大家看看。

我不知道这个板型是不是什么通用板型,反正我在淘宝上看到了一模一样的,带主控卖五十多块钱。

主控是慧荣SM2263XT,好像是AD的,在我尝试加焊闪存颗粒维修的时候,因为闪存不小心移位了一下,导致下面连锡了,然后一通电主控就炸了。

继续阅读【佳佳拆解】台电幻影NP900C

把3090塞进紧凑MATX机箱

上星期,我的系统盘(台电NP900C)用着用着就炸了,刚过保几个月就炸了,用量产工具检查了一下一个闪存颗粒失联了,数据恢复无望,还好里面只有系统和安装的软件,损失不大,尝试重新开卡当缓存用,现在重新买了个1TB的三星980Pro当系统盘用。

我猜测可能是因为直连CPU的m.2那个位置吸3090尾气太多,温度过高,又没有一个很好的风道散热,于是它迫不及待地热死了。

之前为了散热问题买了一个酷冷至尊Q500L,我标题说是MATX,但它其实也能放ATX主板,只是需要舍弃一些别的配置选项,本想把新的主板和显卡装进这个更扁的机箱,结果发现电源和显卡都太长,他俩的位置冲突了一点,电源是以前发过的长城巨龙,然后就放弃了,把这个机箱给了我的旧主板和cpu。

继续阅读把3090塞进紧凑MATX机箱

[Excel]根据身份证号码计算年龄

最近被迫大量使用excel,所以我也学了点它的函数用法,做点笔记

根据身份证号码计算年龄的使用场景应该挺多的,但我在网上始终没找到一个能得到最准确结果的答案,于是东拼西凑写了个

#以下公式需要把#以及后面的内容删除才可以使用,因为excel的公式并不存在注释语法
=FLOOR(		#把计算结果向下舍入,精度为1
	DATEDIF(	#计算日期差
		TEXT(	#把生日字符串格式化为日期
			MID("身份证号",7,8),#提取身份证的生日部分
			"0-00-00"
		),
		TODAY(),#获取今天的日期
		"M"	#以月为单位计算前两个参数的差值
	)/12,		#除以12变成年
1)

网上很多方法是直接计算两个日期之间的年差,没有考虑到过了生日才长一岁的问题,所以我计算的是月差,毕竟每年的月份是固定12个,那么只要用总月数除以12再舍掉小数就是正确的周岁结果了

[BiliBili]视频右键菜单工具(油猴脚本)

地址:https://gist.github.com/JiaJiaJiang/c54abe1227917af3d3825dfa098b9473

安装:在浏览器有tampermonkey插件的情况下,点上面链接里的RAW按钮安装

功能:

  • 右键视频变速按钮:添加新版播放器中被砍掉的右键菜单视频变速按钮
  • 跳过OP、ED快捷键:ctrl+左右键可以跳过一般op和ed长度的时间(1分30秒)
  • 右键截图按钮:点击后将当前视频画面完整截图并在新窗口中打开