Redis 极简教程

查看原文

本文覆盖了 Redis 最基本的特性:

  • in-memory key-value data store
  • 数据全丢如果 Redis 挂了(当然 可以把备份开起来)
  • 使用要点:
    • 每个 key 最好都有独立的 namespace
    • 最好设定 TTL(time to live), 不要让数据永久存在 Redis 中
    • 不要过度使用,不适合的场景例如敏感数据,配置等信息不要存
    • 如果数据集太大,可能会搞垮 Redis
read more

Python 括号 方括号 花括号详解

查看原文

本文介绍了对于初学者学习 Python 时遇到的一大难题 ()[]{} 这些符号怎么用,给出了很详尽的解释。

  • ()

    • 函数调用 x = len('abcd')
    • 优先级 2 + 3 * 4 v/s (2 + 3) * 4
    • 创建元祖 tuple: t = (1, 2, 3)
    • 创建生成器: g = (a * a for a in range(10))
    • 拆开太长的行 if (a is True and b is True):

    if (a is True and b is …

read more

DoH draft - DNS Queries over HTTPS

查看原文

本文是 DNS Queries over HTTPS (DoH) 的 ietf 草案,希望实现的东西是整个 DNS 协议 overlay 在 HTTP 协议上,能扛 amplification 攻击了有木有(当然,除非世界上的 DNS 服务器都升级了)。它不仅仅把 HTPT 当作一个隧道,还想使用更多时髦的特性,例如 caching, redirection, proxying, authentication, and compression。具体草案如下:

  • 通过 HTTP/2, HTTPS, URIs 请求,例如 GET https://example.org/dns-query?dns=<base64 …
read more

Python 应用程序的目录结构

查看原文

Python 语言灵活,所以目录结构也可以很多样,不像别的应用程序一般就推荐一套写法。但是一般大家还是遵循几套固定的写法,毕竟程序类型还是有限的那么几种:命令行工具,一次性脚本,Web 应用,package。

  • CLI - 一次性脚本
helloworld/

├── .gitignore
├── helloworld.py
├── LICENSE
├── README.md
├── requirements.txt
├── setup.py
└── tests.py
  • CLI - 一个 package
helloworld/

├── helloworld/
│   ├── __init__.py
│   ├── helloworld.py
│   └── helpers.py

├── tests/
│   ├── helloworld_tests.py
│   └── helpers_tests.py

├── .gitignore
├── LICENSE
├── README.md
├── requirements.txt
└── setup …
read more

SELinux 介绍

查看原文

Security-Enhanced Linux (SELinux) 是在 Linux 内核中设计的一套 Access Control 机制,即便你可以通过 user, group, rwx 这些权限检查,你还得通过 SELinux 定制的 policies 的检查才能执行命令成功。

大部分操作系统一般使用 Discretionary Access Control (DAC). 它把目录设备和 objects 挂钩,进程 和 subjects 挂钩,DAC 就是控制 subjects 和 objects 二者怎么互相交互。

SELinux 觉得还不够,要引入更多,所以使用了 Mandatory Access Contro (MAC)。因为只基于用户 id 和所有权,还有很多安全隐患没有考虑到 …

read more

Astrality - 一款管理 dotfiles 的工具

查看原文

Astrality 这个工具可以根据 YAML 模板文件自动生成和应用配置文件,应用后可以使用钩子执行一些 shell 命令。可以做到的事情很多,例如示例中的修改配置后自动刷新桌面的背景等等。使用的模板格式是 Jinja2。可以在 readthedocs 查看教程。

read more

Chaostoolkit - Python Chaos Engineering Toolkit

查看原文

本文介绍了一个使用 Python 编写的通用 Chaos Engineering 框架,它的设计目标是简单快速地在运行着的系统上做 chaos 实验, 整个 toolkit 使用很普通的 pip 安装,不需要向 ChaosMonkey 那样有很多 Java 系的依赖,居家测试推荐。

它基于的原理是 principle of chaos, 它的使用颇为简单:编写 json/yaml 配置文件,编写插件,然后运行 chaos run experiment.json. 它默认提供了不少插件,例如 kubernetes,prometheus 等等。

举个例子, 👇 这段 JSON 配置说我们要杀掉一个 k8s pod,pause 5 秒 …

read more

使用 Flask Connexion Swagger 开发 RESTful API

查看原文

本文介绍了一套使用 Python 开发 RESTful API 的技术栈:Flask 做 Web 部分,Connexion 添加 API endpoints,Swagger YAML 配置 API 接口的输入输出 schema。这套技术栈有很多好处,例如借助 Flask 的小巧接口快速开发 web,借助 Swagger 把 schema 规范化,可以附带一个可以调试 api 的面板,方便开发单也应用。

read more

Docker images 不要随便拉下来运行

查看原文

本文介绍了下载运行不明来源的 docker 镜像是多么要不得的事情。有五百万个 docker image pull 发生在 Docker Hub 账号 docker123321 下,这批镜像拉下来后会尝试运行挖矿,或者尝试向 kubelet HTTP API 发送指令注入挖矿的脚本。文章列了很多证据,最后要树立一个观念:拉镜像下来运行意味着你正在把可执行的二进制数据下载下来运行,如果是从来没有用过的镜像,看看它的 FROM,ENTRYPOINT,看看它做了什么,另外它还得是自动构建出来的(而不是某个开发者在本机用别的 Dockerfile 构建推上去的)。每个 build 你都可以查 digest 和 command 看看和 Dockerfile 是否相符。如果用 Kubernetes 最要担心的事情是 kill chain,一系列事件发生时才会攻击生效,这要求安全要监控到这些特定的事情,一旦发现马上解决。

read more

Perl 可以称为 grep sed awk find 的替代品

查看原文

本文介绍了 Perl 作为一门编程语言不如别的,但是作为模式匹配这个领域,还是可以成为一方霸主。整个 Perl 很难学,但是学会 Minimal Perl 就可以很大提到生产力。

例如寻找特定的正则表达式可以用以下命令

$ perl -wln -e  "/REPLACE-RE-HERE/ and print;" foo.txt

匹配的都不打印:

$ perl -wln -e  "/REPLACE-RE-HERE/ or print;" foo.txt

打印匹配部分:

$ perl -wln -e "/RE/ and print $&;" foo.txt

文中推荐了 Minimal Perl: For Unix and Linux People 可以阅读。

read more

« Page 19 / 54 »