songfei

宋飞

软件开发工程师<br />业余无线电爱好者

Lua 语言入门

1. 输出日志print(“Hello,Lua!”) 2. 注释单行注释: -- 两个减号 多行注释: 1 2 3 4 --[[ 多行注释内容1 多行注释内容2 --]] 3. 变量Lua中的变量全是全局变量,哪怕是语句块或是函数里,除非用local显式声明为局部变量。 局部变量的作用域为从声明位置开始到所在语句块结束。 变量的值默认为 nil。 1 2 3 4 5 6 7 a = 5 -- 全局变量 local b = 5 -- 局部变量 function foo() c = 5 -- 全局变量 local d = 6 -- 局部变量

忆高震东先生:爱自己的孩子是人,爱别人的孩子是神

高震东先生,台湾著名教育家,台湾忠信学校创办人兼董事长,“忠信教育法”创建人。 办学三十年来,以教育尽现国学精粹,传承中国传统文化精髓,结合自身多年办学的经验,总结出一套行之有效的忠信教育法,引起教育界的广泛反响。 高老师于2021年2月25日仙逝, 享年 92岁。 最初听到高老师,是我在初中时的物理老师,给我们讲了高老师的一篇演讲稿《天下兴亡,我的责任》,至今记忆犹新。 时过多年, 偶然在电脑中翻出了多年前留

查看 Windows 中的 dll 依赖

在 Windows 系统中, dll 扮演了非常重要的角色,通过 dll 的动态调用, 可以实现代码模块化,动态加载等。算是 Windows 系统的基石。 如何查看 exe 或者 dll 依赖了哪些其他的 dll 呢? 静态查看通过 Dependencies 这个工具,可以查看到 exe 或者 dll 静态依赖的 dll 文件。 微软官方的工具,已静止开发,仅支持到 Win8, Win10 已经无法使用。 次工具是网友制作并开源的,项目Github地址 启动后窗口如下, 主要分为3个部分。 分别是 dll 依赖树、dll 引用的方法、 dll 导出的方法。 动态查看上面的工

UE 日志配置

UE 在 Developement 和 Debug 模式 会输出日志,Shipping 不会。 输出的日志文件保存在: [Platform]\[ProjectName]\Saved\Logs 下。 可以通过修改 Engine.ini 配置来修改日志输出的配置。 配置文件的相关规则见另一篇笔记 《UE 引擎配置文件》 配置项如下: 1 2 3 4 [LogFiles] PurgeLogsDays=30 MaxLogFilesOnDisk=300 LogTimes=Local 其中参数: PurgeLogsDays保留日志的最长天数。 MaxLogFilesOnDisk最多文件数。 LogTimesLogTimes 表示输出的时间格式: [time][frame mod 1000] 可选值有: None : 不显示时间 UTC : 显示 UTC 时间(默认值), 例:[2015.11.25

UE 引擎配置文件

UE 引擎里有很多配置项, 放到的不同的目录里的不同文件,分别对应不同的生效范围。 范围有: 引擎目录 Engine : 对应所有项目 UE 项目目录 [ProjectDirectory] : 对应所在项目 操作系统 [Platform] : 对应不同的操作系统平台 引擎会依次加载这些配置文件,后面的文件的同名选项会覆盖前面的文件。 顺序如下: Engine/Config/Base.ini (通常为空) Engine/Config/BaseEngine.ini Engine/Config/[Platform]/base[Platform]Engine.ini [ProjectDirectory]/Config/DefaultEngine.ini Engine/Config/[Platform]/[Platform]Engine.ini [ProjectDirectory]/Config/[Platform]/[Platform]Engine.ini

UE 解析启动命令行参数

解析不带参数的 1 2 3 const TCHAR* CmdLineParam = FCommandLine::Get(); bool value = FParse::Param(CmdLineParam, TEXT("XXXXXXX")); 带参数的 1 2 3 4 const TCHAR* CmdLineParam = FCommandLine::Get(); FString XValue; FParse::Value(CmdLineParam, TEXT("-XXXXXXX="), XValue);

智云对焦马达硬件拆解

咸鱼 100块RMB 搞了一个对焦马达, 是智云的铠甲系列, 型号为:CMF-04,应该是第二代的产品了。 产品介绍 使用方式是,通过固定支架固定在相机上,有个齿轮可以控制镜头对焦环。 拆解打算进行改造,先进行了拆解,全家福: CNC 的外壳,无刷电机, 还有2块电路板。 主板正面 主板正面是一颗 兆易的 GD32F330 MCU,ARM Cortex M4,国产的 MCU。 负责电机驱动和编码器的控制。 GD32F330 数据手册 GD32F330 使用手册 USB TypeC 接口只是借用了硬件连接器, 实际传输

Runbo K1 磁吸接口

Runbo 对讲机防水设计,没有使用通用的 USB 接口和耳麦接口,而使用了自定义的 6pin 磁吸接口。 针脚定义: 连接电脑, 只需要连接 GND, D+, D-, VBUS 即可。 USB-OTG连接,USB_ID 连接 GND。

短波常用频率

国内比较热闹的短波频点: 7.050 MHZ 模式:LSB单边带 主要是早上和晚上很热闹,传播好的时候,比本地的中继台信号还要好,国内HAM默认的公用呼叫频率,大家常在7.050呼叫到对方后,都喜欢转到7.055、7.060、7.065、7.070、7.080做通联QSO。 14.270 MHZ 模式:USB单边带 主要是白天很热闹,传播好的时候,比本地的中继台信号还要好,国内HAM默认的公用呼叫频率,大家常在14.270呼叫到对方后,都

关于我

基本信息我叫宋飞,80后,已婚,现定居北京。 工作从大学毕业,就一直在某大厂做程序员,技术做的比较杂,做过 iOS,Android,Web,小程序和 Flutter, 现在在做 UnrealEngine 相关的开发工作。 虽然我不喜欢全栈工程师这个称呼,样样精通等于样样稀松,但这些年来,基本大前端,后台,嵌入式都有涉及,谈不上精通。 在 iOS 和 Flutter 专注的时间比较长,算是资深吧。 刚刚换了全新的方向,做 3D 相关的开发,0 基础学习虚幻引擎中 … 兴趣爱

留言板

欢迎在这里留言!任何问题都可以在这里留言,我会及时回复的!

Dart 多线程:Isolate

Dart 被设计成为单线程、异步的语言。 尤其在 Flutter 当中,大部分的 Dart 代码都执行在一个线程,应该叫一个 Isolate 里面。 单线程带来了很多好处,不用考虑数据被同时访问,不用加锁,也就有没有了死锁;也给内存的垃圾回收带来了方便。 Isolate 对象 Isolate 代表了 Dart 执行的上下文,所有的 Dart 代码都运行在其中。 Dart 代码只能访问到当前 Isolate 的类和变量,不同 Isolate 之间内存是隔离的,只能通过 Ports 进行通讯。 每一个 Isolate 都有独立的消息循环和垃圾回收。 Isolate 可以被其他的 Isolate 控制,比如暂
0%