avatar
Rei
daisyUI - 我找到了理想中的 UI 库
我已经有几年时间没有使用 UI 库,近几年的项目我都是从头开始写 UI,小到按钮、对话框,大到响应式布局。原因是以前的 UI 库样式千篇一律,又难以定制,我宁愿从头开发。 重复了几次后,我感觉累了。UI 优化是没有尽头的,工作量已经影响到功能开发。有时我会觉得,如果自己没有 CSS 经验,就不会花那么多时间在 UI 上了。 最近开始一个新项目的时候,我决定放弃什么都自己做的想法,选一个过得去的…
avatar
busylog
One liner powershell for ipv6-literal.net
Read-Host "Enter IPv6 address" | %{ ($_ -replace ':','-' -replace '%','s') + '.ipv6-literal.net' }
avatar
busylog
Example Windows Sandbox conf (wsb)
<Configuration> <AudioInput>false</AudioInput> <VideoInput>false</VideoInput> <MemoryInMB>8192</MemoryInMB> <MappedFolders> <MappedFolder> <HostFolder>C:\Users\USER\Downloads</HostFolder> <SandboxFolder>C:\Users\WDAGUtilityAccount\Downloads</SandboxFolder> <ReadOnly>false</ReadOnly> </MappedFolder> </MappedFolders> <LogonCommand> <Command>netsh advfirewall firewall add rule name="SearchHost.exe" dir=out action=block program="C:\Windows\SystemApps\MicrosoftWindows.Client.CBS_cw5n1h2txyewy\SearchHost.exe" enable=yes</Command> <Command>netsh advfirewall firewall add…
avatar
wulu
Docker容器中的定时任务:使用Supercronic运行Python脚本
在上一篇文章中,我介绍了 eudic-maimemo-sync 项目——利用 Python 脚本调用欧路词典和墨墨背单词的开放API将生词本自动同步到墨墨背单词,并演示了如何用 Docker 将其部署到树莓派上,每天自动执行同步。 这篇文章,我想分享我在配置 Docker 容器实现定时任务时遇到的一个问题,以及我是如何解决它的:我最初在容器内使用标准的 Cron 服务来调度 Python 脚本。但我发现,即使把环境变量传入了容器…
avatar
Rei
用 Ruby 实现基于大模型的命令行角色扮演脚本
最近想研究一下大模型的使用,为了练手写了一个命令行角色扮演脚本,在此分享。 先看效果: 录屏2025-05-22 16.30.50.mov 代码放在文末,这是一个单文件脚本,运行需要安装 Ruby 环境。 使用的时候把代码保存在本地,例如 main.rb。 申请一个 OpenAI 兼容的 API(我用的是 DeepSeek),设置环境变量到同目录的 .env 文件,内容为: OPENAI_BASE_URL=https://api.deepseek.com OPENAI_API_KEY=sk-xxx 然后执行 ruby main.rb 即可。 脚本代码: require "bundler/inline" gemfile do…
avatar
咕咕乔
中银汇率查询TGBot
项目地址 https://github.com/Goojoe/chinaBank-Exchange-TelegramBot 直接使用 https://t.me/chinaBank_Exchange_bot 开发此机器人的目的,摆脱难用的APP。而且可以快速地计算我需要的汇率价格。 全程使用Claude开发,一开始还以为很简单。结果写到500多行代码的时候完啦,全乱了,完全没法维护。只好又花了三天重写。用大模型写代码会消耗很多Token,即使我用Claude Pro也不够用,思考有很多重复的。没办法,我又不会写代码😂。开发…
avatar
steve lee
Ruby - Job scheduling lock with Redis
Introduction In a Rails app, sometimes you need to execute a long-running job and have to run it in the background. You might run into some special requirements to avoid duplicate jobs Problem 1 You must delete the user and all related data in CleanupDataJob job. It will take a long time, and to avoid some problems, such as database-locking, you need to keep only one user deleted at a time. Problem 2 You have the ProductSalesJob to fetch the sales data of the product and calculate some numbers. What if you had 100 of these jobs? Your…
avatar
咕咕乔
ClewdR 部署到 huggingface space
ClewdR 是一个高性能、功能丰富的 Claude 逆向代理实现,使用 Rust 语言完全重写,旨在克服原版 Clewd 修改版 的局限性。ClewdR 设计注重速度、可靠性和易用性,为用户提供与 Claude AI 模型交互的无缝体验,同时显著改善用户体验。 开始 创建空间 前往 https://hf.space 点击右侧的 New space 创建一个空间 填写详情页 上传 Dockerfile 下载 Dockerfile.huggingface 手动重命名为Dockerfile并上传 状态为 Running 后打开日志 LLM API Password 为请求 API 的密码 Web Admin Password 为前端管理密码 API 地址 复制后加上/v1…
avatar
Rei
用 Hotwire Turbo 实现常驻侧边栏
最近用 Hotwire Turbo 改进了 Geeknote 的首页,减少了重复查询和渲染,想分享一下过程。 问题 Geeknote 的首页有个侧栏区域,区域内展示了一些次要内容,有热门标签、推荐用户,和社区统计等,未来还可能加一些广告代码或友情链接。 问题在于,这个区域的内容并不重要,但是需要的查询并不少。热门标签需要对近期标签使用进行统计排序,推荐用户需要关联当前用户是否关注,社区统计比较简单只是对几个表的总计数。在用户切换 Tab…
avatar
busylog
Mojibake problems
iso-8859-1 -> cp1252 is used in early windows. cp437 is mainly used in dos & defined as one of zip encoding (to save any byte). c4 = list(bytes(range(256)).decode('cp437',errors='ignore')) c12 = list(bytes(range(256)).decode('cp1252',errors='ignore')) # c88591 = list(bytes(range(256)).decode('iso-8859-1',errors='ignore')) len(c4), len(c12) # (256, 251) for i in c4: if i not in c12: print(i, end='') # cp437 only # ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐½¼¡░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣστΦΘΩδ∞φε∩≡≥≤⌠⌡÷≈∙√ⁿ²■ for i in c12: if i not in c4: print(i, end='') # cp1252 only…
avatar
Rei
我的 kamal 生产环境配置
Kamal 是 Basecamp 开源的一款部署工具,它的工作模式类似 Capistrano,但使用 docker 解决依赖封装。它原始设计用于 Rails 应用,由于使用了 docker,只要应用可以 docker 化也能使用 kamal 部署。 Kamal 的使用率在 Rails 社区越来越高,问题也随之出现:Build 的过程遇到网络问题怎么办?Secret 应该存在哪里?怎么配置 CI/CD? 这些问题我在实践中也解决过,在此分享我的解决方案。方案不是唯一的,有其他方案欢迎在评论区留言。 本文假设你已经读过 Kamal 官方…
avatar
busylog
WoA on qemu (2025 ver)
prepare for macvtap. the default 52:54:00:12:34:56 mac address is unchanged and the windows instance would be activated by others' license. sudo ip link add link eth0 name macvtap0 type macvtap mode bridge ||: sudo sysctl -w net.ipv6.conf.macvtap0.autoconf=0 sudo sysctl -w net.ipv6.conf.macvtap0.disable_ipv6=1 sudo ip link set macvtap0 allmulticast on address 52:54:00:12:34:56 up ||: TAP=tap$(cat /sys/class/net/macvtap0/ifindex) sudo chown USER /dev/$TAP optional: share the sd card as virtio-blk (the user needs to be in group disk, and…
avatar
busylog
Use movefile in sysinternals to clean files with powershell
the PFRO functionality deletes files the next boot, before some applications start to use the file. Example (elevated): Get-Item C:\DumpStack.log | %{ movefile '/nobanner' $_.FullName '""' } $a = New-Object System.Collections.Generic.List[System.Object] Get-ChildItem -Recurse ($env:USERPROFILE + '\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState')| %{$a += $_.FullName} Get-ChildItem -Recurse ($env:USERPROFILE + '\AppData\Local\Microsoft\Windows\Explorer')| %{$a += $_.FullName} Get-ChildItem -Recurse ($env:USERPROFILE + '\AppData\Local\Microsoft\Windows\Caches')| %{$a += $_.FullName} Get-ChildItem -Recurse ($env:USERPROFILE + '\AppData\LocalLow\Microsoft\CryptnetUrlCache')|…
avatar
yuan
GPS 数据解析
最近研究 GPS 的数据解析,发现网上都是零零散散的知识,干脆整理一份完整点的出来。 卫星是怎么向设备发送数据的? 卫星数据并不会主动单独发给你设备,而是持续不断地广播导航信息。卫星发的是原始导航信号,包括:时间、位置、卫星状态等信息。数据速率非常低,例如 GPS L1 频段的数据速率是 50bps; 这些原始信号由接收机(GNSS 模块)接收、解码、计算后,再通过串口、USB 或其他接口输出成我们能理解的格式,比如 NMEA 字符串。 GNSS 模块(比如…
avatar
Rei
在 Rails 实现返回按钮
Geeknote 遵循 Material Design。Material Design 经常使用返回按钮,我在实现返回按钮的过程发现一些问题,在此分享。 返回按钮跟浏览器的原生返回按钮类似,但又有所不同: 如果直接打开一个页面,应该有默认返回的上级页面。 如果一个页面有多个入口,应该返回对应的入口。 从外链进入一个页面,不应该返回网站外部。 先看看有什么实现方式。 探索 固定链接 最容易实现的就是固定链接,例如文章页返回网站首页,评论页返回文章页。但如果用户从…
avatar
Rei
搭建反向代理降低网站网络延迟
最近我通过在香港机房搭建反向代理,将 Geeknote 的国内访问延迟从 300ms 降低到 50ms,以下分享解决过程。 问题产生 Geeknote 一开始部署在 Fly.io 的香港机房。Fly.io 的特色是在全球提供多个区域机房,通过任播网络使访问者访问靠近自己的边缘节点从而降低访问延迟。理想情况下,中国大陆访客的请求应该到达香港机房,获得最低访问延迟。 可惜的是,Fly 的任播网络优化并没有覆盖中国大陆,中国大陆访问可能会…
avatar
Rei
Geeknote 2.0 回顾和展望
经过漫长、痛苦和纠结的开发,Geeknote 终于以新形态出现在大家面前,我愿称之为 2.0 版本。可能有人会想,不就是一个冷门、不起眼,没什么技术含量的博客平台,有什么痛苦和纠结呢?我想借此机会分享一下心路历程,以及未来的展望。 Geeknote 第一篇帖子发布于2021年07月02日,竟然已经过了三年多的时间。开发这个网站的初衷,是想提供一个体验良好、网络友好的技术分享平台。回顾当时国内的同类平台,要不体验不好,页面乱糟糟的…
avatar
iamai
AGI在当前硬件条件下的智能上限(未来2-3年)总结
一、架构能力上限 主力架构:Transformer,仍是AGI发展主线,支持千亿~万亿级参数、多模态输入、百万token上下文。 新兴架构:RWKV、Mamba、RetNet等更高效、线性复杂度、适合长序列,提升算力利用率。 世界模型与神经符号混合尚处探索期,2-3年内或见于特定领域(如数学推理、物理建模)。 二、算力与瓶颈 Scaling Laws仍成立:性能随参数、数据、计算量呈幂律提升。 Chinchilla定律:更优训练策略是等比例扩展模型与数据。 瓶颈1:训练数据耗尽;瓶颈2…
avatar
HackerPie
灵活与专注——谈谈我这几个月来的远程工作体验
从今年 8 月开始,我入职了一家新公司,正式开始了我的远程工作。记得面试的时候,面试官问我如何看待远程工作,我说作为对比,我比较反感办公室里被人轻易打断我的工作,所以我第一个期待的是远程工作可以减少打扰。事实上,几个月下来,远程工作总体而言带给我的还是很多幸福感的,第一时间想到两个主要的点:灵活的工作地点,以及不被打扰的空间。 远程工作给我的幸福感 灵活的工作地点 工作地点…
avatar
HackerPie
PostgreSQL: 一个在 DDL 事务中同时增加列和移除外键索引触发的线上数据库死锁问题
上周将一个大功能发布到了线上环境,但是在半个多小时后收到数据库从库(我们使用的是 PostgreSQL 数据库)CPU 使用率接近 100% 的告警,同时 APM 监控表明部分 API 响应时间明显变长,并且相关 API 的错误追踪里会看到 Statement Timeout 错误。经过版本回滚后,数据库和服务恢复正常。后面是漫长的根因分析的过程,而最后我们确定的原因,竟是一个 Rails migration 触发(注意不是导致,因为死锁还得找到和它形成相互等待的另一方…