后端定义好接口
从后端代码生成 protobuf schema(proto 文件)
前端用 proto 文件生成请求接口的代码
这是我们团队里常见的工作流。
然而有个痛点:后端生成的 proto 文件内,代码的顺序是随机的。哪怕后端只改了一个字段,把文件放进仓库后会变成这样:
完全看不出来改了哪里
因此有了这个工具。
原理
protobuf schema 使用 message 等代码块定义数据结构。下面这样的定义:
protobuf 复制 message Aaa
TLDR
实现如下:
css 复制 /** 假设屏幕宽度是 750 */
html {
font-size: calc(100vw / 750 * 100);
}
此时 7.5rem 等于 100vw。然而会有与外部样式冲突、屏幕太宽时不能正常展示、布局误差的问题,具体请看正文。
前言
为了让页面去适应不同的屏幕宽度,理想情况是为不同宽度的屏幕应用不同的样式。
但这样一来,设计、开发、测试都需要额外处理多种情况。
为了降低开发成本,一些移动端网页 / app 选择了使用 re
简介
简单搜了一下没找到这种在线工具,于是弄了一个。
输入框里面的文本太多会很卡,所以默认会截断,不全部展示。不想截断的话可以选中“在输入框里展示完整文件内容”。
要去掉选择的文件,可以点击选择文件后什么都不选,直接关掉弹窗。 懒得单独弄个删除按钮了
试了下几 M 大小的文件,是没有问题的。估计好几十 M 的文件处理起来会很慢,并且需要注意内存占用。
顺便,这是第一次尝试在浏览器使用 JS 原生模块和 esm.sh CDN。近两年的 Chrome / Firefox / Safari
Debian Snapshot 是 Debian 官方提供的时间机器,保留着 Debian 官方软件源的历史。最早的快照可以追溯到 2005 年 ,每天至少快照一次。
把它设置为 apt 源就能搭建过去的环境,非常适合做考古研究或者跑老软件。
TL;DR
运行一个比快照的时间老的 debian 虚拟机 / docker 容器 / chroot / 随便什么别的东西
在 sources.list 的 URL 前面加上 [check-valid-until=no]
把 sour
一个玩具哈希计算工具。
Showcase
(可以同时选择多个文件)
在新窗口打开
⚠️ 由于代码未经优化、操作系统的调度、CPU 大小核等因素,这个不能用来精确比较 WASM 与纯 JS 的性能差异。
仓库地址
介绍
写这个东西的初衷是熟悉在浏览器中使用 Rust + WASM 的一套流程。
主要有三个功能点要实现:计算哈希、并行计算、展示进度。
搭建项目
前端是典型的 Vue + TS 的 Vite 项目。这里主要提一下 Rust + WASM 项目的注意事项。
2024-03-05更新
iOS Safari可以使用 devicemotion,详见下文
简介
为了试玩 Vue3 和浏览器的传感器 API 做了这个东西。
Showcase
请使用手机查看。
如何实现
挑选API读传感器数据,转换成 CSS transform 展示到页面上
读传感器
浏览器对传感器的支持比较有限。可用的 API 如下:
API 能拿到的数据 文档 devicemotion 事件 加速度、角速
距离上次写博客的代码(libdgc-ssg)已经过去了10个月。之前写的东西不堪回首,于是重新写了一个更轻量的东西。
主要特点
使用 Markdown 编写博客正文,支持 html、GFM(GitHub Flavored Markdown)和 frontmatter
每篇文章拥有私有的资源(目录结构如下),可以使用相对路径引用;可以在文章中插入 iframe 来运行任意代码
plaintext 复制 - posts
- post-name
- index.md
行内元素
包括粗体(bold)、斜体(italic)、 行内代码块、链接
某人:“《〈排版〉》、《〈‘试试’标点挤压(测试)〉》。”
块级元素
标题
四级标题
避免使用五级和六级标题
段落
Rust 程序设计语言的本质实际在于赋能(empowerment):无论你现在编写的是何种代码,Rust 能让你在更为广泛的编程领域走得更远,写出自信。(这一点并不显而易见)
举例来说,那些“系统层面”的工作涉及内存管理、数据表示和并发等底层细节。从传统角度来看,这是一个神秘的编程领域,只为