Yolo for OpenRA
YOLO for OpenRA本文讲如何使用 yolo 识别 openra中的物体。 什么是 yolo?实际情况是我也不懂。具体参考 https://www.ultralytics.com/. 大概是深度学习和计算机视觉相关的库。 阅读文章的起点阅读文章的起点指的是一下两个问题 为什么要用 yolo来识别 OpenRA中的物体 在做yolo识别的时候相关的知识储备是什么样的 需要反着回答,知识储备是什么都不懂,一不明白什么是计算机视觉,而是不明白 python。不过不用担心,python比较简单,不会也可以看懂代码。 做 yolo识别是因为最近 GOSIM2015 有一个 hackthon,组委会提供了一个魔改的 OpenRA, 可以使用 socket来和 OpenRA交互。使用 api来驱动 openra中的单位来进行建设,探索,作战。组委会的目的应该是探索 LLM的应用,Agent的开发。我看到很多参赛选手做了非常高级的 agent可以打字和 llm沟通,进行建设,探图和摧毁敌方目标。不过这种模式是类似于我对 mcp的理解,我自己的思路是把所有的 API做成 mcp的 f...
Logout Issue
Logout IssuesLogout IssuesBefore describing the logout issues, let’s define two concepts: logout: Clicking the logout button to exit robrix by interacting with matrix shut down: Clicking x to exit the robrix process The Earliest ‘Dead-Pool’ Issue in Logouthttps://github.com/project-robius/robrix/pull/432#discussion\_r2171202111The commit hash at that time was e1f80eaThe key code was as follows: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253...
为 C++程序写 rustbinding
为 C++程序写 rustbindingAutoCxx 与 CWrapper+Bindgen为 c++程序写 ruts-binding 在代码的世界中,还是 c和 cpp站绝大多数,现在提一个比较常见的需求:提供一个 c++的程序,最终需要再 rust中调用 c++程序提供的接口。 一般来说有两个方法 直接使用 cxx autocxx为 rust代码生成一份 unsafe的代码,然后直接调用 第二种方法比较路径稍长,先针对 c++代码的 header 写一份 c风格的头文件cwrapper,然后针对 c的头文件写一份 c头文件的实现。接下来编译自己的cwrapper,生成一份新的动态库。接下来使用 bindgen 根据 cwrapper生成一份 unsafe rust。最后在 rust代码中调用。 总体来说 cxx 或者 autocxx 可能性能会更好一些,但是 autocxx并不能搞定一切。第二种方法胜在稳定,毕竟 c的 abi比较稳定。本文将采用后一种方法。 速成材料技术基础是:会 rust,不会 c++或者 c。所以需要速成,了解 c和 c++。如果彻底不会 c++,写...
sonala合约
solana合约学习本文是对 solan相关问题介绍,主要用于记录solana合约的学习过程。因为现阶段还没有十分深入的学习 solana的细节,所以目标限定在 solana的简单合约编写,环境搭建,测试。 基础因为是学习指南,所以会先强调学习的基础。本文的基础建立在会 rust基础上,明白 rust的语法,可以达到 rust编写简单代码的基础之上。因为 solana 合约是直接使用 rust编写的。如果不具备简单的 rust基础,请先学习 rust book,至少了解 rust的基本语法。 solana环境因为 solana有自己的介绍文档,不再重复介绍solana概念。下面主要讲剩余部分。 开发环境 主要就是 rust环境,可以去 rust官网上直接安装 rust环境。因为 rust已经比较成熟,没有特别的问题,直接安装最新环境。 编辑器,因为是直接使用 rust开发solana 合约的,所以主流的 VSCODE Rustrover vim zed emacs都可以。选择自己喜欢的就好。 solana cli工具。https://solana.com/developers/...
REVM代码阅读 02
REVM代码阅读 02前文介绍在 01章节,对阅读 revm做了一些预先的准备工作,主要包括了解solidity语言,学习 OPCODES以及自顶向下了解 evm的基本结构三部分。其中第三部分最好大致实现征战虚拟机栈的运行过程加深理解。现在开始阅读 revm代码。阅读代码的过程比较枯燥,请保持耐心。 针对单独实现的 evm不在少数,使用 rust编写的 evm也不是唯一的。有下面的两个 https://github.com/rust-ethereum/evm 以上是 rust-ethereum名下的 evm项目,他是 parity名下的项目,在项目中提到 polkdot项目就使用该虚拟机。 另外一个就是我们看的 evm revm https://github.com/bluealloy/revm 也有众多的以太坊生态项目使用该虚拟机。该项目拥有一本 books来介绍虚拟机的设计思路。在初步阅读代码之前,我们先阅读文档来了解 revm的整体设计思路。 https://bluealloy.github.io/revm/ revm是一个存粹的以太坊运行环境,没有任何网络以及共识的部分,...
REVM代码阅读 01
REVM代码阅读 01经过一些时间的准备,现在进行 REVM代码的阅读 准备环节这些准备主要包括一下的方面 速览 《精通以太坊》,有一个全局的认识 https://github.com/WTFAcademy/WTF-Solidity 通过这些资料来了解 solidity的语法。我的标准是学习完上面的课程并且完成习题,通过认证。 [https://www.wtf.academy/docs/evm-opcodes-101][1] 通过这些资料来学习以太坊的操作码 OPCODE, 因为不会 python, 所以使用 rust实现了其中其中的逻辑。可以参考这个链接https://github.com/TigerInYourDream/naive\_evm 。主要需要跑通其中的用例(执行其中的 bytecode)。(至少做完 101 和 102) 做出了以上的准备之后,可以对以太坊虚拟机有一个整体性认识。其中改的代码可以参考上面的链接阅读。 总体概览经过以上的准备,对以太坊虚拟机有了一个感性的认识。从最简单的模型,以太坊虚拟机就是一个栈的数据结构,每次把b solidit编译成对应的 ...
diesel使用小要点
diesel使用的一些小知识点最近因为使用diesel,大致看了diesel的文档同时结合自己两天内写代码的经验,总结出下面几条要点,作为参考。严格来说,这些知识点比较琐碎不能够成为一篇文章,但是想到可以为自己以后使用diesel作参考还是写出来。 设置好.env之后 diesel setup 是创建数据库的 diesel migration generate create_posts 最后一个参数是创建migration的文件夹名的 它会生成一个带时间的migration文件 里面有个up和down的sql up 里面负责创建数据库表的 down 里面负责撤回车操作的 up 和 down 里面的sql要自己创建 diesel migration run 执行migration里面的up.sql的操作的 确切的说就是建表 5. diesel migration redo 执行migration里面的down.sql的操作 确切的拉说是删除表 注意了 setup是会创建数据库和直接运行migration run中的建表数据的 但是如果数据库存在是不会...
占星与星座计算 morinus house system
占星与星座计算 morinus house system在系列前三节,已经基本介绍了和占星有关的模型,基本的分宫制的原理和占星以及天文中所出现的术语,这一节将带大家进行一次实际的占星计算。本文仅涉及星盘的计算,不涉及其他。 本文的重点是星盘的计算。本文将采用莫林分宫制morinus house system!至于为什么选择莫林分宫制,是因为莫林分宫制可以找到具体的数学计算公式,便于计算。且莫林分宫制在高纬度地区受到的扭曲小。至于分宫制的基本原理,可以查看上一节分宫制基本原理。 对于“morinus house system”是有专门的计算方法,通过一系列的加减乘除算出一个人出生时的MC、Asc以及每个宫头所在得度数,就可以排出一个近乎完整的星图了。 ASC:东升点是在诞生时刻在诞生地点的东面地平与黄道交接的一点 MC:天顶 我们在计算的时候需要以下参数 当事人的出生位置,需要从具体地点转化成经纬度 出生时间,需要转化为恒星时 黄赤交角,这个是固定值。关于黄赤交角可以看第一节天球部分。23°27′ 以及如下公式 MC = arctan(tan(RAMC) / co...
占星与星座计算 儒略历和恒星时计算
占星与星座计算 儒略历和恒星时计算在前两节的文章基础之上,我们开始进行真正的计算。在介绍计算星盘之前,我们需要一个预先准备的数据。儒略历和恒星时。网上的现成代码似乎没有说的很清楚,公式不够统一,结果也难以验证,为此参考了很多资料。其中有两个资料确定是对的。 https://zh.wikipedia.org/wiki/恒星时 上面公式中关于儒略历的转化公式是正确的,请注意其中的高斯符号。高斯符号相当于代码中的floor()函数。 后面关于恒星时的计算不确定正确性。 然后参考一份关于天文算法的论文,或者是一本翻译的PDF。感谢“冯剑和他的译友”翻译了这本天文算法,使我得到了确切的公式。 关于什么是恒星时可以也可以参考上面的wiki。 关于结果,分别得到了多项式T,算出来以角度为单位的恒星时,以时间hour为单位的恒星时,以时分秒为单位的恒星时。 现在公历纪元的年表示为Y、月为M、日为D、时为h、分为m、秒为s,1月、2月分别当做上一年的13月、14月。(例:2010年1月1日时Y=2009, M=13, D=1),然后求出儒略日 计算儒略历请注意以上的重点。 代码如下 1234...
占星与星座计算 黄道十二宫与分宫原理
占星与星座计算 黄道十二宫与分宫原理在占星与星座计算的第一篇文章中,尽可能详细的介绍了天球的构建过程原理和相关的概念。这一节我来介绍何为黄道12宫以及分工制的基本原理,不涉及具体分宫制。 黄道带上一节的天球示意图中,我们已经标注出来了黄道,就是假定地球不动,太阳绕地球运动所形成的面,就是黄道。因为地球自转和地球公转是有一定角度偏差的。所以黄道和赤道是有一个23.5度的夹角的。 黄道带(或是黄道十二宫)的概念起源于巴比伦占星术,巴比伦人注意到了与太阳同时升起的星星,在黎明之前,可以观察到靠近太阳位置的星星升起,这些星星以一个似乎规则的圆周来回运动。他们将这些星星分为十二组,并给其命名。希腊人从巴比伦人那里继承了这一习惯,才有了黄道十二宫,这个词来源于希腊文zodion,意为“小动物”。 具体的黄道带的概念如下 黄道带(希腊语:ζῳδιακός, zōdiakos),是天文学的名词,指的是在黄道上的星座组成的环带,不仅是太阳每年在天球上所行经的路径,月球和行星的路径也大略都在黄道的附近,因此也全部都在黄道带的星座内。 在占星术,黄道带被人为划分为十二个随中气点移动(与实际星座位...