告别密码验证

最近,微软宣布所有用户现可从其帐户中完全删除密码。用户可以通过在手机上安装 Microsoft Authenticator 应用来接收验证码进行登录。详见《微软账户进入无密码时代,现可将你的密码彻底删除》:

微软副总裁 Vasu Jakkal 表示,“近年来,我们一直都在强调无密码机制的重要性。今天我在这里很高兴地向大家宣布,这项愿景终于有了实质性进展。从今天开始,您可以将你微软账户中的密码彻底删除。”

对于这么做的原因,微软表示单纯的密码机制已经成为了安全系统的软肋,每年仅仅因为这个原因发生的相关攻击就多达 180 亿次,约每秒 579 次。

不过各位小伙伴还请不要以为微软取消密码就没有安全保护机制了,因为在迈入无密码时代之前你还需要在自己的手机上安装一个 Microsoft Authenticator 应用(如果您愿意,您可以随时为帐户重新添加密码),之后根据实际使用位置的不同,通过 Windows Hello、安全密钥,或者是通过邮件、手机或其他应用以及服务(包括 Outlook、OneDrive、Microsoft 家庭安全等)接收到的验证码进行登录。

……

爱棠村掘尸案和斯励之死

爱棠村掘尸案

1931 年 11 月,上海各大报纸竞相报道了一起骇人听闻的凶案,法租界姚主教路爱棠村两户民居院内挖掘出多具尸体。经证实,这些尸体是已叛变的中共特科领导人顾顺章失踪多月的家属。这就是当年轰动一时「爱棠村掘尸案」,后世亦称为「顾顺章灭门案」。

1931 年 11 月 25 日,《民国日报》的报道

1931 年 11 月 25 日,《民国日报》的报道

……

解决 curl 无法获取本地发行者证书问题

问题

当使用 curl 命令打开 HTTPS 网站,比如:

shellcurl -sSL https://www.github.com/

显示如下错误:

curl: (60) SSL certificate problem: unable to get local issuer certificate

根据错误信息可以得知,问题是 curl 找不到本地的 CA 证书所导致。

解决方案

首先,下载 CA 证书:https://curl.se/ca/cacert.pem

  1. 不验证 TSL 证书:
    • liburl:curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    • 命令行:添加参数 -k--insecure
  2. 指定 CA 证书:
    • liburl:curl_easy_setopt(curl, CURLOPT_CAINFO, cacert);
    • 命令行:添加参数 --cacert /path/to/cacert.pem
  3. 使用环境变量(仅命令行):set CURL_CA_BUNDLE=/path/to/cacert.pem
  4. 对于 Windows 下的 curl 命令,将 cacert.pem 重命名为 curl-ca-bundle.crt,并保存到以下路径之一:
    1. curl.exe 命令所在路径;
    2. 当前工作路径;
    3. Windows 系统路径(C:\Windows\system32);
    4. Windows 路径(C:\Windows);
    5. 任意 %PATH% 路径。
    国名、地名、人名中的异读现象

    国名

    • (欲)浑
    • jüān(捐)毒
      一说读 yüān。「身」字在汉代的上古读音,据李方桂的拟音,应读作/hrjin/,与hin-相近,显然是来自伊朗语系统。唐代司马贞《史记索隐》说:「身音捐」,这个音注是错误的,或许正源于司马贞的误解。「捐」在中古唐代念/juen/(其实,按照语音演变规律,这个字现代应该念yüān,不知何故念成了jüān),是零声母以母字,反而与in-相近。大概由于司马贞的时代印度国名已经通行称作indu,同处唐代的玄奘在《大唐西域记》中正是将它译作零声母的「印度」(「印度」这个现在通行的译名正是源于玄奘),司马贞不知道「身毒」是译自另一个语音系统,才强行用今音去注古书,导致了误会。
      因为这个误注,又造成现代辞书中「身毒」之「身」注音分歧,有的注yuān的,有的注juān的,皆误,正确的应该就读作shēn,这里破读是不必要的。1
    • qiū(秋)(慈)
    • yuè(越)zhī(支)
      关于「月氏」的读音,自五十年代以来,中、小学历史课本一直写为「⺼氏」,并标注音为ròu zhī(肉支)。而据考证,月氏的「月」字旧写作「⺼」,是以讹传讹的结果,是误读。2
    • (播)
    • yuān(苑)
    • gōu(勾)(离)
    • (牙)马台

    地名

    地名异读形成的原因:古音保留、方言音变、语言接触、历代误读等等。

    ……

    他没说过这句话

    网上流传着许多耳熟能详却不知具体出处的名人名言,但是其中有一些完全是瞎掰的,还有一些属于张冠李戴。本文会不定期更新一些在网络上广为流传的伪名人语录

      中国古代建筑

      在大众的刻板印象里,中国乃至东亚的传统建筑以木结构为主,而西方传统建筑以砖石结构为主。事实上,古代西方的木结构建筑一直广泛应用于民居等建筑。由于使用砖石结构的宗教场所以及其他公共建筑一直是西方建筑的主流,因此木结构建筑在西方建筑上处于次等地位。而中国古代只有军事建筑(城墙、城门)、墓室、桥梁、佛塔等少数建筑采用砖石结构,木结构建筑是主流。

      ……

      音乐剧《悲惨世界》歌词

      ACT 1

      PROLOGUE (WORK SONG)

      CHAIN GANG
      Look down, look down
      Don’t look ’em in the eye
      Look down, look down
      You’re here until you die.
      The sun is strong
      It’s hot as hell below
      Look down, look down
      There’s twenty years to go.
      I’ve done no wrong
      Sweet Jesus, hear my prayer
      Look down, look down
      Sweet Jesus doesn’t care
      I know she’ll wait
      I know that she’ll be true
      Look down, look down
      They’ve all forgotten you
      When I get free
      You won’t see me
      Here for dust
      Look down, look down
      Don’t look ’em in the eye.
      How long, 0 Lord,
      Before you let me die?
      Look down, look down
      You’ll always be a slave
      Look down, look down,
      You’re standing in your grave.
      JAVERT
      Now bring me prisoner 24601
      Your time is up
      And your parole’s begun
      You know what that means,
      VALJEAN
      Yes, it means I’m free.
      JAVERT
      No! It means You get
      Your yellow ticket-of-leave
      You are a thief.
      VALJEAN
      I stole a loaf of bread.
      JAVERT
      You robbed a house.
      VALJEAN
      I broke a window pane.
      My sister’s child was close to death
      And we were starving.
      JAVERT
      You will starve again
      Unless you learn the meaning of the law.
      VALJEAN
      I know the meaning of those 19 years
      A slave of the law.
      JAVERT
      Five years for what you did
      The rest because you tried to run
      Yes, 24601.
      VALJEAN
      My name is Jean Valjean.
      JAVERT
      And I’m Javert
      Do not forget my name
      Do not forget me
      24601.

      ……

      搭建 iOS 平台的个人通知推送服务

      Bark 是一款可以给 iOS 系统推送自定义通知的开源应用,用户可以通过 HTTP 接口向自己的手机或者 iOS 设备推送消息。应用内置了公共服务器,软件作者也提供了开源的服务端用于搭建个人推送服务器。此外,还可以通过 Chrome 浏览器扩展来调用推送接口。

      部署服务端

      应用内置了公共服务器,如果你没有隐私方面的需求,可以直接使用公共服务器进行推送。但是为了稳定性和私密性,建议自己搭建服务器。

      ……

        记小学时的一堂思想品德课

        那大概是我小学二年级,也可能是三年级的一个午后,也许是上午吧,年代太久已经记不清了。不过我还记得小学的课程表在上午总会排语文数学英语这样的主课,而思想品德课这种不太重要课程大概率是排在下午的,所以姑且就认为是午后吧。

        那堂课讲的具体内容也已经很模糊了,主题大概是歌颂英雄,号召在座的小学生们向英雄学习,树立正确的人生观价值观云云。课本上的内容讲完后,按照惯例,就进入学生提问环节。

        ……

        无锁队列并非真的无锁

        近几年经常被提起的无锁队列,似乎被视为解决高并发的万能良药。无锁队列是一种通过CPU提供的原子操作指令 CASFAA,以及循环重试,来实现的乐观并发控制算法。虽然无锁队列算法并未显式调用锁,但事实上,在多核环境下,所谓的无锁队列算法本质上就是实现了锁的功能。

        首先,原子指令本身就是一种带锁的操作,只是锁的颗粒度较小而已。单核 CPU 系统的情况比较简单,因为单条指令操作总是原子的;而 SMP 的情况就比较复杂了,需要使用缓存一致性(Cache Coherence)的机制来确保操作的原子地执行。

        早期 CPU 不支持原生的 CMPXCHG 指令,要实现 CAS 原子操作,必须先用 LOCK 指令锁住总线或需要访问的内存块。

        ……