弱智的知乎产品经理

知乎的 iOS 应用(不确定 Android 上是不是也这样)在某一版本之后又改成了上滑切换到下一回答。真的是愚蠢至极,设计出这种用法的产品经理或者 UX 设计师岂止是不专业,很有可能没有脑子。

先说一下事情的来龙去脉。知乎是一个回答问题的平台,在这个平台上,用户可以提问也可以回答,也可以看别人的问题和答案。一个问题可以有多个答案,按人气排序。在手机应用中,通常一屏只能显示一个答案,于是(在一个答案没有看完的时候)快速跳到下一个答案,就需要用快捷方式了,在手机上要么是按钮,要么是手势。

在某一版本之前,知乎的切换答案手势是左右滑动,右滑是顺序下一个答案,左滑是回到之前的页面。其实这是挺好的一个操作方式,由于上下滑动是用来滚屏的,用左右滑动来切换答案是一个很好的补充,互不干涉。

然而,在最新版的 iOS 应用中,知乎把切换答案手势改成了上下滑动。这样就和滚屏的操作冲突了,也就是要先拉到答案的最底部,再滑一下,才是切换到下一答案。切换到上一页面也是同样原理。于是在当前答案很长的时候,这一操作就变得不切实际了。于是“智障”的产品经理就想出一个额外的解决方案,在屏幕的右下角放了一个按扭,直接跳到下一答案。下面是我的吐槽:

  • 跳转按扭的位置极其别扭,右手操作时要紧紧地弯过来才可以按到;
  • 根本没有考虑到左手用户,我用左手根本按不到那个按扭(iPhone 6S);
  • 你倒是给设计一个快捷回到上一页面的按钮呀,对称的操作哪去了;
  • 不就是为了让用户多看一些广告提升 KPI 嘛,还有更多的用户会卸载应用哦;
  • 有本事让用户只能发视频,变成下一个抖音呀;
  • 本来做一个知识分享平台蛮好,现在变成“分享你刚编的故事”平台,官方一点也不加干预,傻X的管理层。

知乎的用户平均年收入现在有从百万上涨到千万的趋势,越看越气,不看也罢,删了删了。

好的产品经理,差的产品经理

最近在忙一些其它的项目,博客更新慢了下来,请见谅。2018 年第一篇给子锤子科技,并不是说我是锤粉,只是因为罗永浩前几天的预告过于夸张,以至于我也产生了一定的兴趣。发布会的当天我就瞄了一眼视频,沉淀了几天就过来写博客了。

个人兴趣还是大众需求

作为面向普通用户的产品,它的特性很有可能就是它的设计师的需求。比如乔布斯回归苹果之后推出的第一款硬件,是一个音乐播放器,主要的原因是乔布斯本人喜欢听音乐。如果他喜欢打游戏的话,可能微软就没有机会做 Xbox 了。而乔帮主的过人之处就是,他的需求是适合普罗大众的。于是 iPod 大卖,进而影响了之后的 iPhone 和 iPad。

作为以超越乔帮主为己任的公孙永浩,他推出的产品也符合自己的兴趣,但问题是,这些兴趣并不适合其它用户。用不知道在哪看到的一句话来总结,这次发布的工作站,实际上是给不怎么懂计算机的老板,在自己的独立办公室里,做一些入门级的 PPT 炫技用的。

AI 是未来

这次发布的新功能“水晶球”(Crystal Ball)是一个比较有趣的功能。本质上它是一个人工智能的助手,帮助用户预生成一些选项,加速工作效率。Google 在今年的早些时候发布的 Gmail Smart Compose 也是类似的功能。至于水晶球中的预测是不是基于人工智能的,还有待观察。个人认为锤子科技没有技术实力收集大数据然后使用人工智能,但不排除已经有第三方厂商已经开始做类似的功能了。如果是这样的话,这一功能不久就会在安卓手机中铺开。

屌丝和高富帅

我在早年没钱买最新款的手机和最新款的电脑的时候,还想过这个问题,如果手机和电脑可以整合在一起就好了。因为在使用电脑的时候,大概率不会同时使用手机,反之亦然。于是这两个设备上的资源,比如 CPU 和内存,必然是浪费掉的,如果可以合并成一个就好了。我想这也是 TNT 工作站的设计理念。

但在我赚了点小钱之后,发现这是一个伪需求。CPU 和内存都会越来越便宜,越来越高效的,买两个设备不会有什么问题。真正不能分享的,是设备上的资料。之所以要把手机集成在电脑里,是因为这样可以方便地用电脑查看手机里的内容。

在过去的几年里,各大公司都在努力解决这一问题,比如 Google Drive,Chromecast,扫码登陆 等。其中解决得最好的,是苹果的 AirDrop 和跨设备复制粘贴。这些功能真真正正地秒杀了下面的笑话:

是这样的张总, 您在家里的电脑上按了ctrl+c,然后在公司的电脑上再按ctrl+v是肯定不行的。即使同一篇文章也不行。不不,多贵的电脑都不行。

屌丝的解决方案是在安卓上做 PPT,而高富帅则是购买全套苹果设备。

几个按钮是合理的

iPhone 系列产品只有一个按钮,其实是源于乔布斯对极简理念的推崇。而在用过安卓之后,多数用户都会喜欢它的“后退”按钮。我认为 iPhone X 取消物理 Home 按键,是对乔布斯理念的错误解读。当然我也不认为在一个面板上提供 10 个按钮是正确的。按钮的数量和易用性的平衡还有待市场的检验。

总结

找工作,还是要选个好一点的产品经理。

挑选海外域名服务商

根据最新的《境内网站管理》,未备案域名将在 7 月 24 日之前停止解析。由于这一项规定的落实需要各个域名服务商自己实施,如果实施得不好,可能连现有域名的转出也一起给禁止了,到时候可就叫天天不应了。所以趁还有时间,把所有的域名转到海外服务商才是上策。

以下介绍一下我使用过的几个域名服务商,仅供参考:

Google Domains

在域名管理方面,Google 算是后起之秀了。Google Domains 主要是为了完善 Google 的云生态环境,提供一些可以和其它服务集成的功能。基于这一点,Google Domains 中可选的根域名并不多,而且增加的速度较慢。

优势:

  • 管理界面干净,操作简便,无需额外的登录步骤(如果你已经登录了 GMail 的话)
  • 可以使用 Google Wallet 自动续费域名
  • 免费提供隐私保护,即 whois 查询不会显示注册人的真实信息

选择 Google Domains 的主要原因是本博客几乎全部使用了 Google 的服务,统一使用 Google Wallet 来付款比较方便。美中不足的是 Google 的 DNS 服务器由于大家都知道的原因而不太稳定,被迫使用了 CloudFlare

GoDaddy

大而全的服务商,什么服务都有,比如域名、主机、邮箱等,时常用打折活动。但是管理界面一直在升级,并且有部分新界面加上部分老界面的情况,操作比较复杂。

优势:

  • 可以顺便购买主机建站服务
  • 可以使用支付宝

GoDaddy 是我把域名迁移到国外后所使用的第一家服务商。有过一段时间,主机也用的是它家的。后来在 AWS 等云主机流行了之后才迁移了出去。由于 Google Domains 支持的域名并不多,所以之后还有一些域名是先注册在 GoDaddy 然后再迁移出去的。

Gandi

Gandi 是一家主要从事域名服务的商家,同时也提供了主机服务。

优势:

  • 支持几乎所有的根域名
  • 可以使用比特币支付

由于最上面的那一条通知,最近开始使用了 Gandi,把所有遗留在国内的域名全都转了出来。由于一些域名在 GoDaddy 上并不支持,所以就选择了 Gandi。从域名迁移的流程来看,Gandi 的服务基本令我满意。一点小缺陷是它似乎不支持使用信用卡自动续费,即每年到期的时候需要手动再输入一次信用卡信息,才可以续费。相比之下 GoDaddy 和 Google Domains 在这一点上做得很好。

再次提醒

为了避免不必要的问题,请尽快把没有备案的域名转移到国外的服务商。

Javascript 中的 Lambda 表达式

Lambda 表达式是一种简易的函数定义形式,通常在编程语言用来简化代码的结构。比如以下的 Javascript 函数:

在其它语言中的 Lambda 形式为:

Lambda 表达式之所以流行,是因为它可以方便地嵌在其它语句中,比如 Java 8 使用了 Lambda 表达式大规模简化了数组的处理:

Javascript 也终于迎来的 Lambda 表达式,在 ES6 中的定义是“箭头函数”(Arrow Function),第一个例子中的函数可以被简化为:

语法和 C# 类似,而和 Java 不同。

Lambda 表达式基本上可以看成是一个语法糖,但在 EC6 中,它和 function定义的函数有一点点的不一样。你可能已经想到了,就是 this的定义域。看下面的例子:

上面的函数中,一定要使用自定义的 self来把 this传到 .eachfunction中。而使用 Lambda 表达式的话,就不需要这么做了:

箭头函数在 Chrome 45.0 和 Firefox 22.0 以上版本中支持,具体的信息请参考 Arrow functions

Go 语言 select 语句的优先级

Go 语言中,配合通道“channel”的读写操作,特地提出一个 select语句,用于多个 channel 的并发读写操作。例如:

上述代码的意思是,同时在 a 和 b 中选择,哪个有内容就从哪个读,否则输出“No data”。由于 channel 的读写操作是阻塞操作,使用 select语句可以避免单个 channel 的阻塞。 default的作用是避免两个 channel 同时阻塞。

有一个问题, selectcase顺序是随机的,并不是按代码中写的顺序。于是就产生了优先级的问题。比如我想先从 a 读取,a 没有内容的时候,再从 b 读取,就不能用上述的方式了。这种情况下的逻辑要稍微麻烦一点:

描述起来倒是蛮简单,先从 a 读,没数据的话再从两个一起读。这种方式对于读和写操作都适用, default是否需要取决于应用场景。

博客使用了椭圆曲线 TLS 证书

心血来潮把博客的证书更新了,加密算法由本来的 RSA-2048 更换为 EC-256。简单来说,HTTPS 通讯初始化的时候,需要在服务器和客户端之间交换一个 TLS 证书,用来验证服务器的身份。

由于每次 HTTPS 通讯时,都需要下载这么一个证书,它的体积在一定程度上决定服务器响应的速度。传统的基于 RSA-2048 算法的证书,有 2048 位即 256 字节大小,而新的 EC-256 算法,则只需要 32 字节。更换之后,一下子就少了 200 多字节,在网络繁忙的时候,可以有效地传输。

EC 或者 Elliptic Curve,中文译为“椭圆曲线”。EC 是一种新的非对称加密算法。EC-256 所提供的安全性相当于 RSA-3072,已经高于传统的 RSA-2048,但只需要 1/8 的体积,性价比很高。

不过博客的速度已经很快了,更换证书的性能提升应该是感受不到了 :P

禁用 NUC 的快速启动

Intel NUC 有一个 BIOS 设置,叫快速启动(Fast Boot),我一开始不知道是什么东西,想想“快速”那就快速呗,于是就勾上了。之后就发现,再也进不了 BIOS 设置了。

于是我就知道了,这个“快速启动”,就是指开始的时候跳过 BIOS 选项界面,直接进入系统。而如果想再次进入 BIOS 呢,就要先把“快速启动”禁用掉,然后再开机按 F2。

关闭“快速启动”的步骤在 Intel 官网有写,大致是这样的:

  1. 先完全关闭机器,不能是休眠之类的;
  2. 开机的时候按住开机键不放,直到听到三声“哔”的声音,然后放掉开机键;
  3. 这时“快速启动”已关闭,可以按 F2 进入 BIOS。

我一共听了十次共 30 声“哔”…………

然后继续搜了一些其它资料,一位 Intel 员工在一个贴子里透露了一种暴力的方法:

  1. 先关机;
  2. 按下开机键,电源灯亮了之后,直接拔电源;
  3. 然后把电源插回去,开机,就可以按 F2 进 BIOS 了。

好吧,Intel 你赢了。