What this will cover
- Host a static website at S3
- Redirect
www.website.com
towebsite.com
- Website can be an SPA (requiring all requests to return
index.html
) - Free AWS SSL certs
- Deployment with CDN invalidation
好的,我來將我剛剛設計的桌遊概念用中文詳細解釋一遍。這個遊戲的核心概念是結合了商業經營、策略規劃、風險管理,以及一些玩家互動的元素。 | |
首先,我需要將遊戲的整體畫面呈現出來。想像一個熱鬧的火車站旁邊,有一條主要的街道,街道上有許多可以蓋建築的地點。玩家扮演不同的店家,可以購買這些地塊,然後蓋自己的商店。火車站是人潮的來源,特別是在天氣好的時候。地塊的位置很重要,越靠近車站的地塊越貴,但同時也更有優勢。遊戲中還有一些共享的資源,像是天氣效果,還有一些玩家會競爭的設施。 | |
這個遊戲圍繞幾個核心的循環。玩家買地,蓋商店,吸引顧客。他們要管理金錢,升級建築,還可以陷害對手,同時應對多變的天氣。天氣系統增加了一些不確定性,也需要玩家投資在共同的基礎設施上。最靠近車站的地塊有優先選擇客人的權利,這增加了競爭的層面。 | |
現在,我們來看看具體的遊戲機制。建築物要從一樓開始蓋,這增加了一種進展感。天氣系統會影響顧客的數量(晴天人多、雨天可能損壞、颱風停電),玩家可以選擇蓋避雷針來減少損失,但這樣就不能再往上蓋了。發電機和停車場則只能蓋在地下室,這讓玩家需要考慮是要優先衝高樓層還是蓋設施。 | |
不同的商店和設施也增加了遊戲的深度。某些商店會有最適合的地點,像是便利商店適合在一樓,離車站近一點。停車場和發電機放在地下室是很合理的安排,而且它們看起來會是玩家需要的設施,玩家必須在這些基礎設施和純粹的盈利之間做選擇。 |
def get_or_create(session, model, defaults=None, **kwargs): | |
""" | |
Get or create a model instance while preserving integrity. | |
""" | |
try: | |
return session.query(model).filter_by(**kwargs).one(), False | |
except NoResultFound: | |
if defaults is not None: | |
kwargs.update(defaults) |
[Linux Container Internals 2.0](https://docs.google.com/presentation/d/1S-JqLQ4jatHwEBRUQRiA5WOuCwpTUnxl2d1qRUoTz5g/edit#slide=id.g3e1a17e39e_2_41) |
aws> ec2 describe-vpcs | |
aws> ec2 create-vpc --cidr-block 10.0.0.0/16 | |
aws> ec2 create-tags --resources vpc-f0bff594 --tags Key=Name,Value=sample-vpc | |
aws> ec2 describe-vpcs | |
aws> ec2 describe-internet-gateways | |
aws> ec2 create-internet-gateway | |
aws> ec2 create-tags --resources igw-6992410d --tags Key=Name,Value=sample-vpc-igw | |
aws> ec2 attach-internet-gateway --vpc-id vpc-f0bff594 --internet-gateway-id igw-6992410d | |
aws> ec2 describe-internet-gateways | |
aws> ec2 describe-subnets --query 'Subnets[?VpcId==`vpc-f0bff594`]' |
ifconfig (or ip link, ip addr) - for obtaining information about network interfaces | |
ping | |
for validating, if target host is accessible from my machine. | |
ping is also could be used for basic DNS diagnostics - we could ping host by IP-address or by its hostname and then decide if DNS works at all. And then traceroute or tracepath or mtr to look what's going on on the way there. | |
dig |
You can pull a capture from S3 into #Wireshark using the AWS CLI: | |
aws s3 cp s3://my-bucket/odd-http.pcap - | wireshark -k -i - |
https://serverfault.com/questions/791715/using-environment-variables-in-kubernetes-deployment-spec | |
A much easier/cleaner solution: envsubst | |
In deploy.yml: | |
LoadbalancerIP: $LBIP | |
Then just create your env var and run kubectl like this: | |
export LBIP="1.2.3.4" |
#!/bin/sh | |
# Use AWS CLI to get the most recent version of an AMI that | |
# matches certain criteria. Has obvious uses. Made possible via | |
# --query, --output text, and the fact that RFC3339 datetime | |
# fields are easily sortable. | |
export AWS_DEFAULT_REGION=us-east-1 | |
aws ec2 describe-images \ |
var fs = require('fs'); | |
function Reader() { | |
this.content = null; | |
} | |
Reader.prototype.getContent = function() { | |
if (this.content === null) { | |
return new Promise((resolve, reject) => { | |
console.log('new promise'); |