Glyphica: Typing Survival 短评
Foreword 无意间发现一个有趣的打字游戏,有点像小时候的金山打字通里的打字小游戏 Glyphica: Typing Survival https://store.steampowered.com/app/2400160/Glyphica_Typing_Survival/ 游戏模式类似吸血鬼幸存者的模式,在各种单词围攻下活下来,要做的仅仅是输入单词即可 当前是试玩demo,非完整游戏 游戏有4种难度,后两种试玩版不能解锁,感觉应该是越难速度越快,同时单词也越长 游戏画风清冷,整体UI一致性也比较好 音乐和游戏画风相得益彰 每次升级都可以获得一个升级或者新武器,在这里的选择也是通过打字完成的 拾取战利品可以解锁一个perk 死亡..
更多一日一技:如何正确处理多行字符串的缩进问题
有时候,我们需要使用多行字符串配合format格式化函数来生成Markdown文本。例如,我现在开发了一个AI对话机器人,我发送一个txt文件过去,他首先帮我总结整个文件的内容,然后以问答的形式列出10个要点。你的代码可能是这样写的:1234567891011121314def bot(text):summary = summary_text_by_gpt(text)qa = get_qa_by_gpt(text)output = '''## 文本总结{summary}## 核心问答{qa}'''return output返回Markdown以后,通过前端渲染出正常的文本。但如果你直接这样写,你会发现Markdown的渲染好像出问题了。如下图所示:为什么会出现这个问题呢?其实很简单,因为你的Markdow..
更多一日一技:为什么这个JSON无法解析?
我们知道,Python里面,json.dumps是序列化操作,json.loads是反序列化操作。当我使用json.dumps把一个字典转换为字符串以后,也可以使用json.loads把这个字符串转换为字典。那么,有没有可能出现这样的情况:某个字典,使用json.dumps转换成了字符串s。但是当我使用json.loads(s)时,却会报错?你别不信,我们来做一个实验。执行下面这段代码,打印出一段JSON字符串:12345678910111213import jsontext = '''## 摘要这篇文章主要包含xx和yy## 详情1. abc2. def'''item = {'title': '关于abc', 'raw': text}output = json.dumps(item, ensure_as..
更多DPO
简介DPO全称Direct Preference Optimization,它是RLHF算法的一种,相比PPO算法来讲,它只需要actor和ref model,少了critic和reward model。其核心期望为good loss - bad loss越来越大, 这点和排序模型中的rank loss很相似,但是又不希望和ref model偏差太多。 最小实现代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859from copy import deepcopyimport torchimport torch.nn.functional ..
更多使用 Sequelize 事务读取数据库时的隔离级别
Sequelize 是一个流行的 Node.js ORM(对象关系映射器),它支持 PostgreSQL、MySQL、MariaDB、SQLite 和 Microsoft SQL Server 等多种数据库。在使用 Sequelize 处理事务时,可以指定事务的隔离级别。事务的隔离级别决定了一个事务可能受到其他并发事务影响的程度。在数据库管理中,隔离级别主要解决以下四种问题:脏读(Dirty Read) :一个事务读取到另一个事务未提交的数据。不可重复读(Non-repeatable Read) :一个事务在其执行期间多次读取同一数据集,但由于其他事务的修改,导致两次读取的结果不一致。幻读(Phantom Read) :一个事务执行两次查询,第二次查询结果包含了第一次查询中未出现的新行,这是因为另一个事务..
更多为 UWP 的 TextBlock 实现鼠标悬浮时显示和隐藏内容
这两天给我的窗边岛项目实现了 X 岛揭示板网页中的防剧透功能。这个功能本质上就是,当鼠标悬浮在文字上时显示原本的内容,当鼠标移出文字时则用黑块代替。即 X 岛揭示板 窗边岛 虽然说起来很简单,但是好像网上并没有针对这个需求有什么相关的内容,所以在这里记录下我的实现,权当抛砖引玉。 背景在 X岛揭示板中,防剧透是通过 [h][/h] 这个自定义标签实现的,所以上面 GIF 图中的文字其实是正常文字--[h]防剧透文字[/h]--正常文字--[h]防剧透文字[/h]--。那么这里要做的就有两件事:解析这个自定义标签,以及在 TextBlock 控件中实现黑块和正常文字的互相替换。 为 TextBlock 对象填充内容TextBlock 对象有两种填充内容的方式: 直接将内容放入 Te..
更多常用 lsof 命令备忘
记录 lsof 命令常见用法备忘 网络12# 显示所有网络连接lsof -i 根据协议类型筛选1234567891011# 仅显示IPv4网络连接lsof -i 4# 仅显示IPv6网络连接lsof -i 6# 仅显示TCP连接lsof -iTCP# 仅显示UDP连接lsof -iUDP 根据目标地址和端口号筛选12345678# 根据目标地址筛选lsof -i@${HOSTNAME_OR_IP_ADDRESS}# 根据端口号筛选lsof -i :${PORT_NUMBER}# 组合lsof -i@${HOSTNAME_OR_IP_ADDRESS}:${PORT_NUMBER} 根据端口状态筛选12345lsof -i -sTCP:${STATE}# 示例lsof -i -sTCP:LISTEN..
更多简单理解 NTP v3 协议
前段时间瞎折腾,给自己的黑莓 Bold 9900 写了个通过 NTP 同步时间的小工具,顺便在这里记录一下我在实现一个 NTP 客户端时对这个协议的理解。 端口号NTP 协议使用 UDP 作为传输层协议,服务器监听 UDP 端口 123,在收到有效的报文后,服务器会发送响应报文,否则服务器将直接忽略不做响应。 时间格式NTP 协议使用三种时间格式。 NTP 短时间格式短时间格式长度为 32 位,其中高 16 位代表从 NTP 时间戳 0 秒至现在的秒数,低 16 位代表 1 秒以内的分数部分。这个格式只会在 NTP 报文的 delay 和 dispersion 字段中用到。 12345 0 1 2 ..
更多RLHF-Actor-Critic
简介值函数希望学习一个价值函数,这个值可以用于评估当前决策的分值。策略函数希望学习一个策略函数,拿到其动作的概率分布。 Actor-Critic是在策略函数的基础上,额外引入学习价值函数,来帮助策略函数更好地学习。 下面这个图很好表示了两者关系。 重点看actor-critic算法中update函数log_probs部分。actor采用策略,critic来进行评价。
更多在 Linux 中显示所有正在监听的 TCP 端口
netstat1sudo netstat -tulpn | grep LISTEN其中 -t 表示显示 TCP,-u 表示显示 UDP,-l 表示显示监听的端口,-p 表示显示对应的程序名,-n 表示不去查询 IP 对应的主机名。lsof1sudo lsof -i -P -n | grep LISTEN其中 -i 表示显示 IP 协议,-P 表示把端口号保留为数字形式,-n 表示不去查询 IP 对应的主机名。
更多