手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表查看gouki的文章

MAC下让 sudo 使用指纹而不是密码

确实每次在终端下输入 sudo 运行命令的时候要输密码很麻烦,因为有不少时候会在中文模式下。比如 npm run dev ,在 mac 下,低于1024的端口要启动,都是要带 sudo 才 OK。虽然大多数情况下,项目都是会带上 port,但有极少数情况下是不带的。

 
这时候 会运行 sudo npm run dev 。然后因为一些其他原因,比如在其他地方 sudo n ( 或 sudo nvm) 切换了版本,当前的项目可能就要重启,有时候 sudo !!的时候 会让再输入密码,但是这种情况下,不少时候 都是在中文模式下。于是就想着是不是可以偷懒,直接用指纹,多方便~~~
 
网上找了些资料,大多数都是说修改一下 /etc/pam.d/sudo 文件,在 auth sufficint 前加一个 pam_tid.so 即可,于是直接 sudo vim 这个文件,加入了:auth       sufficient     pam_tid.so
保存的时候 会提示你这是一个 readyOnly 的文件,得 :wq! 强制保存。
 
然后再在终端运行 sudo ,就会弹出指纹确认框啦 。当然如果你这时候 点取消,则还是需要输入密码,其实只是按顺序一个个验证罢了。
 
参考:
1、https://zhuanlan.zhihu.com/p/31529925
2、https://www.imore.com/how-use-sudo-your-mac-touch-id
3、https://apple.stackexchange.com/questions/411497/pam-tid-so-asks-for-password-instead-of-requesting-for-fingerprint-when-docked
 
 
 
 

electron 打包注意事项(一)

 由于打包教程网上很多,我就不多说了。只说自己踩的一些坑吧

1、builder.json 中。files 节点里的内容,就是最终打包进 APP 的资源。所以,想打包的话就在这里指定。可以是文件和目录
2、main.js 中,涉及到路径的,尽量使用 app.getAppPath(),网上一些教程都是 path(__dirname,'../dist/index.html')之类的,记得换成 app.getAppPath(),同时 ../dist,换成和 appPath 对应的目录
3、因为是用 vite 打包的。base 节点,原来默认都是 / ,electron的话,如果用 / ,就是绝对路径了。记得换成 ./  的相对路径
4、打包的项目中,尽量不要 出现:location.href ,所有的跳转都通过 router.push({path:"/xxx"})
5、router,如果原来是用 createWebHistory 的,记得使用 Hash 的方式
6、request 请求的时候 ,请带上 baseURL(正确的 http 路径)。因为在 development 模式下,有 proxy 的时候 都是通过代理 访问,路径往往实际并不带域名。
7、js-cookie 这样的 cookie 操作类应该是没法用了,改换成 localStorage 吧。
---
先想到这么多记录一下,如果后续再想到,就继续开新篇记录
 

用 nodeenv 为不同的项目指定不同的 nodejs 版本

js 真是一个有意思的东西。node_modules 到处可见,而且目录还特别在,然后 node 12\14\16\18,现在都快20了。

于是就会出现一个情况,磁盘里有 N 个 JS 项目,各自基于不同的 node 版本。当然 node 有 n / nvm 等相应的工具。直接运行就可以切换相应的版本。但如果你想同时开发两个不同版本的项目,就有点麻烦了。这边目录先 n 18,然后 npm run ,再回到另一个目录 n 16 && npm run 。看起来没问题,各自都能跑。
可是如果现在 n18的项目需要杀进程重启。那就得再运行 n18,恢复成18,然后再 run .....
 
不是说其他语言没有这种情况,比如 PHP,其实也有很多版本,还有 Python。但 PHP 可以通过安装不同的 php 版本,再使用 nginx 进行反代就完事了。python 也有 virtualenv。而 JS 居然没有。
 
搜了下网络,突然发现了 nodeenv。居然是利用 virtualenv 的方法来维护多版本。nodeenv 的安装我就不细说了:pip install nodeenv 就行了。
 
在相应的目录下,运行一下:nodeenv --node=16.xx.x --with-npm {dir}。这样一个简单的方法就在 dir 目录下生成了一个环境版本。然后运行 . ./dir/env/active ,会发现命令行前面多了个括号(env) <---根据目录名来。
在这个目录下面,直接运行 node -v,你会发现这个目录下的 node 就是你刚才指定安装的版本。也因为是--with-npm,所以 npm run 就直接可用了。
 
一切就是这样的自然。
当然也不是没有缺点,比如,这个 env的目录会很大,毕竟一个 node / npm,都在里面。但,至少可以解决问题了

奇怪的发现最近几乎没有垃圾评论了

这真是一个奇怪的事情,以前垃圾评论非常多啊。难道是因为我用了 cf 的 dns的关系?连 https 都是从 cf 自动生成的。

感觉半个月了,居然没有一条垃圾评论。非常开心~
 
akismit 都不用装了。

exceljs的一些注意事项

 在使用 exceljs 进行导出的时候 。如果是全部自己写的代码那控制起来会比较方便。你 mergeCell 或者 splitRow,都没什么大问题,但要注意几点

1、时刻观察:worksheet._merges,因为在 mergeCell 的时候 已经合并过的表,是不能再次被合并的。会报错,这时候 可以用 getCell().model,看看是不是 master。如果是的话,可以先 unMergeSells()
2、在 mergeCells后,如果你有 insertRows 等类似的操作。只要影响到刚才 merge 过的单元格时,原来所有的 merge 都会被清空,这点要注意。
3、worksheet 可以设置冻结行和列,直接通过 worksheet.views,就可以定义 state:frozen,定义好左上角开始的坐标,然后定义 xSplit 和 ySplit 就行了。
 
更多的使用方法,还是看官方吧:https://github.com/exceljs/exceljs/blob/master/README_zh.md