浏览器用法 (Using the Browser Pages)

fylite 用户指南

演示站点是一组静态页面,加载后离线可用——没有服务端在替你算, 计算全部发生在你自己的浏览器里,由 WebAssembly 形式的同一个内核完成。 关掉网络、刷新之前,页面照常工作。

四个功能页,外加一个报告页

页面按目的组织,而不是按方法组织:

页面

回答什么问题

放电设计 (pulse_design)

这套线圈与波形能不能做出我要的这个位形?全程的磁通预算够不够?0 维参数落在哪里?

物理建模 (model)

给定加热与约束假设,定态剖面长什么样?边界与度规怎么定?功率平衡反演出什么?

实验分析 (analysis)

由测量反解出的平衡是什么样?剖面拟合的置信区间多宽?

装置数据 (data)

这一炮的原始通道长什么样?(唯一需要取数进程的一页,见本页末)

同一个工具可能出现在多个页面上——它只被实现一次,出现在它服务的每一条线上。

第五页是算例报告 (report):它不算数,只读——把一份运行记录(record.jsonld, 可连同计划、呈现规格与数据集)画成与 Python 侧逐字段相同的报告。命令行那边的同一件事是 fylite cases --report(参考书《算例报告》一章)。

单一可执行文件:离线的同一套页面

站点是静态的,但 file:// 下浏览器取不到 .wasm,所以「双击本地的 index.html」这条路 走不通。给离线的人、或没有 Python 的机器(尤其 Windows)的是一个文件:

fylite                      # 挑一个空闲端口,起本机服务,拉起系统浏览器
fylite --page data --device east --lang en --theme dark
fy --mdsip 127.0.0.1:8000    # 顺带接上取数(下一节)

它把整个站点编进了自己,起服务只绑回环地址、只答 GET/HEAD、不写任何文件。 页面字节与站点一模一样——差别只在它另答一组只读的 /api/*,页面靠「那组端点答不答」 判断自己在哪种宿主上,而不是看主机名。

--page / --device / --lang / --theme 是启动参数:它们同样可以直接写在地址里 (?device=east&lang=en),因为两者是同一份定义的两种写法——命令行与页面读的是同一个 参数表(fylite --help 列出全部)。

一次典型的使用

  1. 选装置。页面自带若干装置预置;换一个装置,几何与线圈随之整体切换。

  2. 调参数。左侧控件即时生效——单次求解、重构与重绘处于毫秒到秒量级。

  3. 读结果。图旁边给的不只是曲线:每次运行都带一份溯源记录,说明这个数 是怎么来的、以及它在哪里不等价(见结果怎么读)。

  4. 导出会话。把这次运行的输入与结果存成一个文件,别人加载它就能得到 同一次运行——也可以拿它到 Python 里继续算。

批式的那一半,是明说的

有些任务不属于「拖一下就出」:自洽外环、全网格扫描。页面把它们显式标记为批式—— 可分步、可中断、有进度,而不是伪装成即时操作后让你盯着一个卡住的界面。这条区分 是设计约束,不是实现细节。

语言与主题

站点是中英双语的,两类页面的做法不同,而这是有意的:

主题是三态的:跟随系统 / 浅色 / 深色,按钮循环切换,选择同样记在浏览器里。 语言与主题都可以由地址预置:?lang=en、?theme=dark(?theme=system 清掉记住的选择), 连同 ?device= 一起,正是上一节那几个启动参数。

一处与本机不同的行为

从 MDSplus 树取数的那一页(装置数据)需要一个能开套接字的进程站在页面前面—— 浏览器打不开裸 TCP,wasm 也不改变这件事。在纯静态站点上它取不到数据, 页面自己会这么说(面板画成禁用并给出理由),而不是空着让你猜。

要用它,就用上一节那个单一可执行文件并接上服务器:

fy --mdsip 127.0.0.1:8000     # 例如经 ssh 隧道到装置的 mdsip 服务器

端点是只读的窄口:没有取任意表达式的入口,守卫在宿主与客户端两侧各查一遍, 且只绑回环地址——它坐在一个不做认证的协议前面,要给别人用,前面得放一个会认证的 反向代理。细节见浏览器演示。