4

Pensieve: 2106

 4 years ago
source link: https://blog.xiaket.org/2021/pensieve-2106.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Pensieve: 2106

2021-06-24 21:37

Horizon Zero Dawn

这个月花了一共一百多个小时在这个游戏上, 终于全成就通关了. 感谢Youtube上的无伤通关视频给了我很多启发, 让我这个迟钝的选手能够安全撞线.

几点小杂感:

  1. 主要玩法是猎杀各种动物, 虽然名义上它们都是机器, 但是你知道的, 大多数机器都能对应到一种动物(野牛/鳄鱼/马/熊/老虎), 这样你可以名正言顺地打猎而不用担心道德上的谴责了.
  2. 相比于荒野之息, 这个游戏更偏动作一点, 不用太动脑. 而且深度比荒野之息要浅一些, 塞尔达里面除了一百多个神庙外还有九百个种子, 如果HZD要做到类似的内容, 那么花/杯子等收集物还需要大大增加. 另外, HZD音乐也就主题曲还好听, 其余的没什么让人印象深刻的配乐(荒野之息里碰到守卫者的音乐故意很多人都有阴影吧?)
  3. 不花钱的游戏(Play at home送的)最好玩.

vapor

这个月花了一点点时间在vapor上, 至少让它能够跑起来了, 有个大致的样子了. 为了简单说明这个库是用来干什么的, 我们一起看下下面这个例子:

from vapor import S3, Stack


class Bucket(S3.Bucket):
    VersionControlConfiguration = {"Status": "Enabled"}
    PublicAccessBlockConfiguration = {
        "BlockPublicAcls": True,
        "BlockPublicPolicy": True,
        "IgnorePublicAcls": True,
        "RestrictPublicBuckets": True,
    }
    BucketEncryption = {
        "ServerSideEncryptionConfiguration": [
            {"ServerSideEncryptionByDefault": {"SSEAlgorithm": "AES256"}}
        ]
    }


class S3Bucket(Bucket):
    BucketName = "website-bucket-name-o1dc0de"

为了定义一个S3资源, 我们这儿定义了两个类, 其中我们设想中的用户层的定义是S3Bucket, 而企业层的定义是Bucket. 可以看到, 用户层面只需要继承企业层的定义, 就可以很好地继承安全方面的最佳实践, 而不需要自己额外定义. 另外, 如果需要, 用户层的类也可以覆盖企业层的定义. 这是一个比较典型的企业级解决方案里的治理方法. 两者基本是正交的.

我们定义这个资源的目的自然是希望将它放到一个Cloudformation的Stack里面去, 为此, 我们定义下面这样的类:

class MyStack(Stack):
    Description = "Minimal stack with a single S3 bucket."
    Resources = [S3Bucket]

如果你对Cloudformation比较熟悉的话, 你会看到Cloudformation的影子, 而这又是实实在在的Python类. 最妙的部分是, 每一个这样的Stack类都能完全映射出一个Cloudformation的模板来, 这样可以唯一地定义一个Stack. 具体使用就是:

stack = MyStack()
print(stack.yaml)
print(stack.json)

另外, 我现在本地有一个分支是能够添加方法实现stack.deploy()来部署这个Stack. 后面也会添加那些基本功能, 比如定义模板参数, 使用Cloudformation内置函数等等. 功能上大致说到这样, 回头来看顶层的import:

from vapor import S3, Stack

实际上, 在vapor里我没有写一个S3的类, 每次有人尝试import的时候, 这个类都是动态生成的. 这样我可以避免自己陷入到troposphere得不断更新来跟进AWS变化的状况. 事实上, 如果你高兴, 你可以把上面import里面的S3换成S4, 这样所有的逻辑仍然能正常工作, 只不过最后生成出来的模板里的资源会变成AWS::S4::Bucket而已.

后续开发计划在TODO里面有提到. 除了上面提到正在做的deploy功能外, 还希望引入cfn-lint来做语法检查, 并添加一个命令来将一个已有的Cloudformation模板, json/yaml模板转换成一个python文件, 降低用户尝试的成本.

这个月买了两个小家电, 一个是在CostCo买的Sony的电视音箱, 接电视效果还可以, 而且很方便就能将手机上的音乐蓝牙外放到音响上去. 另外还趁Amazon Prime下手买了一个松下的面包机, 准备这个周末试试效果. Amazon Prime + shopback + 礼品卡打折等一众优惠算下来后, 这台机器价格是$185, 不算是史低不过也还不错了.

所观所读所听

拜Apple Music更新所致, 这个月加了不少新专辑:

HZD的原声, 里面就一首歌Aloy主题曲. 给岁月以文明. The Masked Pianoman的Magic, 钢琴曲, 做事的时候可以听. Rosey Chan的Sonic Apothecary, 就觉得普通好听, 哪天听腻了再删吧. Ludovico Einaudi的Cinema, 好像没几首新曲子不过还是收着吧(反正不花钱不是) Pentatonix的Auld Lang Syne, 感觉没有Betsy Phillips & Robby Hecht的版本好听.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK