ETCD 的运维

查看原文

本文是 Kubernetes 关于如何运维 etcd 的文档。

  • 生产环境建议使用五个节点,需要启动 etcd, 可以在外面套一层 load balancer
  • 由于访问 etcd 数据相当于得到了 k8s 集群的所有核心数据,所以通讯层需要做 tls 加密:使用 peer.key / peer.cert 在节点成员通讯时加密,使用 client.key/ client.cert 在与客户端通讯时加密。
    • 可以通过 --trusted-ca-file / --client-cert-auth=true 限制只有 k8s api server 允许访问 etcd 数据。
  • 节点失效可以通过 etcdctl member remove / etcdctl add memberN …
read more

源码阅读 - cat 的 MINIX3 实现

查看原文

这个文件是 MINIX 3 的 cat 实现,其实是 NetBSD cat 的移植。main 函数解析参数,然后用 O_RDONLY|O_NONBLOCK 逐个打开输入的文件,做一些基本的 stat, st mode 检查后,使用 read 读输入流,使用 write 写到 输出流。

read more

PyPI 检查被社工的密码

查看原文

@dstufft 就近期 NPM 密码泄漏做了一次实验:用户登录的时候拿表单密码跟 HIBP 社工库数据做比对,结论是至少 0.7% 的用户被泄漏的密码也用在 PyPI 上,特别的,在 36 小时的实验中,这些用户发布的库在过去三十天内有近三百万的下载。

结论:麻烦每网站一密码,谢谢合作。

read more

TimescaleDB vs InfluxDB

查看原文

本文比较了 TimescaleDB 和 InfluxDB 这两款 TSDB,结论是各有千秋。利益相关方:TimescaleDB 的人写的。

  • TimescaleDB 基于 Postgres 做扩展,天生自带了这些好处:成熟的运维工具,完整的 SQL 语法和 ORM 库支持。
  • InfluxDB 从头撸起,需要自己做运维工具,搞了一套类 SQL - InfluxQL, 以及下一代 Flux,但都需要一些学习曲线。
  • InfluxDB 相应的好处:高度优化的数据存储模型,更高效的简单时间序列数据查询和插入效率。

简单结论:如果对存储有高要求,用 InfluxDB;如果对运维和客户端使用有高要求,用 TimescaleDB。

read more

A Basic Just-In-Time Compiler

查看原文

本文介绍如何写一个最基本的 JIT 编译器。

  • 第一个挑战是内存分配。在进程内存模型,只有页中有设置 execution bit, 页中的代码才能执行。为了运行时安全,我们要把 write bit 关掉,execution bit 打开,否则攻击者可以发动攻击,篡改代码。
  • 第二个挑战是指令缓存。Malloc 返回的内存只能读写不能运行,所以我们只能用 mmap。获得内存后,使用 mprotect 将内存数据设为 PROT_READ | PROT_EXEC. 销掉内存这用 munmap.
  • 第三个挑战是调用编译好的代码。基本思路是使用 rdi, rax, and rdx 这三个寄存器,设置它们三个的指令序列就能调函数了。记得在设置完 rax 后再编译个 ret 返回寄存器里的值。
read more

GraphML - 一种画图结构的 XML 扩展

查看原文

本文是 GraphML 的 Getting Started 文档,其手册可以在 Specification 页查看。这个工具可以让我们使用 XML 定义 Graph, Node, Edge。如果说要跟 SVG 这样的通用画图格式相比,GraphML 的优势应该是它更高一级的抽象。

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns
     http …
read more

Git Reflog 图解

查看原文

这则推文介绍了 git reflog。简单来说 git 会录制你的所有操作(commit, checkout, rebase, 等等),如果你觉得代码写的不好,想退回之前的某个点,可以用 git reflog 找到那个检查点,然后用 git reset --hard HEAD@{3} 这样的方法跳回去。

read more

Vibora - 一款高性能的 Python Web Framework

查看原文

Vibora 是最近新出的一款 Python Web 框架。它跟 Flask 有很多设计相近的地方,有一样的路由 API,不过取消了 thread local 的 request 设计,添加了 async 支持,热点地方用 Cython 实现。目前在处于早期开发阶段,接口不太稳定。

read more

Python 代码打包 Overview

查看原文

本文是 PyPA 打包系列的 Overview 文章,讲述了打包代码的很多知识。

  • 打包是给部署用的,所以其实要先搞懂你打算如何部署。
  • 打包单个 module 比较少见,但也有这样的需求, 参考 bottle.py 这类库。
  • 更多见的需求可能会是 把 module 装进 package, 然后使用 sdist 分发(其实就是 .tar.gz)。后者比较适合纯 Python 代码的发布。
  • 也有一些库有 C 的以来,那就要推荐发二进制包, 发布的时候给出 wheel 包给预编译好的平台,sdist 包给那些没预编译的平台。
  • 有些平台例如 Heroku,GAE 等等有自己的打包流程。
  • 桌面端或者手机端发布目前不是 Python 的强项,但也有 Kivy, Beeware …
read more

« Page 12 / 54 »