只记录未来开发时可能用到的特性。
都 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 会提示的。
2023.3.14
2025.5.2
Craft
4489
9 分钟
之前看到Eric Fu 发布的《狼与香辛料》中的赫萝的LoRA 模型 。心里燃起一股冲动,谁不想为自己老婆炼一份模型呢,赶紧搜搜看怎么做。从基本一无所知到训练成功花了一天多,记录过程供大家参考。
完成这个事需要:
对 Python 编写和环境搭建有一定了解,ML 项目或者老项目免不了有点依赖冲突。为了避免依赖混淆,我给每个工具都准备了独立的 venv。
如果电脑是 Nvidia 支持 cuda 的 GPU,记得每个项目安装依赖前先把 pytorch-cuda 给装了,这个用 GPU,pytorch 是用 CPU 的。安装参考这个讨论 。
一台不错的电脑,即使最后训练配置不够,是用 colab 之类在云上跑,数据集预处理之类还是本地跑比较方便。最后我是在本地炼的。装的是 pytorch-cuda,最后 torch 还是选择了用 CPU 跑,不是很懂怎么回事,但也有好处:虽然慢但不用担心内存溢出。
用到的工具/项目:
谢谢乔伊的视频 让我对无线电产生了兴趣。
补一补专业知识
载波(carrier):作为传输基底的纯净的固定周期(频率)的高频率信号。
调制(modulation):动词或动名词,一种信号处理方式,通过往指定的载波中嵌入真正想传递的信号(信息)
为什么要调制:
发信号的天线长度要不小于信号波长十分之一,高频波长短,容易用较短的天线辐射出去。
通过调制人工将不同信号隔离在不同频率,信号不串台。
调制分为数字调制和模拟调制,指的是原始信息的形式
数字是 01(比如无线网卡)
模拟是个连续的波(比如麦克风直连电台发信器)。
模拟调制的几种方式中有我们收音机上会看到的 FM、AM,英语字面缩写。
Frequency modulation 是调频(频率越高图示的线越横向密集,声音越尖)。
Amplitude modulation 是调幅(幅度越大图示的线谷峰高低差越大,声音越响)。
SSTV 格式
SSTV(slow-scan television,慢扫描电视)是一种将图片信息嵌入音频信号(并发送)的方式。SSTV 选用的方式是 FM,把图片的像素亮度映射为频率,越亮频率越高,彩色图片是发送颜色各自的亮度。
前言
Puntgun 是我写的一个命令行工具,Python 语言,帮助推特账号管理自动化。
从 2022 年二月底开始写,到 2022 年十一月底碰到一个对我来说很难实现的编程问题 ,
加上当时马斯克成功收购推特,之后心思就不再它上面了。2023 年 2 月 9 日,推特不再提供免费 API,算是帮我下手了结了这个项目。
(从十一月的新闻我就判断马斯克不倾向于开放生态,不利好我这项目,你看果然吧,但确实没想到能做这么绝。)
这是我第一个尝试运营社区的项目,然后事情还没开始就结束啦。😂
项目框架已经写好了,可以自定义规则,示范用的规则没写几条就碰到了那个难题,算是基本实现目标吧。
微服务开发下的 build 困扰
前提:Java 开发,Maven 做依赖管理,JetBrains IntelliJ IDEA 做 IDE
在 Java 微服务开发下,项目开发结构 (repo) 可能有两种:
所有模块 (maven module),包括服务(Spring Application)和自己开发的依赖模块,都塞在一个项目里。
方便管理各模块间的关系,方便写代码
git log 很乱很多,但也方便集中检查
服务和自己开发的依赖模块独立在不同项目里
不方便管理模块关系
git log 少又清晰,只有该组件相关的提交
(以我的工作经历来看,两种结构怎么选好像和开发组的人员结构有关:如果负责不同服务的小组紧密围绕在开发组长周围,选集中式的面儿大;如果小组间相互不太紧密,比如这个项目是不同部门联合开发之类,选分散式的面儿大。)