一片祥和、歌舞升平有什么卵用?

2020 年 1 月 24 日到 25 日,是中国农历传统的除夕夜与大年初一,电视里春节联欢晚会歌舞升平,一片祥和,而在这个国家几乎中心的位置 —— 湖北,其最后一个市襄阳也同时宣布于 2020 年 1 月 25 日 00:00 起“封城”,至此湖北省完成了“封省”。这也意味着武汉市、湖北省和中共中央政府的失职、渎职而加深的肺炎疫情比上次 2003 年的 SARS 疫情还要严重得多。

歌舞升平、一片祥和既不能当疫苗使也不能当饭吃,这次已经这样了,普通人在捐款捐物的同时,为什么不能好好问责政府,难道问责政府的人是希望还有下一次?需谨记,若批评不自由,则赞美无意义。

Continue reading 一片祥和、歌舞升平有什么卵用?

当真相被隐瞒的时候

原来以为,自 SARS 过去了 10 多年之后的今天,“小汤山”只会存在于历史中,没想到 ——

越是隐瞒,越是想要“维稳”,延后到不得不承认的时候,造成的社会影响、恐慌越大。

对比一下这两种情况,「某省市 3、5 人确诊感染未知肺炎」和「634 例确诊,422 例疑似,仅 2 省市无疑似病例」。

前者早知晓、早控制,周边无论是医护还是民众也有时间做好预防与准备。同时民众在有及时的公开、透明信息的情况下,自身也会“趋利避害”地远离易感染的场所,疫情则不至于悄无声息的扩散。

而后者,疫情已经扩散开来,在政府隐瞒真实疫情的时候,多米诺骨牌一个一个倒下,现在已然来到了需要对源头甚至其周边城市“封城”的时间。

选择了后者,花出去的人力物力也必然大于前者,对经济的影响无疑也是巨大的。最重要的是,在“一片祥和”中感染了病毒的人数则可能大大增加,带来的后果现在大家有目共睹。

有人说,“都现在这个时候了,问责不是首要的”。

在某种程度上是 —— 对于疫区以及现在因为政府没有及时、有效、透明公开信息而感染的患者来说,他们现在连自己是否能撑过去,撑过去了是否会留下后遗症都不知道;对于在疫区第一线工作的医护人员来说,他们都是冒着可能被感染的风险 —— 而这些可能的后遗症与风险对于他们当中多数人来说本是可以避免的

但是对于我们,既不是医护人员,也不是感染了武汉肺炎 2019-nCoV 病毒的人来说,我们除了为疫区的朋友提供物资、信息之外,另一件还可以做的就是对政府问责!毕竟提供物资、信息等可以帮助减缓到这一次的疫情,可是却防不了下一次

Continue reading 当真相被隐瞒的时候

我們的敵人是遠比病毒可怕的愚昧和壞

我最早聽聞有武漢肺炎病毒「2019-nCoV」的時候,大約是在 2019 年 12 月初,當時在推特上已見到有不少人討論。然而那個時候國內還是摀得嚴嚴實實,到後來還有“闢謠”,甚至還逮捕了 8 個“散佈謠言者”。

同時,當有人在某網站上提問“武漢肺炎”時,該網站直接刪除掉用戶提問,而理由則是狗屁不通的“違反社區管理規定”

今天再回過頭來看這些,真的不禁讓人想問責武漢市的 CDC 和警方,為什麼沒有在第一時間通報疫情,為什麼民間自發傳遞信息第一時間想到的是“謠言”、“抓人”、“刪帖”?

不僅官方渠道失職,民間渠道被噤聲,甚至武漢市還舉辦“萬家宴席”!

四萬餘家庭的話,即便按每家去 2 人來計算,也有將近 8、9 萬人。這要是在“瘟疫公司”遊戲裡發生的話,玩家大概玩的是「白痴」難度,這種規模的活動傳播起病毒來真的不能再棒了!

官方自以為聰明的瞞報、謊報,權力不受約束的警方,沒有衛生健康常識的民眾,他們為這次病毒的傳播提供了絕佳的溫床。哪怕十多年前發生過「SARS」,這個國家從官方到民間不但未見得有總結多少經驗,反而相比以前更差了 —— 當有人在微博上紀錄下自己家人的不幸感染了這次的冠狀病毒時,被網絡暴力指責“製造恐慌”,被迫道歉。

在寫這篇 post 的時候,丁香園上的數據為「确诊 443 例 疑似 151 例 治愈 25 例 死亡 9 例(其中有 99 例确诊暂未明确地区 )」

世界數據如下

本以為現在 PRC 中國迫於國際壓力公布之後,疫情情況的公布會有所改善,然而

「我建議你自己查」

愚昧和壞遠比病毒可怕。

我们可以有无任何监管或审核的自由 App Store / Market 吗?

其实很早以前就考虑过这个问题了,我们能否构建一个没有任何监管/审核的自由 Store / Market?(「政治审核」类无论何时我都认为有多远就该滚多远)

其实听起来真的很棒,开发者做出来了好的应用,马上就可以 deliver 到用户那里去,没有任何的限制,也不需要等待。但是我们无法回避的一个问题则是,现实里并没有那么美好 —— 哪怕现在就把中国从地图上抹掉,做二次打包植入恶意代码盈利的也大有人在。

写的软件质量糟糕其实都是小问题,大问题是用户数据的安全。毕竟恶意代码的目的包括但不限于 blackmail、未经授权的转账、窃取用户隐私数据,无论是 iOS 还是 Android,都不可能是没有任何漏洞的。难道我们要把一切都简化为一句

“安装此软件造成的一切后果均由用户自行承担”

我相信我认识的和不认识的绝大多数做技术的人,只要想的话,写一个完全没有任何审核的自由 Store / Market 绝不是难事。无监管或审核的自由 Store / Market,对于开发者来说必然是非常快捷、便利的,但因此带来的对安全的考量就转移到了最终用户身上 ——

我们假设,开发者 A 做了一个很有特色的 X 软件,或者本身就是做了一个 X 软件的美化版 / 增强版之类的,并发布在了某自由 Store / Market 上;随后开发者 B 下载、植入恶意代码、二次打包后也发布了上来(可能还改个名之类的)。这个时候普通人应该如何分辨?

  1. 靠评论或者下载量?可是评论、下载量必然也是有黑产可以代刷❌
  2. 靠开发者可信度认证?但那不就是有一定程度的监管了吗❌
  3. 靠开发者 GPG 公钥签名?拜托,普通人连使用协议都很少有去看的,更别说对于他们而言过于专业的 GPG 签名验证❌
  4. 靠实名制?有了这个根本就不可能叫自由 Store / Market 了吧❌
  5. 靠口碑 / 懂这些的朋友?听起来真的很原始,但也许还算可行?
  6. 靠自己?以后普通人都自己去应用的官网下载,可那样的话,自由 Store / Market 又有什么存在的意义呢?

如果说自由 Store / Market 只是给一小部分人的话,那么现在 iOS 上可以在 Jailbreak 后自行安装,部分 Android 手机 root 后随意安装,部分 Android 本来也就没限制。

对于我们做技术相关的人来说,自己区分是否包含恶意代码还是可行的。然而,程序员以及技术爱好者不过是所有用户中的一部分,剩下很多人完全不懂的,哪天中招下载了包含恶意代码的软件,由此带来的物质 and / or 精神上的损失又该怎么办呢?

还是中国人最擅长骗中国人的钱。

到了迪拜之后的第二天,早上一上车,导游就说在阿联酋这边,有他们国旗的地方都不能拍照,因为一部分是政府机关,一部分是国营企业所以才挂国旗。一开始我也没有细听细想,现在回想起来,这便是骗局的伏笔了。

Continue reading

记得很久之前就看到有人说很多中餐(尤其是重庆、湖南、四川这一带)都是靠海椒的辣味掩盖食物本身的味道,于是今天再次体验了一下这一点。

在坐 Air China 去迪拜的时候,晚餐选了鱼肉饭,果然跟上次坐 Qatar 航空去多哈的时候提供的餐食完全没法比——

Air China 上的晚餐就是很普通的锡箔纸包装的,揭开之后也不过零星的有 3、4 块小小的鱼肉。

入口之后,辣,dominate 了味蕾的感受,只留下了我的视觉和舌头的触觉告诉我这大概是鱼肉。咽下之后能够回想起来的也就是海椒的辣带来的刺激。

辣,只不过是众多味道中的一种,但是却被很多中国人吹上天,从“无辣不欢”到“吃嘛,不辣”。以及出了国就是带/买上“老干妈”,然后还顺带嘲讽别的地方的食物——“不就是那样吗”。可是他们却不曾想过,他们自己喜欢的食物按照他们自己的标准来评价的话,也不过是“不就是辣吗”。

现在吃到中餐里辣的食物的时候,我觉得“辣”已经取代了很多食材本身的味道,食材几乎只剩下了口感。就像我今天在 Air China 上吃的那一盒鱼肉饭一样,就像我平时在大陆吃到的那些以辣为主的菜一样。

而将“辣”使用到极致的便是火锅。说实话,偶尔吃一次牛油火锅也还是会觉得很好吃,但是在追求舌尖上的刺激的同时,火锅对味蕾的伤害也不可忽视。很多人说吃得辣是训练出来的,在某种程度上并没错,毕竟味蕾都被辣椒素干掉了,自然也就觉得别的菜都吃不惯或者吃不来了。

Arduino 的小板子 PORTENTA H7

这两天 Arduino 出了一个新的小型嵌入式开发板,Portenta H7 https://store.arduino.cc/usa/portenta-h7

性能上的话,CPU 是一个 Cortex M7@480MHz + Cortex M4@240MHz ,两个核心用 RPC 机制通信,可以跑 MicroPython / JavaScript,还有 TensorFlow Lite

个人觉得亮点 1) 是有双频 Wi-Fi(虽然最大速率只有 65Mbps),可以当成 AP / STA,这样一来的话,2.4GHz 和 5GHz 的 Wi-Fi 抓包和嗅探应该是可以了。

亮点 2) 的话就是终于可以直接用 Type C 了,并且还支持 DisplayPort。

最后亮点 3) 就是 Portenta 系列会有 2 个 80 pin 的高密度连接口,扩展性似乎比以前我用过的 Arduino 系的板子的好不少。

不过 $99 的基础款只有 2MB 内存,16MB 的 NOR Flash 存储空间。官网上倒是说最大可以配置 64 MB 的内存和 128 MB 的 QSPI Flash,不过并没有给价格。

就算是这样,99 美元也蛮贵的了,完全可以买一个 Raspberry Pi 4 Model B 4GB 版了,当然,tradeoff 就是 Raspberry Pi 相对而言没有这么小。这个怎么选就看使用场景了

略有一点点种草,要是什么时候有闲钱和时间倒是想试试看这个

从零开始的 Rust 学习笔记(18) —— Rust Script Runner

Rust 并不能像 Python 那样有全局的 Package(当然,现在就算是写 Python,也很少有谁一上来就往全局环境里安装 Package 了),于是 Rust 要想单独运行一个引用了第三方库的 Rust script 时,就必须用 Cargo 创建一个 project。

绝大多数时候这个倒也是能接受啦,但是有时真的只是想在一边测试一个小的 function 或者验证一下自己的想法。如果直接在 working-in-progress 的 project 里写的话,就可能

  1. 不得不配合已有的部分做一些 error handling
  2. 或者手工测试到该条代码路径上
  3. 又或者写上相应的 unit test

显然只是想快速验证一下的话,上面三种方式都有不便之处。如果单独再用 cargo new 一个 project 的话,也不是不行,但是懒(

在用 Code Runner(对你来说也许是 VSCode 之类的)的时候,直接新建一个 Rust file 开始写会相对方便。假如我们的 Rust script 叫 example.rs,那么要引入第三方 crate 的话,比如引用 regex,我们可以用这样的语法,

// cargo-deps: regex="1"

如果要控制 crate 的 feature 之类的,则可以写

// cargo-deps: opencv = {version = "0.28", default-features = false, features = ["opencv-41", "contrib"]}

虽然并不能实现 Python 那样的全局 package,但是我们可以用代码扫描 exmaple.rs 里面所有的 // cargo-deps: {:dependency},然后自动生成一个 example 目录和相应的 Cargo.toml 文件,接着将 example.rs 文件复制到 example/src/main.rs, 最后自动调用 cargo run

Continue reading 从零开始的 Rust 学习笔记(18) —— Rust Script Runner

It's time to 2020

上一次寫這個還是在 2017 年?!It's time to 2017

不過正如 17 年那篇的我說的 —— 与其总是怀念过去,不过着眼于未来。

我其實還蠻想專門寫一篇 post 來說明這個觀點的。總是有不少人在懷舊,可是懷舊的人有沒有想過,他們用來懷舊的今天,很快就會成為他們明天懷舊的內容。

想想看未來的事情,2020 年想做些什麼呢?想要自己的生活變成什麼樣子呢?沒有什麼不敢想的,要不然來年這個時候就又該感懷了。

17 年說了要學習 Golang,結果因為各種機緣巧合,這幾年來都沒時間自己學新的東西,是時候為自己著想了;今年 9 月底開坑的 「從零開始的 Rust 學習筆記」基本上就是為了自己而寫,17 年後半到 19 年後半寫的絕大部分技術類的,都是為了別人。

現在回想起來,同樣是凌晨 3 點半,在 LA 的我只感覺傷心難過;而三個月後,坐凌晨末班火車從劍橋趕往倫敦的時候心裡卻滿是高興。

凌晨幾乎空無一人的 ThamesLink

無論如何,我做不到自欺欺人,何苦讓自己強顏歡笑。

最後借用內田彩「キックとパンチどっちがいい?」的幾句歌詞

最高の幸せを
最棒的幸福
私は手に入れてみせるの!
我会得到给你看 !

Now, it's time to 2020!