正在查看 — 杂耍

早在 .NET 6 时期发布 MAUI 时就已经对 C# 非常感兴趣,加上这几年对游戏开发的学习使得我重新关注这款语言平台

关联阅读:

如今 .NET 8 新增了各种能力:例如进一步对 wasm 的支持(Blazor 美如画),还有 NativeAOT。再加上微软自从改变了路线开始尊重开源社区,并且先进技术跟得一次比一次快,让我又当场狗叫

「.NET is THE NEXT GENERATION」

总所周知 CloudFlare Workers 本来是一个服务托管平台,还是跟上一篇讲得差不多:它优先托管基于 NodeJS 的应用或者 FaaS。但是!它确实也进入了 WASI 的实验性支持

所以当我单方面狗叫「WebAssembly is FUTURE」之时,我已经在想:用 C# 狸猫换太子是不是有戏?

醉翁之意不在酒啊

这是一篇视频稿(Final Cut 爆炸了所以没去薅叔叔)

孔子曾说:

“温故而知新,可以为师矣”

Confucius 曾经也说过:

“When reviewing old knowledge, you can have new experiences and discoveries, and you can be a teacher.”

意思就是:经常翻看以往学过的知识,一般总能学到新知识。这样就可以可持续性当你爹(?

想一想,从 16 年到现在一直用 TypeScript,至今已经成为主流。在今天这个大好日子,我决定听孔子一回,重新学习 JavaScript

并且,孔子还说过:

知之者不如好之者,好之者不如乐之者

所以我决定邀请各位,请让你身边的人一起学

众所不周知,在大概 3 4 年前曾经有这么一个项目叫 sona,这是一个音乐播放器,react native,连着网抑云。大概长这样

sona

过了这么久,我早就不网抑云,也以现在的眼光再看这个 UI 未免有些稚气,还有点费电资源 —— 整的什么垃圾

正好,关注了一年多的 MAUI,纯纯在 Build 看着宣布,然后 GitHub 开库,进 preview,到现在 stable。.NET 都从 6 preview 一直到 7…

所以先来搂一眼,正好也想复活这个产品,并且不优先解决网抑云,而是解决 Apple Music 和 Spotify,还有 Last.fm。再决定是改用 maui 重构还是继续用 RN

TL;DR

  • C# 很香,但遗传了 Xamarin 的臭
  • 安卓 SDK 两个包,噶了一个
  • 平台能力最好还是用平台原生语言
  • 目前的 MAUI,狗都不用

鸽了一年,不重要,下一篇解释

现在几乎现代框架 SSR 默认都是用 node,难道不能用别的?原因很简单,同构,有天然适合的执行/运行时环境。拿 React 举例子,SSR 分两个步骤:

  1. 静态部分先用服务器渲染一遍,最基本的都是拿入口过一遍 renderToString
  2. 运行时水合,也就是不用 render 而是 hydrate,因为已经不需要在运行时创建节点,只需要绑定

所以问题就很清晰:默认或者常规手段的 hydraterenderToString 都是 JS 函数

当 QuickJS 刚出现在我的眼前的时候,特别是有人给 QuickJS 提供 rust 绑定的时候,我就在想一个问题:这 B 是不是可以直接拿来做 SSR ?

这篇文章极其具有时效性,在目前,flutter 不支持多窗口,但是已经有这么一篇文档[1]。而且 flutter desktop 的多窗口可能已经计划中了。

SETSUNA 的 UI 需要满足条件:桌面移动端统一 UI(没错过了半年还在选型)。现阶段可以选择的只有一个框架:flutter。而且:

  • flutter 使用 skia 绘图而不是调用原生组件,表现统一
  • flutter 可以方便的响应式设计,UI 可以用同一套代码(只要可以,顺路兼容手机、折叠屏、横向平板、桌面布局)

flutter 本就是先给移动端设计,可以直接用 dart 完成很多工作。但是在调研桌面时发现一个问题:找不到多窗口 API! 这不行。虽然 flutter 是允许原生编程,那我能会 windows 开发吗?!

等会,flutter 是不是已经支持了 web。那么,这波不得两面包夹芝士?

flutter-tauri

把 flutter 套进 electron 是不是就完成需求了!(顺便还可以实现简单 PWA 版本)

但是桌面端不选择 electron,咱用 tauri!毕竟现在全平台都 webkit(blink),而且 flutter 使用 canvaskit,不需要担心表现…

无图版,会更有图版

背景

上篇文章(最近总是莫名联动)才写了 electron,主观感受,electron 有这么些好处:

  • 使得前端技术可以运用在本地桌面应用
  • 跨平台
  • Chromium 让兼容性不是首要考虑对象
  • 通过 NodeJS 既可以操作系统,也能利用本身能力与生态

但是:

  • 我好像不需要跨平台
  • 原生开发更加能操作系统 API
  • 扯破大天不就是webview
  • 依然不需要考虑兼容性,并且体积会大幅减小

所以,electron 再见!

思路

有个做广告设计的朋友,自己开个小工作室,平时接些小广告设计维持生活。但总会遇到一些甲方拿着某个站点的图片,让他用这个图片给他做广告牌或者海报。就这样,作为老切图仔就一直在帮他「从网站里拿出图片」这种脏累活。想着是不是可以干脆送他个工具,这样他就可以自己玩了
(不是很推荐这种操作,但是毕竟要恰饭要苟活,而且这种外包单,甲方是这样的)

想了一下,切图仔唯一高效 GUI 的选型只有 electron 了,没得选。但是这次有点特别,因为 electron 的特殊性,我有了些想法

electron = node + chromium,都有个完整浏览器了 484 不需要无头就可以加载 remote 然后直接获取资源?

这里用的模板是之前实验服务一体化的模板 electron-react-koa-template,然后删除了server

删了server……

TL;DR

  • webview
  • 获取资源
  • 提供下载

准备

我自己使用的是树莓派组,可以选择的有很多,x86的开发板、淘汰的笔记本。废物再生计划!

系统选择

推荐三个:

这应该是连载得最近的一次,书接上回:《或许可以用 TypeScript 编写 hammerspoon》(也就是下面那篇)

这里只会描述通过 TypeScript 实现的过程

以下内容可能产生不适(因为hammerspoond.ts 全是 interface 一把梭,编码不好看)

TL;DR

  • 创建界面
  • 实现剪贴板读取
  • 存储数据
  • 绑定快捷键

lua 这个语言真的有意思,它由 C 语言构成,又实现了 C 语言所没有的「对象」。早在不知道哪年搞 cocos2d 的时候,就接触了这个语言

hammerspoon 也不是什么新鲜东西了,早在 18 年,公司内部一次「杂鱼分享会」就有人提到了这个工具 —— 快速将光标切到目标显示器以及窗口调整

早期是用过一段时间,写了一个代替小黑帽🎩的工具,后来不了了之。主要还是觉得现在不想用这个语言,太阴间了

当然还有其他方案,比如常见的用到了 moonscript,这是一个类 coffeescript 的语言,属于 lua 生态圈的东西。但用这个就意味着你需要在本机构建一个 lua 环境(luarock),这么一想那不想干了,现在不用 lua 了还留一个完全不用的开发环境

前些日子关注到有一个项目 TypeScriptToLua / TypeScriptToLua,一直没尝试,这波机会刚好。而且老前端了,谁还没有个 typescript/node 环境呢


0%