正在查看 — 编程

22 年我在找一个开源的可以直接部署的 Serverless(FaaS) 方案。短时间尝试了 OpenFaaS 和 Knative,但这两个分别都有某些地方并不符合当时的需求

接着发现了 WasmEdge,这是一个利用 wasm/wasi 的运行时,支持被嵌入式执行

当我看到它第一眼,加上原本我对 WebAssembly 的理解,我直接在站起来单方面宣布:

WebAssembly is FUTURE

软件国际化必然需要翻译文件。虽然我也很想用类似 locize.com 之类的服务管理翻译,这样 i18next-locize-backend 直接游戏结束

可惜用不得,只有一个甚至早期管理还很乱的 excel 文件,所以需要解决「如何把它变成 json」的问题

TL;DR

  • 插件类型应用必然使用抽象工厂,早在设计 FEMessage/upload-to-ali 服务端就这么用
  • 将文件对应为统一结构,以扩展的形式输出对应要求格式文件
  • 使用 calamine 解析 xls(x) 文件
  • 使用 rayon 直接让列表多线程

按照需求,本来实现 WebSocket 的目的是收发 Banshee 的消息(主要是收)

后面突然灵光一闪:上个 WebRTC 怎么样?于是开始一段「为了醋包饺子」的心路历程:

  1. 虽说原本是为了本地调试,但这套技术很明显内网都能用
  2. 如果有一个「授权」对话,那么就可以在内部进行「远程问诊」
  3. 测试或者验收遇到什么问题,望闻问切的第一步是
  4. Remote Display / Remote Desktop

TL;DR

  • 调整 WebSocket 支持的实现
  • 实现信令服务器部分
  • 因为流量都在内网,所以不需要转发(STUN)

其实开发一个程序思路一直都是一致的,并不会因为是前端就会差/简单多少。再加上之前因为有「多端」这个「产品概念」之后,所以程序上一直在解决一个问题:如何将 Web 之外的逻辑固定下来?于是有了 Banshee,下次细说

既然有一个框架了,并且也选择使用跟 Angular 类似的 root 级 DI 这种路线之后,开始有一个想法:

流向很清晰,这个时候有一个测试监控一体机是不是实现方便作用不小?

于是有了 Banshee Cockpit,但它也跟 Banshee 一样,下次细说

又到了技术选型环节:早在三年前就尝试的 electron 方案 electron-react-koa-template(已归档),当时是为了直接在树莓派运行智能闹钟程序时顺便提供 API 以远程操控,所以让 electron 附带的 node 跑起来一个 koa

でも、选型依然是我目前的经典搭配:Tauri + Solid。那首先要解决的有两个问题:

  1. 还是一样,需要跑一个 server
  2. 因为需要收发 Banshee 的信息,所以需要 WebSocket

TL;DR

  • 你可以直接用 Rust 提供的基础库,但我用 axum
  • 集成起来很方便,麻烦的是 Rust
  • 摆烂了,Rust对于内存的执着有种让人想一拳打爆屏幕的冲动

如果你在玩《剑网3缘起》,你会发现游戏有一个内置社区。虽然这个应用是个 CSR,但是会发现加载并不慢

而且这些都不是事后优化。所以正好可以分享一些可能对其产生作用的习惯和做法,或者说开发时可以注意的地方

TL;DR

总之就只有一个目标:尽量砍掉第一次加载的大小和尽量减少加载所需要花费的时间

  • 减少加载体积
  • 懒加载/延迟加载:利用 import/export 做代码分段
  • 充分利用 http2 和 vite(开箱即用版 rollup )
  • 非常巧合的做法,指跟 React Beta 版文档异曲同工

以下全是暴论

这是一个发生在今年的对话:

Q:组件通信有几种方式?
A:balabalabala(无非 props, provide/inject,vue 还有 $parent/$children
Q:还有吗?
A:postmessage 可以算吗
Q:也行,还有吗?
A:localStorage/sessionStorage 可以算吗?
Q:算半个,还有吗?

这 TM 不就这些方式还有吗?

回来一拉清单,各家文章盘点确实还多了一个:EventBus

Gatsby 比 Hexo 更像一个通用框架,关于博客的工具真是全靠社区衬托。Nlvi 迁移遇到了标签云和分类等各种问题,还有一个多语言问题…

找了一圈插件,i18n 大多数方案都是「一个站点同时多语言」,这对一个博客来说没必要啊(相对来说我博文是不是也得写个几份…),想了一圈好像也没必要上react-intl,直接手作一个吧 —— 按照**「好看的皮囊千篇一律」**写一个

但是主题毕竟是要开源的,所以如果有好兄弟萌觉得 i18n 处理不行,自行替换成 gatsby-plugin-i18n 或者 react-intl 就可以了

玩了一段时间 Vapor,想不明白谁家会用 swift 跑生产,可能也就 perfect 维护者背后的公司会用,至少在拆哪应该还是要快(la)准(man)狠(kpi)的。
rust 社区中关注了 rocket 一段时间,后面发现 actix-web 在各方面更有优势,加上要好好点 rust 技能树,所以就选定这个了。

这里会以重构我的闹钟后端作为蓝本,逐步做个记录。

TL;DR

  • 直接用 cargo 创建应用
  • 装载 actix-web
  • 写一个 api

已知Rust是个很硬核的编程语言

又已知JavaScript或者说在浏览器上的JavaScript在某种情况无法胜任工作。

So?

🦀 Rust + 🕸 Wasm = ❤

但是,单纯把教程或者 tutorial 拿出来复述是没意思的。So,搞点事情

那么前提是,你已经弄清楚了 wasm-pack 是怎么回事了

Vapor 应该是目前比较成熟的服务器应用框架了,更新快,社区“繁荣”

所以,直接干吧


0%