TL;DR

本文主要讨论了 bash 数组和利用 Shell Expansion 语法对数组进行操作,由于写了一个很蛋疼的 bash 工具故想把 bash 坑爹的数组语法吐槽一下。

bash 的语法确实反人类,如果有选择余地,尽量不要用 bash 实现超过10行的功能,即使用 Python 写一万个 subprocess 也好过和 bash 的奇妙语法斗智斗勇。

bash 数组基本语法

虽然 bash 没有真正的变量和引用,但是他真的有数组(也许很多人并不知道 bash 其实是有数组的?)

本质上 bash 中的变量都可以认为是字符串而不存在数值类型变量,数值计算实际上也是通过一种展开 Arithmetic Expansion 实现,“变量引用”概念实际上是一层 getter

可以显示的声明一个变量为数组类型(不声明也可以直接按数组类型赋值):

declare -a array

数组赋值

array=(1 2 3 4)

bash 数组支持稀疏赋值,即只给指定序号的元素赋值:

[cra[……]

Read more

https://nginx.org/en/docs/http/ngx_http_map_module.html

基本用法

语法: map $var1 $var2 { map list }
默认值:
配置段: http(可以存在多个 map 区域)
map 指定了两个变量,其顺序和映射表中的列对应,这里的变量 var1 是 Nginx 自带变量,var2 则是自定义变量名,Nginx 自带变量表可以在 https://nginx.org/en/docs/varindex.html 查到。
map 的大括号内则是映射表,映射表由两列组成,匹配模式(string)和需要设定的值(variable)。
在 map 块里的参数指定了源变量值和结果值的对应关系。

  • 匹配模式可以是一个简单的字符串或者正则表达式,使用正则表达式要用(‘~’)。
  • 一个正则表达式如果以 “~” 开头,表示这个正则表达式对大小写敏感。以 “~*”开头,表示这个正则表达式[……]

    Read more

基于 OpenSSL 1.1.1 构建支持 TLS 1.3 的 Nginx 1.15 安装包

前言

UPDATE. 2018.08.31

TLS 的 RFC 已经正式更新,编号为 RFC 8446

注意:TLS 1.3 目前虽已定稿,但仍处于未被正式确立为 Internet standard 的草案标准阶段,其周边软件的支持可能发生快速的改变,本文所描述内容截止至2018年6月7日。

3月21日,TLS 1.3 草案正式定稿,最终版本为 draft28,详情见 Protocol Action: ‘The Transport Layer Security (TLS) Protocol Version 1.3’ to Proposed Standard (draft-ietf-tls-tls13-28.txt)
6月5日,nginx 发布新的主线版本1.15(其实和1.13.12相比几乎没有功能变化,修了一堆 bug)。
吃饱没事想试试 TLS 1.3 加上组内 keyless 项目的后续开发设计工作需要对 TLS 1.3 有一点了解,于是有了本文。

本文的描述基于 Ubuntu 16.04 和 Debian 8,至于 CentOS 可以参照一下去年 nginx 在1[……]

Read more

https://zhuanlan.zhihu.com/p/37542644

36氪这篇文章的标题让我很是不舒服。

我一直以来警惕自己和任何大众文化走的过近,经验表明一切火爆的流行的标志,即便不是糟粕也是鸡肋,从08年的彩铃骂人段子到13年航母 style 所透露的非理性爱国到最近的丧文化所代表的虚无主义再到最近这些中式选秀,无一不透露着这个国家文化的贫瘠,这个国家的主流文化一直在进行着拙劣的模仿,更糟糕的是与此同时它正在变的越来越排外。

虽然我也常用周恩来那句“人民喜闻乐见你算老几”来反对这个国家的文化管制,然而这只是出于自由平等理念的追求,常随同人民意味着泯然人民,深陷汪洋大海的后果之一就是你再也无法走出去也难以看的远。

我想这篇文章的作者写下这个标题的时候,其实也应该心里明白永远会有人愿做这个“菊外人”

[……]

Read more

从 E5-2690v4 的 NUMA 数量说起,浅谈 Broadwell 到 Skylake 的改进

TL,DR:

Broadwell 的 Cluster on die 和 Skylake 的 sub-NUMA cluster 设置会导致高核心 CPU 显示为两个 NUMA 节点,相关设置会影响缓存命中、延迟和内存访问延迟

Index

0,起因
1,简述架构的改进
2,Broadwell 上的 Snooping 和 COD
3,Skylake 和 SNC
4,其他的一些改进

起因:

某台机器(已知是双路)发现了四个 NUMA 节点:

numastat

也显示出了程序的不同亲和性,

然而根据 Intel Ark ,2690 v4 最大支持两路,且每路为 35M L3,核心数和 L3 cache 显示的数量都恰好是 ark 的一半,因此对这个问题进行了一点调研,发现 Xeon Scalable 相比 Xeon E5v4 确实有比较大的改变不是挤牙膏,借此机会顺便深入了解了一些服务器 CPU 的架构,故有本文。

文中可能用到的几个缩写:Ivy Bridge 缩写为 IVB,Haswell 缩写为 HSW,Broadwe[……]

Read more