对最近上海防疫的一些看法

首先先谈一些我以为的事实:

  1. 上海之前所推行的是引以为傲的所谓“动态清零,精准防疫”。说白话就是将整个上海市划分成许多小格子,当阳性病例出现,不必动辄封掉整个区,而只是封掉对应的格子,然后根据大数据迅速追踪密接,一网打尽。这种做法在 Omicron 入侵之前,是一种行之有效,扰民程度低,对经济运行干扰降至最低的策略。

  2. 而且,以旅客吞吐量排名,2021全年,虹桥和浦东机场分列国内第五和第八。如将两个机场加总,则上海的旅客吞吐量在所有城市排名第一。而如果看货物吞吐量,则浦东一个机场已经排名第一(虹桥的吞吐量是第十)。换句话说,上海作为港口城市,是在承担了国内最大的人员和货物进出的情况下,取得了去年的防疫成绩的。这也是之前为什么上海一直在国内似乎被视为“抗疫模范生”,这绝不仅仅是张文宏个人形象的功劳或媒体的鼓吹宣传。


接下来进入推论和个人看法的部分:

  1. 那么,相应地,在国内长期清零的背景下,当 Omicron 自外部传入,不意外地,上海自然首当其冲。这一点,上海是否有过预案,以及预案是否是“被动应对,放任传播,倒逼躺平”,恐怕不得而知。但也很难想象上海的许多专家会对国外的 Omicron 高达12的 R0 数据视而不见,不做预案。
  2. 但毫无疑问地,面对 Omicron,如果继续之前的策略(动态小网格清零),则必定无法实现清零。接下来就是路线问题:面对 Omicron,要不要使用大杀器(封城清零/全面清零)?
  3. 上海的态度是暧昧的,或者说,在宣传上是暧昧的。华亭宾馆当然是一个意外,但应该说是意料之中的意外。我感觉专家们的共识,似乎是“没得选”。
  4. 所谓没得选,就是说上海做不到封城清零。上海是全国人民的上海。其含义就是上海的经济活动不能停。实际上,我个人感觉来说,大部分北方城市基本已经是财政养着的城市。这样的城市,停下来问题不大。但上海作为造血的城市,在这一点上反而没有北方城市的自由。在基层一级,上海才是真正的手停口停。
  5. 那么,面对 Omicron,没得选就变成了真的没得选。
  6. 但中央不这么看。中央不能接受的是政治风险。政治风险就是 Omicron 在上海取得突破后向全国蔓延。这里的政治风险有几重含义:
    1. 此前宣传已经确定了中国的路线是严防死守清零的底线。此时搞策略转向,在各个层面都没有准备好;
    2. 疫苗:贵国的传统,不求有功但求无过。甚至在副作用更小的灭活疫苗推广上,仍然采用了较为保守的策略。(如果有老年人因为疫苗反应去世,并由傻逼公号宣传造成恐慌,那么势必对疫苗推广造成更大的阻碍。反正有隔离政策兜底,并不急着向老年人推广疫苗,或者对疫苗注射采取强制策略。)各地都是以奖励诱惑大家打疫苗,而并没有采取强制策略。相反地,很多其他国家则采取了半强制策略:我不强求你打疫苗,但不打疫苗不允许你进入公共场所(超市,电影院)。其结果,就是中国相对落后的全面接种率和老年人接种率。面对 Omicron,其实灭活反倒和 mRNA 效果相差彷佛。所以疫苗引进层面我不觉得有很大的问题。
    3. 隔离:在一个房价下降都要去政府门前静坐的国家,加上此前大力宣传的各种新冠后遗症,指望民众乖乖在家自行隔离是不大现实的。一旦引起大规模的恐慌并由此击穿医疗资源,全国都会变成2020的武汉。
  7. 这样一来,中央势必向上海施压。中央的想法是,不惜一切代价,也要在上海把病毒控制住。上海的想法是,你说得容易,钱呢,人呢,设备呢,方法措施呢。仅举一例,之前的核酸混测,面对 Omicron 的蔓延速度和自愈速度,已经力有不逮。等核酸检测结果出来,要么阴的人已经阳了,要么阳的人已经阴了。结果就是好多人都是薛定谔的阴阳人。各种困难一多,上海打心眼里觉得,我们上海人素质高,只要说明了情况,让大家乖乖在家里自行隔离,未必是一个不能接受的结果。相反,强行清零,才是不科学的做法。
  8. 这时候就有意思了。知乎名言:大是大非面前,你和我谈什么科学?正所谓路线错了,知识越多越反动。你们这些专家说白了就是不想执行上面的决议,还用所谓的专家权威来抗命。接下来就是派钦差,和地方进行利益交换和博弈,然后给一些资源,命令强推。
  9. 但政策的执行是一个很有意思的事情。当你要求下面执行一个他们不理解的命令,他们就只剩下不知变通地强推一条路了。下峰按着上峰的命令严格执行,只是为了保证自己不被追责。当执行人丧失了主观能动性,任何政策的推行都会演变成灾难。
  10. 但话说回来,我并不想把锅往那位头上一扣了之。我历来相信民众和政府不过是同一枚硬币的两面。有什么样的历史,就有什么样的人民;有什么样的人民, 就有什么样的政府。但作为工程师,我是相信科学才能定义大是大非的。或者说,不讲科学,也要讲调查,尊重客观事实。领导和专家意见不一,很难讲哪边是对的。或者说,一个无法让领导和专家形成统一意见的机制,却总是错的。目前上海疫情已经造成了许多悲剧。但我所担忧的,却是另一种可怕的官僚文化的蔓延,以及这种文化对决策机制的荼毒。

Python – 存储二进制数据及序列化

本文是一系列介绍Python数据存储的文章之一。其他文章是:

上周我们已经看到了如何将数据存储到纯文本文件里,这样无论是任何编辑器或者其他程序都可以读取。我们还了解到,如果使用逗号来分割数据,那么文件需要遵循一个标准,然后就可以自动兼容其他应用程序,比如电子表格。这种方法的主要限制之一,就是如果数据本身就含有逗号的,那么文件就不再具有可读性。

本文将进一步讨论数据的编码。这将是我们能够理解为什么您使用Python所保存的内容,能够为普通的文本编辑器或者Web浏览器读取。我们还将了解到,如果我们能以正确的方式对数据进行编码,那么就可以节省磁盘上的空间。最后,我们还将仔细的讲解保存纯文本文件和二进制数据文件之间的区别。

继续阅读

Python – 在文件中存储数据

原文链接

这是一系列涉及python数据存储的文章中的第一篇。其他文章见:

存储二进制数据及序列化

使用数据库存储数据

在Python中使用HDF5文件

在大多数python程序中,将数据存储下来以备后续使用都是其核心部分。无论你是在实验室中做测量,还是要设计一个网络应用,你都会需要将信息以一种稳定的方法存储下来。例如,如果你要在完成实验后分析结果,那么结果就必须存储下来。又或者你可能需要将所有注册了你的网站的用户的邮箱地址存储下来。

即使存储数据是最重要的事情,但在不同的场合下还是要使用不同的方法。必须考虑到不同的因素,例如产生的数据量,数据是否是自明的,你之后要如何使用这些数据等等。这篇文章将带你开始了解不同的存储数据的方法。

继续阅读

Python SQLite 数据库操作指导

Mar 7, 2014
by Sebastian Raschka


连接到一个 SQLite 数据库

我们将在本教程中使用的sqlite3是Python标准库的一部分,它是SQLite数据库的一个良好且简单的接口:没有涉及服务器进程,无需配置,也没有我们需要担心的其他障碍。

一般来说,在我们可以通过Python的sqlite3模块对SQLite数据库执行任何操作之前,惟一需要做的就是打开一个SQLite数据库文件的连接:

import sqlite3
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()

 

继续阅读

禁用系统 Win 键 或 Win+F 的方法

作为一个 Everything 的用户,一件必做的事情是将 Win+F 设置为打开 Everything 而不是系统搜索。

但要怎么做到这一点,就比较麻烦。常见的思路是 利用 AutoHotKey 来覆写 Win+F。但我的 Dell 笔记本有一些奇怪的问题,按下三个键以上的组合热键时,可能会导致 Ctrl 或 Alt 键锁定。

所以我需要的方法是禁用掉 Windows 自己的 Win+F 热键,再直接把 Win+F 指定为 Everything 的热键。

通过修改注册表可以实现 1. 禁用所有 Win 组合键 或 2. 有选择的禁用若干 Win 组合键。首先给大家一份系统 Win 组合键列表供参考。

Hot Key Brief Description
Win-B set focus to the taskbar notification area
Win-D show the desktop same as “Show the Desktop” on context menu
Win-E open Computer
Win-F search for files
Win-Ctrl-F search for computers
Win-M minimise windows same as Alt-M
Win-Shift-M restore windows same as Ctrl-Z
same as “Undo” on context menu
Win-R open the Run dialog similar to “Run…” on start menu
Win-T cycle forwards through task buttons on taskbar
Win-Shift-T cycle backwards through task buttons on taskbar
Win-F1 open Windows Help and Support
Win-Break open System Properties
Win-1
Win-2

Win-0
Quick Launch shortcuts
    1. 禁用所有 Win 组合键

打开注册表(Win+R,输入 regedit),在下列位置新建一个 Value 为 NoWinKeys 的键值,设置为 1。

Key: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Value: NoWinKeys
Type: REG_DWORD
Default: 0

2. 有选择的禁用若干组合键,例如我需要禁用 Win+F

打开注册表(Win+R,输入 regedit),在下列位置新建一个 Value 为 NoWinKeys 的键值,设置为 F。

注意这里如果需要禁用多个,继续添加字母即可。

Key: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Value: DisabledHotkeys
Type: REG_SZ or REG_EXPAND_SZ

重启后生效。然后将 Everything 的热键设置一下即可。

键盘

虽然穷,但像不少穷人一样,我乐于在一些买一些看似昂贵其实很便宜的小东西上折腾,简单说,就是各类外设。

最近大老远从日本扛了一把键盘回来。嗯,是的,鄙视我吧,不能免俗的买了一把机械键盘。


 

去之前仔细考虑过,要求如下:Filco,红轴,蓝牙,104键,美式布局。然而人生不如意十之八九。蓝牙断货了,我最后扛回来一把普通的 USB 键盘。

原先用的是戴尔的 8115,但用久了很脏。于是在一个无所事事的晚上,我就把它给拆洗了。拆洗之后不可避免的产生了想要买新键盘的念头。网上看了看,觉得还是一步到位,直接来一把 Filco 红轴退烧。

6123ueFI2+L._SL1200_

上面的 Win 键看起来让强迫症抓狂是么?不要担心,盒子里提供了两个侧刻的 Win 键键帽,换上之后,强迫症们就舒服多了。效果如下:

IMG_5974

 

 

好了,我们来谈谈剩下的一个问题。

这东西用起来怎么样,好用么,值么?

呃,我们现在不问这个了。以前我们是会问这种问题的。但现在,大家看到你买了这个东西,就结束了。其他的问题你可以去搜嘛,网上内容多得是。总之,我们现在想要的就是告诉大家,我跟风来了这么一次消费行为。晒点图给你们,晒之前最好 P 一下,就结束啦。使用体验什么的,反正我用了这么想,不代表你用了也会这么想。

哦对了,还有最最后一点,这东西从日本买很便宜,折合不到人民币700块。当然,很多人对键盘的期望价格是50块左右,这我也理解。买这么贵的键盘,是为了装逼么?唔。我只能说现在才想到买机械键盘来装逼,是不是太晚了?

 

Lbf, lbm, lbs 的转换问题

干机械,又要和英制单位,美标图纸打交道的人,常常会碰到这么几个词:

Pound(s), lb, lbm, lbs, lbf.

以及这么一个问题:

如何把 lbm 转换成 lbf?(How to convert lbm into lbf?)

比如,一个机构下面挂了 5000 pounds 的重量,现在想计算承载的压强是否超过许用应力(单位 psi, $$1psi = 1lbf/in^2$$),这时候你的承载到底是多少 lbf?

第一反应必然是 Google,Google 之后的第一个答案,却很可能把所有习惯了公制单位体系的人带到沟里去。

我们先从这个错误答案看起。其实,严格来说,这个答案并没错,只是不是你要的那个答案而已。

lbf 是力的单位,lbm 是质量单位,两者的关系:

$$1 lbf = 1 lbm * 32.2 ft/s^2$$

所以,当你需要把 lbm 转换成 lbf 的时候,要乘以这个 32.2 么?

NO.


这个问题的错误其实很简单。

$$1 lbf = 1 lbm * 32.2 ft/s^2$$只是 $$G=mg$$ 的变形而已。

做个简单类比,我们现在定义一个新的单位,叫做 kgf,1kgf 是 1kg 所受的重力。

那么,我们熟悉的 $$9.8N = 1kg * 9.8N/kg$$ 就会变成:

$$1 kgf = 1 kg * 9.8m/s^2$$

实际上,lbf 的定义就是 1 lbm 所受的重力,二者在数值上相等。但其中差了一个重力加速度 g。

所以,当需要把 Newton 转换成 lbf 的时候,就要当心了。

$$1 N = 1 kg m/s^2 =2.20 lbm3.28ft/s^2 =7.216 lbm*ft/s^2 =7.216/32.2 lbf= .224 lbf$$