易栈网-膘叔

浏览模式: 标准 | 列表 | 图文
MAC下让 sudo 使用指纹而不是密码

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 打包注意事项(一)

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 版本

用 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的一些注意事项

在使用 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
M9折腾记

M9折腾记

买了个 M8s 和 M9,M8s 买的比较早,还是 N6000,于是在上面装了个 sentry,准备替换掉我在轻量服务器上装的这个玩意。但发现有点小浪费,再加上sentry 是直接通过 install.sh 来安装的。很多东西没办法更好的处理,于是先买了台 M9,上了32G 内存,准备用来跑跑虚拟器啥的。考虑在上面再安装一下这个 sentry,将 M8s 和我的轻量解放出来。

先是安装了 ubuntu,有时候 你不得不承认 ubuntu 的兼容性是真的好。所有的驱动都认出来了。为什么这么说呢?因为我后面是想尝试用 omv 来处理,毕竟我还要管理 docker 之类的,用这个会更方便。而且我还特地买了1T 的硬盘。

结果 。。。omv 的安装在第一步就卡住了,网卡认不出。eth 不行,wifi 也不行。。从网上下了驱动。也没认出来。一下子傻眼了,在写的时候 ,我已经在下载 unraid 了。如果它能够跑出来,那我后面就改用 unraid 了。反正 unraid 也不贵。

说白了,就是给这个5-1找点事情做做

如何自动更新 SSL 证书?

如何自动更新 SSL 证书?

听起来好象没问题,因为 acme.sh 就是在做这样的事情,但事实上呢,经常失败。经常有客户跑过来说,怎么网站打不开了?所以找了个检查 SSL 证书的命令,然后放在 console 里跑一下,如果证书在7天内过期就使用 acme.sh 脚本运行一次。

检测的 ssl 命令是:echo -n Q | openssl s_client -servername blog.neatcn.com -connect blog.neatcn.com:443 | openssl x509 -dates -noout,可以看到类似这样的结果 :
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = yzhan.com
verify return:1
DONE
notBefore=Mar 25 05:19:28 2023 GMT
notAfter=Jun 23 05:19:27 2023 GMT
简点区分一下数据,notAfter=后的时间就是过期时间,在 laravel 下面就方便了。 Carbon类比较一下(PHP 的 DateTime 类也能比较)。laravel 10开始,new Process()还能多进程。写个简单的脚本,加到 crontab,就完事了。
苹果M1笔记本如何安装 Python2

苹果M1笔记本如何安装 Python2

为什么需要 python2,还不是因为 node_sass 需要用到它。没有它,npm installF 得了无法执行而直接报错。但苹果从 M1开始就不再默认带上 Python2,而是默认3.x(好象是3.9)。

那怎么办呢?
先安装个 pyenv,再用 pyenv 安装2.7
1、brew install pyenv
2、arch -x86_64 pyenv install 2.7.18
3、把路径加入到配置文件:export PATH="$(pyenv root)/shims:${PATH}"
Over。如果是非 M1的话,直接 pyenv install 2.7.18即可
如何解决 “0308010c:digital envelope routines::unsupported” 的错误

如何解决 “0308010c:digital envelope routines::unsupported” 的错误

在使用webpack或者vue-service-cli 的时候,启动时出现:“0308010c:digital envelope routines::unsupported” 的错误,这时候应该怎么解决呢?

这个错误的原因可能有两个:
1、 你没有使用 Node JS 的 LTS(长期支持)版本或者是版本太新了。我现在我使用的是 Node 18.0.0。所以我直接npm -g add n ,安装了一个多版本的管理工具,切到16后正常了
2、将 --openssl-legacy-provider 传递给 Webpack 或 CLI 工具 例如,在 React 应用程序中,你可以将 --openssl-legacy-provider 传递给启动脚本,如 "react-scripts --openssl-legacy-provider start"。
2是网上查的资料,因为我1就直接解决了,所以2没用上,如果你方法1没有解决问题,那可以尝试方法2