Posts with tag 08

comptime? runtime? launchtime!

2024-09-25
0824julyfunnotes

comptime? runtime? launchtime!考虑参数的修改和加载:| time | 例子 | 修改数值代价 | 修改参数名代价 | 运行代价 | | -------------------------------- | -------------------- | --------------- | --------------- | -------------------------------------- | | comptime 编译时常量 | constexpr | 重新编译 + 运行 | 重新编译 + 运行 | 无 | | launch time / init time 参数文件 | ros2 param yaml file | 重新运行 | 重新编译 + 运行 | 启动时几毫秒 | | runtime 热加载 | ros2 param set | 无 | 重新编译 + 运行 | 启动时几毫秒,每次查询几十纳秒到几微秒 |参数表如果是一个 string => value 的 map,那么查询较长的名字比较耗费时间和空间。这其实可以在 comptime 进行优化,然而 C++ / Rust 怎么实现呢?btw,宏可以实现这个编译时的抽象,但是很难保证热加载灵活性。Zig 应该很好实现编译时字符串压缩。如果做一个跨平台 GUI,肯定要做抽象层。如果采用的是 Box<dyn Trait> 或者抽象类这种方案,就是 runtime 抽象,必然有一定性能损失。然而这些抽象如果在 comptime 做,应该可以让损失非常小,编译结束时即可消除抽象,近乎直接生成平台原生代码。元编程可以做到以上所有事情,它本身就是 comptime 的抽象,然而基于 AST 的元编程太过底层,lsp 难以发挥作用,开发和维护成本都很高。也许 Zig 能代替元编程轻松做到代码生成,有空玩玩。每次想到这个就为 Rust 的 comptime 能力感到遗憾

不同文档博客的标记语法

2024-09-25
0824julyfunnotes

不同文档博客的标记语法github 标准> [!NOTE] > > Markdown heremkdocs material!!! note "Title" Markdown hereobsidian```ad-note Markdown here ```readthedocs.. note:: Markdown hereastro starlight:::tip Because Starlight is beta software, there will be frequent updates and improvements. Be sure to update Starlight regularly! :::就没两个一样的,叫我如何是好。并且搜索功能都奇差,index 对中文非常不友好,github 和 material 矮子里面拔长子。还不如 grep -rn ...所以软件们都自己做博客框架。每过几年总要迁移的,算了,人生苦短!Markdown 的不同方言之间用 python 脚本迁移也不难。I write articles to:软件用法和报错解决: 公开 SEO 友好,可贡献,可反馈(赞踩评论),可搜索,需树形课堂笔记: 介于 how-to 和生活之间:公开 SEO 友好,可搜索,SEO 友好,需树形记录生活感想和技巧,制定长期规划:公开 - 更近似于个人博客浏览到有用的文章存个链接:公开,可搜索不幸的是,有的文章介于生活和工作之间,比如随手修了一个服务器 bug,这个或许是可复现的。另外 how-to 目前就像我的个人博客捏。另外:私人备忘录(这个肯定要用手机备忘录)what i want页面元素类似于 github markdown 即可,最好支持 > [!NOTE] 和折叠要快,搜索也要快树形目录个人网站而不是集成网站,以利于被搜索到支持集成 ai,最好可定制化程度高类似 astr

引号的滥用

2024-09-25
0824julyfunnotes

我以前写的题解和某些公众号现在写的文章中,就有引号的滥用。例如:所以我们唯一要担心的就是同一个合数是否会被“另外某数 × p"以外的质数”再筛一次导致浪费时间。想要求出“第二站上下车到底有多少人”需要一些计算我当时只是想提高可读性才加的引号,并没有想过它为何能提升可读性。这里的引号的语义作用到底是什么?小学老师说引号作用是引用或着重标记,但此处并不是。我们说出或写出的语言,由于时间流动的单向和人类阅读的单线程,形式只能是一个序列。然而其含义其实是树形的,就和编译器的词法分析和 latex 等标记语言类似。试将本文第一句话表示为树形:(((我)((以前)写)的题解)中((就)有)((引号)的滥用))不论是听还是看文字,理解文字的过程隐含了树形的语法分析,理解的依据就是语言的语法习惯。然而中文并不是一个特别擅长讲语义进行良好结构化的语言——由于缺少从句和后置定语,中文语句可能比英文语句嵌套层数更深:You should understand the requirements that are important to customers. 你要理解对顾客而言重要的需求。想要求出“第二站上下车到底有多少人”需要一些计算: It takes some calculation to figure out how many people get on and off at the second station.人类很难理解嵌套层数很深的数据。我们还想出了各种办法来让数据扁平化,比如命令式编程语言中的临时变量。在本文的例子中,为了明示这种树形结构,我才使用了引号。有时候我会使用加粗来明示,和引号作用一致。引号的问题大量引号让文章更难阅读,而且你文章里虽然可以用引号,说话的时候总不能带上吧。为了保证你语言之优雅,我建议别过度依赖引号,而是找一找白话中文里更好的表达方式,比如拆成两个句子。有时候一句话让人难以理解,正是因为嵌套层数太深。为了求出第二站上下车有多少人,我们需要一些额外计算

编码器和执行器科普

2024-09-25
0824julyfunnotes

电机外围线圈(定子)产生的磁场推动内圈磁铁(转子)。如何知道转子角度有感编码器光: 小孔,照射(发光器 + 感光原件)ABZ: https://blog.csdn.net/weixin_43580890/article/details/134404950磁AMR / TMR 直接读磁场的角度,最多约 12 位精度,直接 SPI 通信连接到 MCU 上,用封装好的库就行游标,内码外码道两圈分段磁铁编码,提升精度,和游标卡尺同一个原理,也是有芯片(IC-Haus)通过 SPI 直接给 MCU感旋变:旋转变压器,转子上特殊形态,旋转时不同位置磁导率不一样 => 电压不一样 PCB 式电感编码器: 金属在运动,周边线圈感应涡流的大小无感高频注入法: 此方法主要利用电机自身的非理想特性对电机的转速和位置信号进行估计。主要原理是在电机定子侧注入高频电压或者高频电流信号,注入的高频信号在电机内会形成高频磁场。由于电机具有非理想特性,例如转子结构凸极性、转子饱和凸极性等,这种非理想特性会对高频磁场产生调制作用,使得电机定子侧产生和电机位置和转速相关的高频电压或电流信号,通过提取有效信号和解调制等方式得到电机的转速和位置信息。ref: https://blog.csdn.net/sy243772901/article/details/107780148伺服电机 = 电机 + 编码器 + 控制器 + 驱动器,闭环控制?舵机原理?各种线和接口GPI

第一性原理之为什么 Latex 比富文本更容易编辑和阅读

2024-09-25
0824julyfunnotes

第一性原理之为什么 Latex 比富文本更容易编辑和阅读在富文本中手动移动图片位置的体验不好,而且一般不好看。用 Latex 等语言则可以用标签指定居中等位置。拆解为什么,因为手动移动图片的自由度太高,信息量过大,而这个信息是人类通过鼠标移动没有办法精确控制的。比如手动将图片放到距离左边缘 30% 的位置,这里有用的信息就是距离左边缘 30%,而人手的移动引入了噪声,降低了信噪比。反之用标记语言排版,有两个优点:用 \centering width= 指定信息,随后无方差渲染。 => 阅读时信噪比大,所以美观易读由于信息量比富文本少,不用隐藏任何信息 => 对编辑友好想要在 Word 中高效美观地编辑,则需引入 limitations,减少自由度。比如为图片添加居中等标签。当然富文本编辑器都支持引入这些 limitations。在 Word 中通过鼠标点击加粗或居中等方式,是通过操作鼠标位置这一巨大信息来插入少量信息(即选中的文字两边添加了 bold 标签),所以这方面鼠标的效率会比键盘低。其他杂想我们在生活中习惯于用有方差的身体运动来输出少量信息。因此移动鼠标对于我们来说更容易上手。在编辑文本时,键盘比鼠标输出有效信息的效率更高 <= 键盘具有比手指略大的按键,通过类似于 16-QAM 的方式捕获了方带差的指尖运动, 编码成无方差信息,而鼠标的编码是在按钮这一环节才执行的。而你在 fps 里绝对不想用纯键盘移动视角,这时候鼠标输入信息的有效比增大了,而你的大脑接收视线时可以过滤掉一些噪声的。纯属瞎想。Don't mind these

No more posts to load.