<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>社会 on 涯余的博客</title><link>https://hangyan.github.io/tags/%E7%A4%BE%E4%BC%9A/</link><description>Recent content in 社会 on 涯余的博客</description><generator>Hugo</generator><language>zh</language><managingEditor>hang.yan@hotmail.com (涯余)</managingEditor><webMaster>hang.yan@hotmail.com (涯余)</webMaster><lastBuildDate>Thu, 23 Jul 2020 16:32:10 +0000</lastBuildDate><atom:link href="https://hangyan.github.io/tags/%E7%A4%BE%E4%BC%9A/index.xml" rel="self" type="application/rss+xml"/><item><title>BlueTrace与健康码</title><link>https://hangyan.github.io/post/2020-07-23-blue-trace/</link><pubDate>Thu, 23 Jul 2020 16:32:10 +0000</pubDate><author>hang.yan@hotmail.com (涯余)</author><guid>https://hangyan.github.io/post/2020-07-23-blue-trace/</guid><description>&lt;p&gt;疫情之下，各国都在不断地调整自己的防疫政策。中国的模式已经证明了其可能是最有效的方式之一，但因为种种原因大部分国家难以效仿和接受。从技术层面来讲，基于支付宝/微信等国民APP之上的健康码模式也是如此:有效，但是别国难以效仿。新加坡最开始使用&lt;code&gt;BlueTrace&lt;/code&gt;协议并开发出了相应App让国民下载使用,部分其他国家也开始效仿，甚至有望能成为一种国际通用的防疫标准。&lt;/p&gt;
&lt;p&gt;隐私保护是 BlueTrace 所考虑的最主要特点之一。其手段包括如下方面:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;尽可能少的收集用户信息，卫生部门唯一收集的信息是手机号&lt;/li&gt;
&lt;li&gt;本地存储用户接触记录，只有当被感染者愿意分享此数据时卫生部分才能获取&lt;/li&gt;
&lt;li&gt;第三方无法通过此协议一直追踪用户。因为相关标识ID会一直更换&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以在对用户的标识方面，主要是通过算法生成的 UserID 和 TempID 来进行。当用户用手机号进行注册时,后台服务会生成一个 UserID, 而用户在互相接触需要通过蓝牙交换信息时，则通过 TempID 进行。TempID的 大概结构如下:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://hangyan.github.io/images/posts/bluetrace/tempid.png"&gt;&lt;/p&gt;
&lt;p&gt;可以看到其有如下特点:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;加密。只有卫生部门才有密钥能解密数据&lt;/li&gt;
&lt;li&gt;过期时间。TempID有过期时间，一般在15m左右.这样可以尽量减少恶意攻击或者伪造假数据&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;TempID的生成需要联网(加密啥的)，所以为了考虑到用户不联网的情况，所以TempID可以一次性尽量生成多个，在联网的时候一次性发给用户以备用。&lt;/p&gt;
&lt;p&gt;当装有相应APP的用户相遇时，设备会通过 Bluetooth Low Energy (BLE)协议进行通信并交换信息，其数据流程如图所示:&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://hangyan.github.io/images/posts/bluetrace/ble-handshake.png"&gt;&lt;/p&gt;
&lt;p&gt;这里面两个 Device 分别有一个角色定位，一个叫 Central ，一个叫 Peripheral。Central 主动扫描 Peripheral 并读取其信息，然后返回一些额外信息。一个手机一般是按一定时间比率轮换在两个角色之间切换。其交换的数据大概如下所示:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;id&amp;#34;: &amp;#34;FmFISm9nq3PgpLdxxYpTx5tF3ML3Va1wqqgY9DGDz1utPbw+Iz8tqAdpbxR1 nSvr+ILXPG==&amp;#34;, // TempID
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;md&amp;#34;: &amp;#34;iPhone X&amp;#34;, // Device model
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;rc&amp;#34;: -60, // Signal strength
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;o&amp;#34;: &amp;#34;IJ_HAI&amp;#34;, // Health authority identifier
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &amp;#34;v&amp;#34;: 2 // Protocol version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里面需要注意的是:&lt;/p&gt;</description></item><item><title>Linux 桌面的失败</title><link>https://hangyan.github.io/post/2020-04-04-linux-desktop/</link><pubDate>Sat, 04 Apr 2020 21:29:54 +0000</pubDate><author>hang.yan@hotmail.com (涯余)</author><guid>https://hangyan.github.io/post/2020-04-04-linux-desktop/</guid><description>&lt;p&gt;之所以说它失败，是指从功利的角度来看。不管是市场占有率，还是软件的可用性，用户友好性，以及生态上，都是失败的。直到2020的今天，以 Ubuntu 为代表的厂商在不断地向竞争对手学习，但仍然不足以和后者相提并论。当然，从自由以及民主的角度来看，它是有成功之处的，开源软件的流行，对于用户隐私以及自由的尊重，这一切的努力都值得我们敬重。&lt;/p&gt;
&lt;p&gt;从表面上看，如果我们细数其失败的现象，很容易列出以下几点:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;生态太差，没有多少厂商愿意开发 Linux 平台的软件。而进一步的原因则是用户基数少，以及开源社区天然对商业软件的不支持态度&lt;/li&gt;
&lt;li&gt;用户不友好。偏技术化，普通用户难以方便地使用。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;造成这种现状的原因很多，不一而足。其中人和制度自然是重点因素。&lt;/p&gt;
&lt;p&gt;从 Linux 桌面的相关开发人员来看，有相当一部分人是满足于现状，并且不愿意 Linux 桌面朝着 Mac OSX 和 Windows 的方面演进，因为它是 Linux, 是自由软件的核心，似乎不应该走那样的路。这一部分人满足于目前 Linux 的生态，并沉迷于从技术角度去使用和解读 Linux，同时和普通用户区分开来。另一部分人，在努力地丰富 Linux 应用的生态，但却走入了一个怪圈。到今天，我们有几百个发行版，几十个桌面系统，几十个文件管理器，Terminal应用，音乐播放器，数种不同的 GUI SDK 框架。他们共享了一个 Kernel, 使用起来功能也大同小异，一样的不如商业软件好用。但所有人都似乎相信自己所选择的框架/方向是对的，至少相对于其他选择是有一定优势的。假设这些精力能集中起来，会不会更好？&lt;/p&gt;
&lt;p&gt;没有假设，因为没有这个可能。与当世的民主制度一样，开源软件的开发流程大体上遵循了同样的模式，也遵循了同样的制度性缺陷。它防止了最大的恶(隐私，对自由的侵犯)，但却受制于其极低的效率。作为一个开发人员，你发现了一个应用的 BUG，或者有了一个新的 Idea 或者非常好的 Feature 想要合并进去，可能目前这个项目的 Owner 太慢了没时间处理，或者暂时不认可你的想法，那么你要么搁置你的 idea 或者 bugfix, 要么狠心下来自己 fork 一个新的版本。或者你直接掠过沟通这一步，直接开始自己的新项目。这就是 Linux 应用生态的开源项目的常态。&lt;/p&gt;
&lt;p&gt;这个怪圈有没有逃出的方法，有，而且很成功。只是，他的价值观显的不那么普世罢了。这样的例子很多。GNU/Linux 二者的创始人便是。可惜的是，后面的一票人都走偏了。这个方式现在有一个专业的词汇，叫终身仁慈独裁者(Benevolent Dictator For Life).&lt;/p&gt;
&lt;p&gt;我们很熟悉日常新闻上的 Linux 本人，经常骂这个骂那个，言辞粗暴，但其地位和声誉却未受影响。因为:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;他本身水平之高有目共睹，是 Linux Kernel 和 Git 的创始人.&lt;/li&gt;
&lt;li&gt;他领导下的 Linux Kernel 项目发展顺利，效率高，质量好&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;就这，就足够了。就是这个仁慈独裁者，能保证一个产品拥有稳定的内部结构，统一的 interface, 和高效率的产出节奏。而 Linux 应用层恰恰缺少这么一个人，来决定大方向和开发流程，造成了现在的局面。&lt;/p&gt;</description></item></channel></rss>