吐槽pynsq,另外给subprocess糊了一个异步
pynsq太烂了 起初是因为需要在 Web API 里消费一个消息队列(nsq),给浏览器返回 EventSource 做实时输出。但是没想到官方库pynsq居然写得这么渣: def _handle_term_signal(sig_num, frame): logging.getLogger(__name__).info( 'TERM Signal handler called with signal %r', sig_num) tornado.ioloop.IOLoop.current().stop() def run(): """ Starts any instantiated :class:`nsq.Reader` or :class:`nsq.Wr..
更多如何删除 C:\Windows\WinSxS 文件
天气热得心慌,看Win10不爽,决定删几个文件玩玩 首先你需要以 SYSTEM 用户启动 cmd.exe Win+R 敲入: "\\live.sysinternals.com@SSL\DavWWWRoot\tools\PsExec.exe" -i -s cmd.exe 回车。确认当前身份敲入 whoami 夺权:takeown /F "C:\Windows\WinSxS\Backup" /A /R /D Y 授权:cacls "C:\Windows\WinSxS\Backup" /T /G SYSTEM:F /C 开删:rd /s /q "C:\Windows\WinSxS\Backup" 爽! 当然,你也可以让系统代替你清理: Dism.exe /online /Cleanup-Image /Sta..
更多从 Leanote 迁移到 Obsidian
差不多积累了10年的笔记,因为软件开发商跑路去做 2B 了,这玩意也没人维护了。换 Obsidian Leanote 不支持导出 .md 但是它自己的格式就是 json,转换一下很简单。 把一个目录下的笔记批量导出为 Leanote 格式,比如导出到 /tmp/folder1 执行Python代码 import json dir = '/tmp/folder1' for n in os.listdir(dir): if not n.endswith('.leanote'): continue with open(f"{dir}{n.replace('.leanote', '.md')}", "w") as f2, open(dir+n) as f1: f2..
更多1900年居然不是闰年?
看HN讨论 昨天2024-02-29有哪些闰年的bug,有一个吃惊了 >>> datetime.datetime.strptime('Feb 29', '%b %d') ValueError: day is out of range for month python的 datetime() 默认 year=1900。但是心里想 1900 不应该也是闰年吗? 查了下还真不是。囧。一年有 365.242374 天: 近似看成 365.25 天就是4年一润; 剩余的精度 365.25-365.242374 == 0.0076 天 而且,0.0076 ✖️ 400 == 3.0504,也就是每400年要润3天 结论就是每100年一润,但是每400年又不润 比如 1700, 1800, 190..
更多穷人的supervisor OOM killer
厂里的docker上跑了个supervisord,用来把挂掉的进程拉起来。最近的问题不是进程挂掉,而是内存泄漏 跑着跑着内存爆了,然后宿主机OOM随机杀掉一个进程,结果占用内存最大的那个还活着,正常的进程反而gg,该漏的继续漏,然后反复OOM。想看下哪里漏了,--cap-add=SYS_PTRACE 也不给加,OOM策略也不给调,思来想去只能自己做防水补漏了。做起来也简单,supervisor再跑一套bash脚本即可: while true; do p=`ps --no-headers -xo rss,pid --sort=-rss | awk '{ if($1 > 1000000){ print $2 } }'` kill $p 2>/dev/null || echo ..
更多FastAPI/Starlette 长连接感知断开
之前写过如何 在服务器重启的时候感知长连接,最近发现折腾复杂了。 https://github.com/encode/starlette/discussions/1776 测试代码: import asyncio async def async_streamer(): try: while True: yield b"--boundary\r\nContent-Type: text/plain\r\nContent-Length: 1\r\n\r\n1\r\n" await asyncio.sleep(0) except asyncio.CancelledError: print("caught cance..
更多query git notes with Github GraphQL
git notes is an interesting feature, you can use it like git notes add -m "hello test git notes" git push origin 'refs/notes/*' Github supported them back in 2010 then gave up LMAO. If you need to retrive them with Github API, try GraphQL like this { repository(owner: "est", name: "snippets") { refs(refPrefix:"refs/notes/",first:1) { ..
更多VPS推荐:Hosteon
继续上次 Racknerd 之后发现这家还行。写了个爬虫扒了一下各色配置,独立服除外,有需要的自取 pid spec Disk Bandwidth Annual $ 1 1C512M 5GB 100Mbps $27.00 7 6C8G 100GB 100Mbps $270.00 77 1C1G 10GB 1Tbps $21.00 78 2C1.5G 20GB 2Tbps $36.00 79 2C2G 25GB 3Tbps $45.00 80 2C2.5G 30GB 4Tbps $54.00 81 3C3G 40GB 5Tbps $63.00 83 3C5G 50GB 8Tbps $90.00 84 6C10G 120GB 12Tbps $180.00 85..
更多太阳系天体的 unicode 符号
发现Astronomical symbols,Planet symbols 及 Alchemical symbol IAU 七金 符号 名 name 星期 七曜 备注 金 ☉︎ 太阳 Sun 星期天 日曜 银 ☾ 月球 Moon 星期一 月曜 也可以画成 ☽︎ 或者月相 🌑︎🌒︎🌓︎🌔︎🌕︎🌖︎🌗︎🌘︎,🌚︎🌛︎︎🌝︎︎🌜︎︎ H 汞 ☿ 水星 Mercury 星期三 水曜 赫耳墨斯(Hermes),罗马人称 Mercury现代人称「爱马仕」的双盘蛇带翼权杖 Caduceus ☤ V 铜 ♀ 金星 Venus 星期五 金曜 维纳斯 E 🜨 地球 Earch Bible 里说的四条河把地球分成四洲另外的符号是 ♁ 表示十字架钉个球 glo..
更多Getting started blogging on Win10
I am planning to setup by blogging environment on my Windows PC. OS: Windows 10 Shell: Bash on WSL1 Program: pelican on Miniconda3 with Python 3.11 My objective today is get rid of the static/js/core.js from aether-pelican theme and replace it with a simple CSS, and it turns out quite challenging. WSL1 and file system As it turns out, the installed Ubun..
更多