VSLite 原理解析与本地化部署

VSLite 是一个开源的、完全运行在浏览器中的开发环境,它的亮点在于,不需要联网也可以直接在浏览器中使用 Node.js、Python、Git 等工具。你可以在 vslite.dev 体验到在线 demo。

传统的基于云的开发环境,例如 GitHub Codespaces,依赖于后端服务,前端所执行的命令,实际上是通过网络请求发送到后端对应的云虚拟机(或容器)中执行的,这就需要消耗后端的计算资源;而 VSLite 的思路完全不同,它在浏览器中启动了一个容器,做到了不再依赖后端。

想要在浏览器中跑起来一个容器,第一次听说这样的想法时,我说:不可能!绝对不可能!就浏览器这也受限那也受限的环境,还能跑起来一个操作系统?然而 StackBlitz 真的做到了,他们开发出了 WebContainers,WebContainers 是一个基于浏览器的运行时,用于执行 Node.js 程序和操作系统命令,完全在浏览器选项卡中。以前需要云虚拟机才能执行的应用,现在可以完全在浏览器端运行。

经过两天的研究,我开始对 WebContainers 的原理有了初步的了解。

阅读更多

信创银河麒麟高级服务器操作系统 V10 安装无头浏览器 Chromium

如果是 x86 架构,直接从 Chrome 官网下载即可。如果是 arm 架构会比较麻烦,摸索了一天整理出以下方法。

1
2
3
4
5
6
7
curl -LO https://update.cs2c.com.cn/NS/V10/V10-GFB/030/os/adv/lic/base/aarch64/packages/nss-mdns-0.14.1-3.ky10.aarch64.rpm
curl -LO https://update.cs2c.com.cn/NS/V10/V10-GFB/030/os/adv/lic/base/aarch64/packages/chromium-common-90.0.4430.212-1.p01.ky10.aarch64.rpm
curl -LO https://update.cs2c.com.cn/NS/V10/V10-GFB/030/os/adv/lic/base/aarch64/packages/chromium-90.0.4430.212-1.p01.ky10.aarch64.rpm
yum install -y libXau.aarch64
yum localinstall -y nss-mdns-0.14.1-3.ky10.aarch64.rpm
yum localinstall -y chromium-common-90.0.4430.212-1.p01.ky10.aarch64.rpm
yum localinstall -y chromium-90.0.4430.212-1.p01.ky10.aarch64.rpm

调用的话,直接 /usr/bin/chromium-browser

如果需要用无头浏览器测试中文页面,还需要安装中文字体——把字体文件复制到 /usr/share/fonts/ 目录下,然后执行 fc-cache -v 即可。

解决火绒 6.0 造成的 Node.js fetch 方法 unable to verify the first certificate 报错

之前用 Electron 写了一个监控客户端,昨天突然用不成了,检查日志发现这样的一个报错:

1
2
3
4
5
6
7
8
9
10
11
12
Error occurred in handler for 'getPrice': TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:12293:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async WebContents.<anonymous> (node:electron/js2c/browser_init:2:78167) {
cause: Error: unable to verify the first certificate
at TLSSocket.onConnectSecure (node:_tls_wrap:1659:34)
at TLSSocket.emit (node:events:514:28)
at TLSSocket._finishInit (node:_tls_wrap:1070:8)
at ssl.onhandshakedone (node:_tls_wrap:856:12) {
code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
}
}
阅读更多

我对抄袭行为的看法

写技术文章,几乎不可避免会被抄袭。我已经遇到过无数次文章被抄袭,抄袭者会将文章标记为“原创”,甚至在文中加入微信二维码、培训机构广告,见怪不怪。

一直以来我都容忍抄袭行为,我不会去向平台举报,因为 Hexo 博客文章的发布时间可以随意修改,我无法证明文章是我写的,也无法证明我比抄袭者更早地发布。

但抄袭依然正在打击我的创作热情,发布频率越来越低,文章质量也逐步下降,我会去想:反正写得太好了,最后也会变成别人的,那只要做个记录,以后自己能看懂就行了,写得差点还能降低被抄袭的概率。

就这样,变成了现在这样。

可是,即使我可以容忍抄袭,作为一个博主,我认为我有义务打击抄袭行为,维护互联网环境,匹夫有责。就好比十几年前,偷东西还没什么成本,坐趟火车手机、钱包啥都没了,现在满大街都是摄像头,就很少再出现偷东西的贼了。

想了解下各位博主们是怎么解决这个问题的。

比如:复制时自动添加版权声明?复制时弹窗?或者干脆禁止复制?都是防君子不防小人的做法,防不了抄袭者,反而给正常读者带来了不便,所以我觉得没有必要。

比如:依托维权平台?个人博客本身并不能获利,为此付费维权实在有点舍不得。

京东云轻量云主机避雷

避雷!不推荐京东云轻量云主机!

去年双十一期间我以 356 元的新用户价格购买了 3 年京东云轻量云主机,配置为 CPU 2 核、内存 2 GB、系统盘 60GB、带宽 4 Mbps、流量 300GB/月。

阅读更多

Harmony 鸿蒙应用开发之解决 Web 组件加载本地资源跨域问题

鸿蒙开发文档中有一节 加载本地页面 提到了可以通过 $rawfile 方法加载本地 HTML 网页:

Index.ets
1
Web({ src: $rawfile("local.html"), controller: this.webviewController })

但是如果在 local.html 中需要引用一些静态资源,例如图片、JS、CSS 等,静态资源放在 local.html 同级目录下,会出现跨域的错误:

Console
1
Access to ... at 'resource://...' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, arkweb, data, chrome-extension, chrome, https, chrome-untrusted.
阅读更多

Harmony 鸿蒙应用开发之展示 PDF 文件

鸿蒙应用展示 PDF 文件有三种方式

  1. 通过 ArkWeb 先加载 PDF.js,再用 PDF.js 加载 PDF 文件
  2. 通过 ArkWeb 直接加载 PDF 文件
  3. 原生加载

第一种方式比较复杂,涉及到 PDF.js 资源的加载、跨域的处理等,我就直接放代码仓库,读者可以自行研究: https://gitee.com/imaegoo/hm-pdf-viewer

更加推荐第二种方式,写法更简单

阅读更多
微信二维码