This blog is rated  R⃣ , viewer discretion is advised

《兵车行》竖排实验

群里闲聊起究竟生男好还是生女好,就想起了这首诗

兵车行——杜甫 车辚辚,马萧萧,行人弓箭各在腰。 耶娘妻子走相送,尘埃不见咸阳桥。 牵衣顿足拦道哭,哭声直上干云霄。 道旁过者问行人,行人但云点行频。 或从十五北防河,便至四十西营田。 去时里正与裹头,归来头白还戍边。 边庭流血成海水,武皇开边意未已。 君不闻,汉家山东二百州,千村万落生荆杞。 纵有健妇把锄犁,禾生陇亩无东西。 况复秦兵耐苦战,被驱不异犬与鸡。 长者虽有问,役夫敢申恨? 且如今年冬,未休关西卒。 县官急索租,租税从何出? 信知生男恶,反是生女好。 生女犹得嫁比邻,生男埋没随百草。 君不见,青海头,古来白骨无人收。 新鬼烦冤旧鬼哭,天阴雨湿声啾啾!

测试下 css 的文字竖排。

字体来自 fonts.css

Posted

stdout

Re-index page on Google Search Console

Request indexing webpage with Google used to be fun and simple, now it's a tedious task especially when you have tons of old pages ready to be crawled yet Google is reluctant to move.

Here is a simple script to speed up the stacks of page you have click in …

Posted

stdout

Letsencrypt 在老版本macOS Ubuntu 上修复TLS证书错误

一觉醒来,打开浏览器,各种连不上,调试了一下发现说lets encrypt 的 acme https证书错误

仿佛记得V站讨论过这个事,以为和自己无关,结果也中招了。DST Root CA X3 根证书在国庆前过期了。

老版本 Ubuntu 修复:

sudo apt update
sudo apt install ca-certificates

老版本 macOS 修复:

需要手动导入并信任新的 ISRG Root X1 根证书。来自https://letsencrypt.org/certificates/

保存下列为 1.pem

-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh …

Posted

stdout

美国自来水 TDS 这么高?

看到个讲 Solar Roof 视频

他们家的 filtered tap water 测出来 TDS 为 358ppm

tap water 测出来 TDS 是 435 ppm,

说加州的市政供水很硬,有大量的钙、镁离子。都不敢直接拿来洗车,怕喷枪给表漆洗得坑坑洼洼;他们家太阳能光伏板很脏想冲也不敢,万一刮坏了不值。加州又是天天大太阳不下雨,还好他们家有两个大水桶接雨水,测出来TDS 20,刚好拿来冲屋顶。

这个说法令我很吃惊的。因为一直以来网上和一些老外都说中国自来水差什么的。美国水龙头打开直接喝。翻了一下,留学生论坛都说美国的自来水很硬,会掉头发什么的,看来 TDS 真的很高啊。

为啥网上会有「美国自来水水质很好水龙头打开直接喝」这个说法?翻了一些帖子,感觉应该是这样,老中过去留学、旅游的都是住旅店、公寓,其实一般楼栋那都统一装了净水装置 …

Posted

stdout

TiDB 的日期比较和 MySQL 不兼容

MySQL的

> select VERSION()
+-----------+
| VERSION() |
+-----------+
| 8.0.15-6  |
+-----------+


> select NOW() > '';
+------------+
| NOW() > '' |
+------------+
| 1          |
+------------+

> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1292 | Truncated incorrect datetime value: '' |
+---------+------+----------------------------------------+

TiDB:

> select VERSION()
+--------------------+
| VERSION()          |
+--------------------+
| 5.7.25-TiDB-v5.1.0 |
+--------------------+
1 row in set

> select NOW() > '';
+------------+
| NOW() > '' |
+------------+
| <null>     |
+------------+

> show warnings;
+---------+------+------------------------------+
| Level   | Code | Message                      |
+---------+------+------------------------------+
| Warning | 1292 | Incorrect datetime value: '' |
+---------+------+------------------------------+
1 …

Posted

stdout

macOS 设置 TCP 握手连接超时,提升浏览器在糟糕网络下的访问体验

多年的疑惑今天居然被偶然解开了。

由于墙内糟糕的网络环境,而且ISP甚至wifi内还有墙中墙,所以很多域名是打不开的。

每次看浏览器在傻乎乎的转菊花,就觉得浪费时间。

sudo sysctl  net.inet.tcp.keepinit=3000

这一条指令可以直接设置 macOS 的 TCP Keepalive 心跳包初始化时间设置为3000毫秒。

net.inet.tcp.keepinit默认值是 75000 ,单位是毫秒。注意 Linux 下没这设置,而且单位是 秒

这句话学究式的解释可以通过 man 4 tcp 得到,摘录几条:

TCP_CONNECTIONTIMEOUT The TCP_CONNECTIONTIMEOUT option allows to specify the timeout, in seconds, for new …

Posted

stdout

MySQL on duplicate key in SQLAlchemy

A simple function to upsert something atomically into MySQL

def upsert(val1, val2, **kwargs):
    """upsert val1-val2 pair into mysql and return the pk"""
    from sqlalchemy.dialects.mysql import insert
    from sqlalchemy.sql.expression import func

    # this val1-val2 pair should have UNIQUE KEY constraint in MySQL table.
    stmt = insert(MyModel.__table__ …

Posted

stdout

古墓丽影9(Tomb Raider 2013)治3D眩晕必备FOV补丁+禁镜头晃动

断断续续把古墓丽影9打完了。这款2013年的游戏放在今天看也很不错。

唯一的巨大问题就是3D头晕。网上找了一些办法。

禁止镜头晃动

虽然故事和镜头都很好,但是这晃动太烦人了,很容易头晕。值得庆幸的是 PC 平台可以彻底根治这问题。下载 Yamatai Patch。按图修改

增大 FOV

这是多年的经验。头晕的主要问题就是视野太窄。

去下载 Cheat Engine 安装并打开,然后下载内存修改表,按图修改。

以上修改都需要有管理员权限并且保证游戏正在进行中。顺便说下 Yamatai patch 还可以治好 Lara Croft 胸部发育不良的毛病。好顶赞!

Posted

stdout

行车记录仪视频ffmpeg合并转录存档,跳过重复的漏秒

手上有几个行车记录仪

  • VOSONIC 勤宇V10,也叫群华 路不平,用的 联咏 Novatek NT96550BG 的芯片,1080p
  • BLACKVIEW 凌度A12,采用 安霸(Ambarella) A12 方案,2k
  • PAPAGO 趴趴狗,GoSafe 560WiFi,采用 NT96670 芯片+IMX415的 sony CMOS,4k

特点是每5分钟切割成一个单独的文件,为了防止每两个视频之间漏秒,所以会额外重复写入1秒的内容

现在想把一段时间的视频合并成一个存档,并且要跳过那些额外的1秒,上 ffmpeg。

首先前摇,生成需要合并的视频文件路径列表

ls -fd1 /Volumes/SD_CARD/DCIM/xxxxx/*

的结果写成如下格式:

file 'input1.mov' …

Posted

stdout

Win10 自动设置开机锁屏壁纸

Win10启动后,锁屏界面有一些每天更新的漂亮的墙纸,但是每个用户进去却只能看到默认的墙纸,不能自动切换。很是遗憾,于是搞了一段小脚本弥补。

找个地方比如桌面,右键新建一个 est_win10_auto_wallpaper.bat

@if (@X)==(@Y) @end /* JScript comment
@echo off

cscript //E:JScript %~n0.bat

exit /b %errorlevel%
*/

var oShell = new ActiveXObject("WScript.Shell") ;
var oFSO = new ActiveXObject("Scripting.FileSystemObject");

var sWinDir = oFSO.GetSpecialFolder(0);
var sPath = oShell.ExpandEnvironmentStrings('%LOCALAPPDATA%\\Packages\\Microsoft …

Posted

stdout

Mac 命令行终端里获得视频文件的长度

记录一下,Mac OS X 10.6.8 或更高版本:

mdls -name kMDItemDurationSeconds -name kMDItemFSName  1.mp4

这命令有一个很神经病的一点,同一个 .mp4 文件,获取只读的 TF 卡上的就没法获得视频长度,复制到可以读写的本地硬盘上就可以读出来。

或者在 Finder 里新建一个叫 Movies 的文件夹,把视频文件放进去,然后列表展示,表头右键,就可以选择显示长度。。

同理,建立一个叫 Pictures 的文件夹,可以列表展示图片尺寸。。

来自 superuser 。真是神一般的设定。

Posted

stdout

FastAPI/Starlette+Requests实现反向代理

因为某些拉垮的业务需要,不得不在代码里去反向代理别的 HTTP API

一般格式如下:

@app.get('/other/{other_path:path}')
@app.post('/other/{other_path:path}')
async def other_api(other_path: str, req: Request):
    """透传 API"""
    host = 'http://example.intranet'
    url = '{}/other/{}'.format(host, other_path)
    body = bytes(await req.body()) or None
    r = requests.request(
        req.method, url,
        headers={
            'Cookie': req.headers …

Posted

stdout

OpenWRT 实现 Cloudflare 动态域名 dynamic DNS

首先得有公网 IP (废话),然后你得 OpenWRT 路由器桥接直拨。

这个方法的核心是通过 ifstatus wan | jsonfilter -e '@["ipv4-address"][0].address' 命令得到本机 WAN 的公网 IP。

根据官方的说明

  1. 创建 API Token 。权限选 All Zones,得到 TOKEN
  2. 验证 API 是否 ok
    curl - X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
    -H "Authorization: Bearer TOKEN" \
    -H …

Posted

stdout

nsq-py, pynsq, gnsq compared

nsq is a lightweight message queue like Kafka/RabbitMQ/RocketMQ/RedisQueue/Celery.

For python bindings there ware three libraries out there:

  • pynsq: the official build, but requires tornado
  • gnsq: the gevent only consumer/publisher, might have race condition in state machine. Don't use.
  • nsq-py: select() based, but compatible with gevent …

Posted

stdout

人和动物有什么区别

上下班通勤极度无聊,就趁着罗胖的10元优惠券买了 学而时嘻之 博主开设的 199元的 精英日课。之前一直讨厌这个名字,但是很喜欢 学而时嘻之 geekonomics10000 这个博客,就买了当付费 podcast 了。听第二课就讲了《未来简史2:我有意识,它有吗》,就提到了本篇的问题:

人和动物的区别是什么?

马克思认为是使用工具。很多人不认同,觉得这纯粹是为了引出劳动论,其二的确很多动物也会用工具。

《Homo Deus 未来简史》的作者 尤瓦尔·赫拉利 说,人和动物的区别区别是意识。但动物也是有意识的,甚至自我意识。比如鹦鹉会照镜子,认出自己,并且梳妆脸上的异物。和人相处的宠物很明显有情绪表达。

我认为,人类是地球上第一个进化出来能远程攻击的动物,而且是大规模群体协作那种,脱离了近身肉搏的低级趣味。如果你玩 RTS 就知道,远程兵种出现的意义是多么牛逼 …

Posted

stdout

javascript 一句话算农历

同步发帖在 v2ex

今天发现 Intl 这个 ECMAscript 内置对象,可以一句话算农历。

new Date().toLocaleString('zh-CN-u-ca-chinese').replace(/(\d+)\s*?年/, (_,y)=>"甲乙丙丁戊己庚辛壬癸".charAt((y-4)%10) + "子丑寅卯辰巳午未申酉戌亥".charAt((y-4)%12))

算农历最麻烦就是跨年。这个 API 处理得还挺好的。比如2020年1月的除夕夜+春节

new Date(2020, 0, 24).toLocaleString('zh-CN-u-ca-chinese').replace(/(\d+)年 /, (_,y)=>"甲乙丙丁戊己庚辛壬癸".charAt((y-4)%10) + "子丑寅卯辰巳午未申酉戌亥".charAt …

Posted

stdout

Covid-19 一些基本常识

  1. 检测 Covid-19 有几种手段:
  • 症状。比如发烧,呼吸困难,血氧浓度低
  • 影像。比如胸部 CT
  • 抗体。IgG/IgM。耗时短。比如15分钟。但是正确率 75%
  • 核酸。用 PCR 。耗时长,需要 BSL 高等级生物实验室。正确率 >90%

其中抗体检测主要是用来区分你得的是普通流感还是 Covid-19。并不能直接检测出 SARS-CoV-2。

而且:

  • 检测出抗体,(小概率)不一定是 SARS-CoV-2 导致的。
  • 没检测出抗体,也可能代表你
    • 免疫系统还没反应过来。病毒还在悄悄感染。
    • 免疫球蛋白 IgG/IgM 已经不顶用了。免疫系统被摧毁了,或者要开始细胞因子风暴了。
    • 也可能代表你的鼻腔 swab 没挖对。
    • 拭子挖对了但是未达到能显色的剂量 …

Posted

stdout

为什么会有数学家反对对无穷集合使用排中律?

因为现在 zhihu 要绑手机才能回答,所以还是写自己 blog 上吧。

对「为什么会有数学家反对对无穷集合使用排中律 」这个问题,我有一个胡思乱想的回答:

房间里的小明如果不是男生,那么他一定是女生。

其实也不一定。小明是个物品。

我觉得人类智慧的最大秘密就是 否定。否定一定要当心使用。常见的否定是限定在「同类别」的事物中。

但是由于自然语言的结构性缺陷,一些否定就成了谬论。

比如,如果你批评国家政策,就是不爱国。

喜爱的反面是憎恨?其实喜爱的反面是漠不关心。

The opposite of love is not hate but apathy。

所谓 those who are heartless, once cared too much

Posted

stdout

语音编程 设想

HN头条 上看到有人说用语音识别 写代码。

现在是疫情在家上班期间,感觉还是可以试试。毕竟公共办公环境搞这个不太现实,怕打扰别人用 TNT 了。也怕自己被打扰。23333

想起了 13 年前就有大神尝试用 Vista 自带的语音识别在 notepad 写 perl。。。

https://www.youtube.com/watch?v=MzJ0CytAsec

不过这篇帖子想说的不是这个 语音编程(voice assisted programming),我想说的是 可编程语音 (programmable speech)

现在市面上有很多「智障音响」比如 Alexa、小爱,手机上都可以直接说 ok boomer,但是我设想的 可编程音响 的使用场景是这样的:

  1. 离线wakup word + 离线识别 …

Posted

stdout

减速玻璃的原理

原来发表在 zhihu,可惜不绑手机不让发帖了。就自己写个 blog 备忘一下。

减速玻璃这个都会传说,买车前听说过,买车后也百思不得其解。今天突然想明白了。

减速玻璃靠的不是玻璃,而是靠挡风玻璃倾斜角度、中控台长度、驾驶者座位、A 柱宽度决定的。

简单的说,和 FOV 有关。

人对速度的感知,其实不是视野中心决定的,而是视野左右边缘两侧物体移动速度决定的。

25° FOV 视野:

45°视野

90°视野

不同视野角度的对比:

所以市面上为什么你们觉得捷达就没有减速玻璃?因为挡风玻璃比较垂直,驾驶者很容易看到车头,开车位置考前,在 A 柱范围内,更容易看到更开阔的路面。然后你的视觉感受就是车速很快

为什么好一点的车子觉得安装了「减速玻璃」?因为中控台厚,玻璃比较倾斜,看不到车头,A 柱粗。你们的视野受限,就觉得视野两侧物体运动慢 …

Posted

stdout

一些重要问题的答案 Important Why's

发现 blog 越来越喜欢记录一些哲学问题。。。

记录一些重要问题的答案,有些是自己想出来的,有些是网上抄别人的,有些是被别人启发自己补充一些的。这里面有些是对的,有些可能是错的。欢迎读者反馈。

Q: 什么是存在 What is Being (Dasein)?
A: 存在的最根本属性是稳定性。
古希腊有个悖论说一艘船叫 忒修斯(ship of Theseus),船上的木头因为损坏和腐烂被一块一块随着时间逐渐替换,如果有一天所有的木头都不是出厂的原装的木头,那这艘船还是原来的那艘船吗?

所以这里的存在分两个层面的稳定。从船的用途来说,忒修斯号因为设计没变,用途一致,所以忒修斯号依然存在;从忒修斯原装价值来说,因为木头都被换过一轮了,所以追求「原汁原味」的价值已经不存在了。这艘船至少还在「设计用途」这个层面保持了稳定,所以这艘船还有一定的存在意义。如果这艘船的木头被拆下来烧掉了,空气中的 Co2 和 地上一堆灰没有人会认为这是一艘船。

如果一个物体不停的变化,变化周期甚至小于普朗克时间长度,那么这样的东西压根无法观察,也无法影响我们的生活,所以就不存在 …

Posted

stdout

Fix Paladins stuck at Completing Login

Paladins is one of the F2P games on Steam. It's called 枪火游侠 in Chinese market with Tencent as its Partner operator.

To play it on Steam:

  1. Add any game to cart
  2. Modify region to US on the checkout page
  3. Type the following script into browser's DevTool
    jQuery.post('//store.steampowered …

Posted

stdout

公司文化的三种类型

最近播音737两次空难闹得全球沸沸扬扬,中国民航局敢为天下先直接停飞,FAA 最后也只能跟进然后全球停飞,风暴的中心就是波音公司。看到一篇报道,波音的一位工程师、资深工会Stan Sorscher,也是 SPEEA 的一位行业代表 (the Society for Professional Engineering Employees in Aerospace),画了一张有意思的图:

波音公司是由工程师创立的具有工匠气质的尖端科技公司。这里插一个题外话,波音之父其实是一个中国人 王助(Wong Tsu)

波音在90年代初,收到日本制造的冲击,拥抱了「质量」为重的团队文化模式,强调基层参与,流程改进和效率提升。但是90年代末期,波音公司文化再次改变,拥抱砍成本和给股东创造利润。这里看到787真是吓得一身汗啊。要知道你坐的梦想飞机每一个零部件都是由最低价中标商供应的。

为了方便你们抄袭这篇博客文章,我翻译成中文了。转载请按照传统做成jpeg截图,尽量造成读者复制不便。

工程师为导向 团队为导向 砍成本为导向
商业目标 创新,性能 产出 …

Posted

stdout

Open Source projects Chinese companies and individuals contributed to

Chinese companies have very little presence online and many people may believe that Chinese are reluctant to engage in open source projects.

Last year, @filmaj used the GitHub REST API to pull public profile information from all 2,060,011 GitHub users who were active in 2017 (10+ commits to …

Posted

stdout

Ubuntu Server 为什么这么成功?Wardley 地图

https://www.thoughtworks.com/cn/radar 看到的一个新概念,Wardley mapping

其实也不新了,2014年就出来了。见:

Simon Wardley OSCON 2014 Keynote: "Introduction to Value Chain Mapping"

如果你觉得各种软件工程 和 商业 diagram 很无聊,其实这视频前半部分也是讲为什么他们很无聊。

但是后面就有趣了。作者 Wardley 发明了一个新的东西:

  • 横坐标分为:Genesis, Custom built, Product, Commodity, Utillity, Evolution
  • 纵坐标讲 Value-chain。从 visible 到 invisible

其实很多 IT 或者互联网从业者 …

Posted

stdout