python版的mtr(traceroute for macOS)
首先,我讨厌编译,我喜欢二进制,直到昨天我惊讶的发现macOS上一个 yes 命令都是接近100KB的大小。homebrew 一大坨东西还不一定每次都成功。 说起编译,这几天读到一些关于软件法律方面的风险。zhihu说如果你的工具的不针对“特定用途”,那么就可以用一定免责的说辞,但是如果你提供下载只能拿来恰好做某一件特别具体的事,那么工具的提供者就有连带责任。我想这也是为啥大部分开源软件都是提供源码吧。我这代码又不能直接用,开源是为了研究技术。你自己编译之后拿来敲不对劲的命令那是用户自己的选择了。 那么回到主题, mtr 作为居家旅行必备网络工具,它只提供源码分发。9年前研究过,用python写了demo,但是终究不是太成熟,现在有 AI ,几句话就完成了 https://github.com/est/t..
更多尝试让AI手搓个TTF格式生成器
一个奇怪的需求:如何在浏览器判断一个字体是否支持某个字符? (原始需求是:遇到一些字符渲染错位问题,看起来是字体不支持,fallback 到别的去了。) 想到的方法是:用canvas渲染看宽度。但因为这个 fallback机制,所以更好的办法是拿一个已知的特殊字体去比对,如果fallback了说明不支持。 那么问题来了,这个 fallback font 你不可能下载一个包含所有字符的,那样体积会很大,所以最好是按需生成一个,只包含一个字符,用来比对。那么这个问题就转换成了:如何在浏览器js里动态生成一个 .ttf 格式的字体文件,只包含一个字符? 这里不考虑 woff woff2,因为前者已经过时了后者比 ttf 更复杂。 一开始以为很easy,让 ChatGPT搓,打开浏览器就懵逼 OTS parsi..
更多精打细算VPS扫除
2022年买的VPS一直没怎么管,今天想跑点东西发现大户 warp-cli 真是吃资源啊。果断删掉 公司的服务器都是SA管理,自己的一般很少去折腾,这次也是闲的,好奇系统里杂七杂八都是啥玩意儿,挨个找AI审问一遍 systemctl list-units --type=service --state=running blk-availability udisks2 插拔优盘的 fwupd 固件更新 ModemManager multipathd open-iscsi iscsid 存储用的 packagekit GUI包管理器 polkit GUI 策略kit snapd snapd.apparmor snapd.autoimport GUI里的 App store lvm2-monito..
更多I made a paste service
I've been busy vibe coding a paste service. Sharing content has been painful these days and I always have some snippets or images to share with my friends. The service is up and running in publick hosted $URL = https://p.est.im It's running on a free tier Cloudflare Worker with everything stored in D1. To upload a paste is easy, just curl -T /path/myfile..
更多gitweets:单html实现独立微博,拿git历史当feed流发推
twitter争议不断持续多年,先是各种 cancel culture 闹得动静很大,被一龙马买了之后更甚,社区分裂到 mstdn nostr bsky支流,各种话题炒上天,在众多替代品里,2022年看到个最别具一格的: 拿 git 当微博使 发推: git commit --allow-empty 加关注: git remote add <alias> <their fork url> 转发: git cherry-pick <their "tweet"> 脑洞大开。而且git基于merkle tree的,p2p 历史不可篡改,有web3那味了。 当时就饶有兴趣,挖了个坑准备搓个web界面。但是限于涣散的注意力,以及对css这种抽象排版玩不转,一直拖沓没做好。 周..
更多A single Python function for both async/sync
Scenario: I often need to write Python functions like: take some parameters and format them call an API with the formatted parameters parse the result and return chosen values There's a huge problem in step #2. In today's Python world, troubles arise because async/await are "infectious", In practice this function is splitted - like in Python stdlib, whe..
更多Windows 自动设置开机锁屏壁纸 V3
之前也写过,Windows下自动设置墙纸 V1,V2,今天发现两种方法都失效了。 于是一气之下搞了个 Bing Image of the Day 版本的。 保存为 change_wallpaper.bat 双击执行。加入自启动或者定时触发。 @if (@X)==(@Y) @end /* set Win10 wallpaper to Bing Image of The Day. By est.im @echo off cscript //Nologo //U //E:JScript "%~F0" exit /b %errorlevel% */ function http_get(url){ var xhr = new ActiveXObject("MSXML2.XMLHTTP") xhr.open..
更多正则获得国际电话前缀
2013年的时候喷过ITU这个国际电话号码,前缀是变长的问题 今天遇到问题,需要按国际区号初步分析归属地和供应商,stackoverflow和AI给的都很渣,写了个正则: re.compile(r"""\+ (1 # north america |(?: # 3 digits 21|22|23|24|25|26|29|35|37|38|42| 50|59|67|68|69|80|85|87|88|96|97|99)\d |[2-9]\d) # two digits """, re.VERBOSE) +1 开头的是北美,然后依次寻找3位的,再匹配2位的。 +7 本来是苏联的,现在给 哈萨克斯坦 和 俄罗斯 了,就当成两位的判定吧。
更多ss命令抓linux下偶发端口访问
Linux服务器一直有个TCP连上来发数据,跑到对应的机器上发现连接已经断了,对应的进程也退出了。估计是某种定时任务。 排查代码无果,只能通过命令行来监控。这里直接上ss命令 while true; do pid=$(ss -tanpe state established 'dst 10.11.22.33:4455' | awk 'match($0,/pid=([0-9]+)/,a){print a[1]}'); [[ -n $pid ]] && tr '\0' ' ' </proc/$pid/cmdline ; sleep 0.2; done; 解释下: while true; do ...; sleep 0.2; done;每0.2s反复刷新执行指定命令。 ss -ta..
更多白嫖百度网盘“单次转存数”500限制
找了个资源,点击保存,居然提示充SVIP。看了下免费用户每次最多保存500份文件。本来找资源就白嫖,让我充钱? 研究了一会儿,发现可以搞。 首先你去你网盘里建立个目录 0000-0500,准备存文件。这么起名字是因为你在自己网盘里多选也是最多选500个,所以每次存一个目录用来对照数量 分享链接里文件列表默认只展示前100条,是惰性加载,所以请用鼠标一直反复向下滚,务必拉到底,然后点击「名称」排序。这样方便对比有没有漏掉 F12打开 console 并粘贴下面的js。如果这一步看不懂建议直接放弃 Array.prototype.slice.apply(document.querySelectorAll( '.share-list dd.open-enable>span' ..
更多