Secure HTTP Headers and Cookies

查看原文

https://github.com/cakinney/secure 这个库列出了一些应当被妥当设置的安全相关的请求头:

  • Server: 默认设为 NULL,避免暴露服务器的信息
  • Strict-Transport-Security (HSTS): 服务不允许被降级为 HTTP 运行。max-age=63072000; includeSubdomains
  • X-Frame-Options (XFO):防止 clickjacking。SAMEORIGIN
  • X-XSS-Protection: 1; mode=block: 防止扩展脚本运行
  • X-Content-Type-Options:nosniff:不允许 MIME-sniffing
  • Content-Security-Policy (CSP): script-src 'self'; object-src 'self' 防止跨域注入
  • Referrer-Policy: no-referrer, strict-origin-when-cross-origin
  • Cache-control / Pragma: no-cache, no-store, must-revalidate / no-cache
  • Feature-Policy …
read more

Vega - A Visualization Grammar

查看原文

Vega 是一个试图对可视化进行规范的语法。它通过定义一个描述式的语言来定义可交互的图表。这个语言可使用 JSON 定义,生成 Canvas 或者 SVG。 通过它可以定义 transformation,scale,map projection,axes,legends,graphical marks 等等。

Tutorial 有一个 vega 的概览。 [vega v/s chart.js](https://js.libhunt.com/compare-vega-vs-chart-js):这个项目目前流行度还不太高。

read more

Zero Downtime deployments with Terraform

查看原文

本文介绍了 Checkly 的工程团队如何使用 AWS EC2 / SQS / Terraform 完成队列 worker 的 zero downtime。

  • 目标
    • worker 在不伤害用户体验的情况下可以杀掉
    • 多版本 worker 可以共存
    • 每个 worker 都可以独立升级
    • 新 worker 一旦就绪立马工作
    • 当新 worker 都起来以后 老 worker 要被杀掉
    • release 出错时停止继续部署
    • 可以被部署到多个 region
    • 新 worker 自动加入监控
    • release 出错时可以触发警告
  • 实现
    • 使用 cron 发送消息到 sqs 队列。
    • workers 订阅一个队列,每台机器 5 …
read more

Pampy - Pattern Matching for Python

查看原文

Pampy 是一个 Python 的模式匹配的库。

from pampy import match, _

def fibonacci(n):
    return match(n,
        1, 1,
        2, 1,
        _, lambda x: fibonacci(x-1) + fibonacci(x-2)
    )

可以对 dict 进行解构:

>>> print(match({"a": "b", "c": "d"}, {"a": _, _: "d"}, lambda x, y: (x, y)))
("b", "c")

能简化不少代码 …

read more

12 Factor CLI Apps

查看原文

本文在推广一种写命令行工具的方法论 - 12 Factor CLI Apps.

  • 提供 -h/--help / shell completion
  • 优先使用 flags,而不是 args;flags 也有利于 autocomplete;对于要把参数传给子进程的命令,可以用 -- 分隔开本命令和子进程要用的参数。
  • 提供 version, --version, -V
  • 区分开 stdout 和 stderr
  • 出错时可以提供更多有用信息:error code,error title,error description,how to fix the error,还有 url; 可以在 DEBUG 模式把更多信息打出来。
  • 打出颜色,进度条,但也支持 NO_PROGRESS …
read more

What Happen When K8S

查看原文

本文介绍了在命令行运行 kubectl run --image=nginx --replicas=3 时 Kubernetes 服务端和客户端的运行时。

  1. kubectl 会做 client-side validation, 通过校验的会通过 kubectl generator 组装 HTTP 请求可以发送到 kube-apiserver, 例如 deployment 会组装 DeploymentV1Beta1.
  2. 本地有一个 ~/.kube/cache/dicovery 用于缓存资源的 apiVersion, 例如,deployment 属于 apps/v1.
  3. kubectl 会根据 --kubeconfig 或者 $KUBECONFIG 读取 kubeconfig.
  4. 解析 kubeconfig, 获得 current context, current …
read more

Things Nobody Told Me About Being a Software Engineer

查看原文

本文描述了一个老工程师的心得。

  • 测试代码远高于 production code。
  • 用于 build/release/tooling 的时间跟花在写代码的时间是一样的。这还不计入 on-call, operations, ...
  • 要部署代码进入生产环境,写代码真的只是很小的一部分。
  • 时间在前进,轮子也在不停的重造。
  • 在 debug 和 code review 中要学习如何找到激情。
  • 工资和技术不强相关。
  • CSS 很难!
  • 闪亮的技术不一定就能风生水起,很经常就莫名其妙死了。
  • 沟通时挑选 Emoji 是个技术活

衍生思考:☝️ 👍 👏

read more

Minio Docs

查看原文

Minio 是一个 AWS S3 的兼容工具,可以自己选择搭在想要的机房里。

  • conf: 可用配置文件和环境变量,然后用 minio server /data 启动。
  • 有 liveness 和 readiness proble: /minio/health/live, /minio/health/ready.
  • fed: 可使用 etcd_endpoints 作为后端完成 federation
  • 【client](https://docs.minio.io/docs/minio-client-quickstart-guide.html): 客户端提供 mc ls, mc cat, 等一系列 UNIX 兼容的命令。
read more

Pulumi - Guestbook App Tutorial

查看原文

Pulumi 最近发布的 IAAS 工具包看起来像个 terraform 的 copy。

  • 使用 plum new kubernetes-typescript 新建一个项目。
  • 写 JS 代码写 YAML。 let redisMasterService = new k8s.core.v1.Service("redid-master": {"metadata": {… let redisMasterDeployment = new k8s.apps.v1.Deployment("redis-master", {spec: {…
  • 运行:pulumi up, 运行前也跟 Terraform 一样需要经过确认。工具可自己决定是创建还是更新。
  • 也提供跟 Terraform output 一样的功能。pulumi stack output frontendIP …
read more

« Page 2 / 54 »