HOME/Articles/

玩具车计划(又一篇流水账)

Article Outline

玩具车计划(又一篇流水账)

前段时间在朋友圈看到有人完成了亚马逊的云平台高级认证,感觉好羡慕。公司用的是谷歌云,查了一下发现也有认证。今天去申请了30天免费的qwiklab教程。

出师不利,第一个 qwiklab 教程的 google 临时账号就无法登陆。反手就是一个工单。哎,这些小插曲难不倒俺。

哎,今天发现还真是搞不定。根据 qwiklab 的回复应该是由于网络问题,谷歌的身份验证机制把我拦住了。不能用免费的测试用的谷歌云账号了,不过依旧不影响学习。

客户端数据持久化更广阔的未来

在网络愈加不稳定和封闭的情况下,客户端数据持久化将会被认真对待。前段时间俺用微信上的微店商城去订桶装水,过了一个月发现之前的订单信息全没了,上网查新闻发现是某家电商平台的数据库被删了。人们总是先入为主地认为服务器比客户端安全,实际上当全部用户的数据都汇聚于服务器的时候,它才会成为黑客的目标。

幂等,PWA,比特币

也许你已经看出,俺是一个野生程序员。第一次听说幂等是在工作中,一位大佬给我分配任务:“你把这个接口改成幂等的吧”。俺弱弱地回复:“啥是幂等”,大佬言简意赅地解释道:“就是重复调用也是一样的结果”。

一个简单的实现幂等接口的方法就是给每次调用都分配一个唯一的ID。大多数的 GET 请求是很容易实现幂等的,只要请求的资源有唯一ID,且资源不可变。POST 请求就有些麻烦,因为这时是对原有的状态作出修改,可以每次都返回与第一次相同的结果,一般情况下客户端的目的是知道这个请求被执行了1次。例如广播一笔比特币的交易,可能会把同样的交易广播了两次,大部分API会在第二次广播的时候返回错误码,而对于我们的业务逻辑,只要交易广播成功就不应该报错,所以可以让第二次广播的时候依旧返回成功。

PWA(渐进式网页应用) 是凭借 ServiceWorker 标准而火起来的概念。根据匹配URL来决定不同的缓存策略。可以选择总是从缓存里获取数据,或者是在有网络的时候主动获取最新的数据等等。社交网站,博客,等等以文字和图片为主要资源的网站,可以用一个 tree 来作为各个资源的索引,tree上的每个节点的值是资源的 ID。用户有网络的时候,网页自动更新这个 tree,然后拿着ID去缓存或者服务器去获取对应的资源。这样用户在离线的时候也可以浏览网页。

在全球互联网逐渐相互割裂的时代。离线的概念有了更细分的定义:用户之间可能无法相互联通,但用户可以访问比特币网络(更确切地说,可以通过当地的矿工发送交易),以获得时间戳共识。举个例子,中国的小明在今天通过中国的矿工发送了一条社交网络动态。几个月后,小明来到美国,见到朋友麦克,通过蓝牙将手机内的信息导出给麦克,麦克的手机验证了这些数据的时间戳,确认了小明是在几个月前发送了这条动态。整个流程中除了小明发动态的时候需要连接到矿工,其它时候完全不需要联网。

不知道有什么用的 BPMN 图

最近发现互联网上各种服务的业务模型基本是类似的:下订单,执行订单,订单执行成功或者失败,执行对应的后续操作。很多业务模式都可以用 BPMN(Bussiness Process Model and Notation) 图来表示。

在 BPMN 图里,每个步骤(tasks)的命名通常使用 动词 + 名词 的格式。例如: ”获取原料“, “准备晚饭”。而每个事件(event)的命名则用 名词 + 动词, 且使用过去式,表示已经发生,例如: "hunger noticed", "meal prepared"。

在 BPMN 图里,有以下几种 Gateway:

+: parallel gateway 并行执行 x: exclusive gateway 排他执行 o: inclusive gateway 包容执行

其中+o 可以是同步的,即等待所有的输入tasks都完成再执行后面的步骤。

尝试用代码来描述欧几里得关于完美数的定理:

if is_prime(:math.pow(2, p) - 1) do
    true = is_perfect(:math.pow(2, p - 1) * (:math.pow(2, p) - 1))
end