解决 VsCode pwsh终端环境变量不生效问题

我在系统的环境变量设置里,用户和系统中,都加入了ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/这个环境变量。 单独打开windows Terminal应用,使用 env | grep ELE 是能搜到我设置的环境变量的。但是在vscode中,这个环境变量不存在。 我尝试了以下几个方法 重启电脑,无效 配置"terminal.integrated.persistentSessionReviveProcess": "never", 然后重启电脑,无效 在终端直接执行code ., 在终端打开vscode, 依然无效 因此,我想起了之前配置的pwsh的配置文件。 可以使用code $PROFILE, 打开pwsh的配置文件。 然后再配置文件中设置环境变量, 之后重启vscode, 环境变量就正常能读取到了。 # 文件名 Microsoft.PowerShell_profile.ps1 $env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/" 参考 https://www.zhihu.com/question/266858097

2023-11-16 08:08:39 · 1 min · Eddie Wang

如何选择,汉王Clear7与文石Leaf3

购买选择 我的kindle pw4已经用了快三年了,机器性能有些不足,电池也有些不够用了。正逢双十一之际,我觉得可以买一个开放系统的电纸书来用用。 买开放系统的另一个原因是自从亚马逊退出中国后,我用微信读书比较多,也买了微信读书的会员。 开放系统基本上都是基于安卓系统定制的,可以选择的厂商比较多。 最终筛选下来,我选择了汉王clear7和文石leaf3, 我下单了两个,觉得先体验一下,然后在退一个。 然而用了不到两天之后,我还是决定把两个机器都给退了,继续用我的kindle pw4。 选择因素 就我个人而言,电子书最为重要的选择因素有以下三点。 显示效果: 说实在的,现在的电子书基本上都是carta1200、300ppi、冷暖光。基本上从显示效果上来说,各大厂家都是半斤八两。就我自己体验而言,我并没有发现汉王的显示效果和文石leaf3有何不同。 握持手感: 外观影响握持手感,外观一般分为两类,一类是就是平板设计,像kindle paperwhite系列。另一类就是书脊式设计,握持更舒适,像kindle os3, 汉王clear7之类的。 简洁系统: 电子书并不是手机,不需要太多的功能,功能太多反而成为累赘 稳定性: 点子产品难免被摔、或者淋水,对于这些意外情况,如果产品非常脆弱,那么很大可能会损失大笔的金额。 续航 文石的缺点 文石和汉王的两款产品,拿到手开机不到一小时,我就决定先退了文石。 原因有以下几点 显示效果文石和汉王差不多,没啥突出亮点 握持手感文石肯定比不过汉王的书脊式设计, 并且汉王更轻 文石的系统太复杂,设置太多,甚至还有个iphone类似的小白点设计,小白点点击之后展开很多图标,每个图标我都不知道做什么的 掉电速度,文石的电量肉眼可见的在不断减少 汉王的缺点 微信读书功能阉割, 这不是汉王的问题,而是微信读书自身的问题。例如书架页面,书籍只有一个排序的顺序,就是按照最近阅读的排序。而无法像ios或者安卓app一样能够按照阅读进度排序,另外也没有阅读时长分析的功能。 另外我也注意到,微信读书电纸书版,扫码登录的有效期是24小时,我不知道这是不是意味着24小时之后我又要重新扫码。 触感光滑,汉王的背板的触感让人感觉非常光滑,感觉稍不注意就会滑下去的样子。完全没有kindle pw4那种拿在手机,就粘在手上的感觉。所以我觉得,买汉王,就必须要买一个保护套,但是官方卖的保护套也太贵了吧,居然要110多块,这点有点像割韭菜。什么保护套能卖那么贵,都快赶上十分之一的电纸书的价格了。 词典缺陷,汉王的词典也是我要吐槽的功能之一,只能把单词的原型加入到单词本,单词来个复数或者过去分词,就不能加入单词本了。kindle的生词本,所有单词,无论什么形式都能加入单词本。 掉电速度, 从昨晚五点多开机,到今天早上,基本上没到一天,电池已经掉电接近40%了 自动关机, 为了省电,汉王在2小时不使用后,会自动关机。然而这个开机时间就有点久,你可设想一下,每天早上,你想看书的时候,你都要等几十秒的开机时间,那你能受得了吗? 按钮反馈,松松垮垮, 触感没有一致性体验 结论 目前而言,国产的电纸书系统,除了开放的系统之外,其他各个方面还是存在与kindle有较大的差距。 当然,如果你从未使用过kindle系列的产品,国产的电纸书还是值得买的。

2023-11-06 09:30:34 · 1 min · Eddie Wang

没有免费的Obsidian

我看过很多介绍obsidian的文章,除了外观漂亮,功能强大,最为着重前调的就是个人用户免费了。 对于个人用户,真的免费吗? 还是说人家并不是免费,只是我们在白嫖罢了。 我们看看官网关于商业付费的详细解释: Obsidian 对于个人是免费的。但是,对于那些拥有两名及以上员工的公司或组织,以商业目的使用 Obsidian 的话,则需要购买商用许可证。所谓商业目的,指的是任何与工作相关的活动,比如记录会议内容、项目笔记,或是创建组织 Wiki 等。与这些活动相关的笔记记录、文档管理、知识管理等都可以视为以商用目的使用 Obsidian。 –参考商用许可证 所以,大部分人,包括我都是听话一半,只看前面,不看后面的但是。 对于大部分上班族来说,如果你再用obsidian,我不太相信你从来没有在obsidian里记录一些工作内容。 对我个人来说,虽然我的有几百条笔记和工作无关。但是也免不了有一些是和工作有关的的。比如对于某个线上问题的分析,比如记录了一些工作账号信息等等。 在关于商业付费的例子上,官方还举出了贴心的给出了栗子。 问题5:我使用 Obsidian 储存所有的知识,无论是个人的还是工作/专业相关的(因为太难区分),我需要购买商用许可证吗? 回答:如果你的笔记中有内容直接与公司项目相关,并且该公司拥有两名及以上员工,那么你需要购买商用许可证。 综上所述,即使是个人使用,免费的条件也是极为苛刻的。 你的笔记不能包含任何商业目的的信息 你可以包含商业目的的信息,但前提是你的公司只有你一个人 假如你是个用Obisian的上班族,我觉得极大的可能你并不符合免费用户的条件。 或者有一天,当你大学毕业了,进入工作环境,你如果还继续用之前的仓库,那你也不再符合免费用户的条件。 所以说,不要再逢人就说Obsidian是免费的了。 Obsidian并不免费,只是我们大部分人都在白嫖罢了。 我也并不是不愿意花钱,如果要付钱的话,我更想买typeora。 因为typeora是买断机制,一次性付费89元,终身包用,免费升级,最多可以再三台设备上使用 Obsidian是订阅机制,每年商业使用要50美元,也就是将近400人民币。

2023-10-25 16:39:10 · 1 min · Eddie Wang

MacBook icloud 同步卡死, 请尝试重启电脑

环境说明 MacBook Pro M2 系统版本 13.4.1 网络环境为wifi 操作步骤 我往icloud的文件夹下,粘贴几个文件夹,文件的内容挺多的,然后finder上显示icloud的状态就一直是处于同步中了。 等了好久,同步的过程似乎卡住了。 网上看了一些解决方案,似乎都没啥作用。 我想起来以前的同样的一次卡顿同步的解决方案:重启电脑 于是,我重启了一次电脑,再次开机,打开finder, icloud文件状态非常快同步完了。

2023-08-20 13:07:40 · 1 min · Eddie Wang

困在coc错误弹窗中

请注意,VIM的光标现在位于错误弹窗上了。光标只能左右移动,无法上线移动。 我的光标被困在了错误提示框中。 因为错误提示只有一行,所以无法上下移动。 一直以来,我并没有把错误提示框也看成一个窗口,所以我可能多次按了ctrl + w w, 然后光标跳转到了错误提示框上。 正常的错误提示框,当光标不在关键词上时,错误弹窗会自动关闭的。 但是由于我已经进入了错误弹窗里面。 所以除非按窗口切换的快捷键,我会始终困在这个错误窗口中。 我觉得,VIM实在是太博大精深了。很多概念性的理解不到位,就会越到很多困难。 这些困难会给人造成极大的挫折感。 能解决困难,则学到东西。 否则就只能放弃VIM, 回到VScode的怀抱中。 但是,我已经习惯了不使用鼠标的快捷编辑方式。 我只能学会解决并适应VIM, 并且接受VIM的所有挑战。

2023-07-10 12:27:47 · 1 min · Eddie Wang

VIM typescript 跳转到定义

在VScode中,可以使用右键来跳转到typescript类型对应的定义,但是用vim的gd命令却无法正常跳转。 因为无法正常跳转的这个问题,我差点放弃了vim。 然而我想别人应该也遇到类似的问题。 我的neovim本身使用的是coc插件,然后我就再次到看看官方文档,来确定最终有没有解决这个问题的方案。 功夫不负有心人。 我发现官方给的例子中,就包括了如何配置跳换的配置。 首先说明一下,我本身就安装了coc-json coc-tsserver这两个插件,所以只需要将如下的配置写入init.vim " GoTo code navigation nmap <silent> gd <Plug>(coc-definition) nmap <silent> gy <Plug>(coc-type-definition) nmap <silent> gi <Plug>(coc-implementation) nmap <silent> gr <Plug>(coc-references) 这样的话,在普通模式,按gy这个快捷键,就能跳转到对应的类型定义,包括某个npm包的里面的类型定义,非常好用。 亲测有效。

2023-07-10 09:30:46 · 1 min · Eddie Wang

安装NodeJS, N命令似乎卡住了

我一般会紧跟着NodeJS官网的最新版,来更新本地的NodeJS版本。 我的系统是ubuntu 20.4, 我用tj/n这个工具来更新Node。 但是这一次,这个命令似乎卡住了。 我排查后发现,是n这个命令在访问https://nodejs.org/dist/index.tab这个地址时,卡住了。 请求超时,因为默认没有设置超时时长,所以等待了很久才显示超时的报错,表现象上看起来就是卡住了。 首先我用dig命令查了nodejs.org的dns解析,我发现是正常解析的。 然后我又用curl对nodejs官网做了一个测试,发现也是请求超时。 curl -i -m 5 https://nodejs.org curl: (28) Failed to connect to nodejs.org port 443 after 3854 ms: 连接超时 这样问题就清楚了,然后我就想起来npmirrror上应该有nodejs的镜像。 在查看n这个工具的文档时,我也发现,它是支持设置mirror的。 其中给的例子用的就是淘宝NPM 就是设置了一个环境变量。然后执行source ~/.zshrc export N_NODE_MIRROR=https://npmmirror.com/mirrors/node 但是,我发现在命令行里用echo可以打印N_NODE_MIRROR这个变量的值,但是在安装脚本里,还是无法获取设置的这个mirror。 我想或许和我在执行sudo n lts时的sudo有关,这个.zshrc在sudo这种管理员模式下是不生效的。普通用户的环境变量也不会继承到sudo执行的环境变量里 最后,我用sudo -E n lts, 成功的从npmmirror上更新了nodejs的版本。 关于curl超时的这个问题,我也给n仓库提出了pull request, https://github.com/tj/n/pull/771

2023-07-09 14:20:45 · 1 min · Eddie Wang

JS运行时构建独立二进制程序比较

很早以前,要运行js,则必须安装nodejs,且没什么办法可以把js直接构建成一个可执行的文件。 后来出现一个pkg的npm包,可以用来将js打包成可执行的文件。 我好像用过这个包,但是似乎中间出过一些问题。 现在是2023年,前端有了新的气象。 除了nodejs外,还有其他的后来新秀,如deno, 还有最近表火的bun 另外nodejs本身也开始支持打包独立二进制文件了,但是需要最新的20.x版本,而且我看了它的使用介绍文档,single-executable-applications, 看起来是有有点复杂,光一个构建就写了七八步。 所以今天只比较一些deno和bun的构建出的文件大小。 准备的js文件内容 // app.js console.log("hello world") deno构建指令: deno compile --output h1 app.js, 构建产物为h1 bun构建指令: bun build ./app.js --compile --outfile h2, 构建产物为h2 -rw-r--r--@ 1 wangduanduan staff 26B Jun 1 13:34 app.js -rwxrwxrwx@ 1 wangduanduan staff 78M Jun 1 13:59 h1 -rwxrwxrwx@ 1 wangduanduan staff 45M Jun 1 14:01 h2 源代码为26b字节 deno构建相比于源码的倍数: 3152838 bun构建相比于源码的翻倍: 1804415 deno构建的可执行文件相比bun翻倍:1.7 参考 https://bun.sh/docs/bundler/executables https://deno.com/manual@v1.34.1/tools/compiler https://nodejs.org/api/single-executable-applications.html

2023-06-01 13:48:00 · 1 min · Eddie Wang

Build Docker Image With Libpcap

常规构建 一般情况下,我们的Dockerfile可能是下面这样的 这个Dockerfile使用了多步构建,使用golang:1.19.4作为构建容器,二进制文件构建成功后,单独把文件复制到alpine镜像。 这样做的好处是最后产出的镜像非常小,一般只有十几MB的样子,如果直接使用golang的镜像来构建,镜像体积就可能达到1G左右。 FROM golang:1.19.4 as builder ENV GO111MODULE=on GOPROXY=https://goproxy.cn,direct WORKDIR /app COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o run . FROM alpine:3.14.2 WORKDIR /app COPY encdec run.sh /app/ COPY --from=builder /app/run . EXPOSE 3000 ENTRYPOINT ["/app/run"] 依赖libpcap的构建 如果使用了程序使用了libpcap 来抓包,那么除了我们自己代码产生的二进制文件外,可能还会依赖libpcap的文件。常规打包就会报各种错误,例如文件找不到,缺少so文件等等。 libpcap是一个c库,并不是golang的代码,所以处理起来要不一样。 下面直接给出Dockerfile # 构建的基础镜像换成了alpine镜像 FROM golang:alpine as builder # 将alpine镜像换清华源,这样后续依赖的安装会加快 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories # 安装需要用到的C库,和构建依赖 RUN apk --update add linux-headers musl-dev gcc libpcap-dev # 使用国内的goproxy ENV GO111MODULE=on GOPROXY=https://goproxy....

2023-05-08 11:45:23 · 1 min · Eddie Wang

VScode激活Tab更容易区分

默认情况下VScode的tab栏,当前的颜色会更深一点。如下图所示,第三个就是激活的。 但是实际上并没有太高的区分度,特别是当显示屏有点反光的时候。 我想应该不止一个人有这个问题吧 看了github上,有个人反馈了这个问题,https://github.com/Microsoft/vscode/issues/24586 后面有人回复了 "workbench.colorCustomizations": { "tab.activeBorder": "#ff0000", "tab.unfocusedActiveBorder": "#000000" } 上面就是用来配置Tab边界的颜色的。 看下效果,当前激活的Tab下有明显的红线,是不是更容易区分了呢

2023-04-18 13:43:07 · 1 min · Eddie Wang