中文

我找到了适合自己的开源项目

我正在帮忙做一个帮助视障玩家玩 Minecraft 的 mod - minecraft-access,帮了大概两个多月了。这是我第一次深度参与一个开源项目。

我是如何找到的

得感谢 Bilibili 的大数据,给我推了一个盲人 up 主玩 Minecraft 的视频。我想为这方面贡献点力量,就顺藤摸瓜一通搜索,搜到了目前的项目。还好它是活跃的,我本来还担心如果没有任何相关项目是活跃的该怎么办。

Java9 到 17 我关心的新特性

只记录未来开发时可能用到的特性。 都 2023 年了,真正可能用的版本只有 11 和 17,不关心特性到底在哪个中间版本脱离 preview 了。

Java9

https://www.baeldung.com/new-java-9

  • 新的 HTTP client HttpClient HttpRequest HttpResponse builder 构造 HTTP 请求

  • Try-With-Resources 能 close 掉在 try 之前定义的 auto-closable 资源, 只要资源是 final or effectively final。 Effectively final means that the variable can’t be changed once it has been initialized. 不显式地加 final 也行,IDE 会提示的。

为 anime 角色训练 LoRA 模型

之前看到Eric Fu发布的《狼与香辛料》中的赫萝的LoRA 模型。心里燃起一股冲动,谁不想为自己老婆炼一份模型呢,赶紧搜搜看怎么做。从基本一无所知到训练成功花了一天多,记录过程供大家参考。

完成这个事需要:

  • 对 Python 编写和环境搭建有一定了解,ML 项目或者老项目免不了有点依赖冲突。为了避免依赖混淆,我给每个工具都准备了独立的 venv。
  • 如果电脑是 Nvidia 支持 cuda 的 GPU,记得每个项目安装依赖前先把 pytorch-cuda 给装了,这个用 GPU,pytorch 是用 CPU 的。安装参考这个讨论
  • 一台不错的电脑,即使最后训练配置不够,是用 colab 之类在云上跑,数据集预处理之类还是本地跑比较方便。最后我是在本地炼的。装的是 pytorch-cuda,最后 torch 还是选择了用 CPU 跑,不是很懂怎么回事,但也有好处:虽然慢但不用担心内存溢出。

用到的工具/项目:

关于 SSTV 的知识

谢谢乔伊的视频让我对无线电产生了兴趣。

补一补专业知识

载波(carrier):作为传输基底的纯净的固定周期(频率)的高频率信号。

调制(modulation):动词或动名词,一种信号处理方式,通过往指定的载波中嵌入真正想传递的信号(信息)

  • 为什么要调制:
    1. 发信号的天线长度要不小于信号波长十分之一,高频波长短,容易用较短的天线辐射出去。
    2. 通过调制人工将不同信号隔离在不同频率,信号不串台。
  • 调制分为数字调制和模拟调制,指的是原始信息的形式
    • 数字是 01(比如无线网卡)
    • 模拟是个连续的波(比如麦克风直连电台发信器)。
  • 模拟调制的几种方式中有我们收音机上会看到的 FM、AM,英语字面缩写。
    • Frequency modulation 是调频(频率越高图示的线越横向密集,声音越尖)。
    • Amplitude modulation 是调幅(幅度越大图示的线谷峰高低差越大,声音越响)。

SSTV 格式

SSTV(slow-scan television,慢扫描电视)是一种将图片信息嵌入音频信号(并发送)的方式。SSTV 选用的方式是 FM,把图片的像素亮度映射为频率,越亮频率越高,彩色图片是发送颜色各自的亮度。

我在开发 Puntgun 中学到的东西

前言

Puntgun是我写的一个命令行工具,Python 语言,帮助推特账号管理自动化。 从 2022 年二月底开始写,到 2022 年十一月底碰到一个对我来说很难实现的编程问题, 加上当时马斯克成功收购推特,之后心思就不再它上面了。2023 年 2 月 9 日,推特不再提供免费 API,算是帮我下手了结了这个项目。 (从十一月的新闻我就判断马斯克不倾向于开放生态,不利好我这项目,你看果然吧,但确实没想到能做这么绝。) 这是我第一个尝试运营社区的项目,然后事情还没开始就结束啦。😂 项目框架已经写好了,可以自定义规则,示范用的规则没写几条就碰到了那个难题,算是基本实现目标吧。