#209 将文件当作磁盘
Linux 2017-08-05dd if=/dev/zero of=cdata.img bs=1G count=5
mkfs ext4 -F cdata.img
LANG=en fdisk -lu cdata.img
sudo mount -o loop cdata.img /mnt/iso
sudo umount /mnt/iso
coding in a complicated world
dd if=/dev/zero of=cdata.img bs=1G count=5
mkfs ext4 -F cdata.img
LANG=en fdisk -lu cdata.img
sudo mount -o loop cdata.img /mnt/iso
sudo umount /mnt/iso
相关文章:
不知道为了什么,IEEE 设计了一个 64 位的地址方案,称之为 EUI-64 (Extended Unique Identifier)。
MAC 地址这种又被称之为 EUI-48,确切的说,应该是 MAC 地址是 EUI-48 格式。
目前已知的区别:
TODO: 需要一些调查研究。
就是在 OUI 和设备号之间插入 FFFE 即可。
xx:xx:xx:yy:yy:yy
xx:xx:xx:ff:fe:yy:yy:yy
根据维基百科,
Update @ 2021-12-30
在 IPv6 的文档中频繁看到这个词。
无状态自动配置机制中:
中国人习惯年月日时分秒,这可能也是一般符合国际通行规范的时间格式。
yymmdd
yyyymmdd
yyyy-mm-dd hh:mm:ss
yyyy/mm/dd hh:mm:ss
如果加上毫秒/微秒,在秒后面接上 ,SSS 或 .SSS 就行。
但是由于英美的国际地位,以及由于历史原因而导致的英语的强势地位,英文国家的表述习惯也不能不考虑,
用阿拉伯数字表示的话,可以用小数点、横杠、斜杠连接,数字可以用前导 0,
不过有一点很悲剧了,5/4/1919,如果不清楚上下文语境中的文化背景,谁 TM 知道应该算五四,还是四五。
Unix Timestamp
又叫 Unix 时间(Unix Time),又叫 POSIX 时间(POSIX Time),又叫 Epoch Time。
以 UTC+0:00 1970/01/01 00:00:00 为起点,至今的秒数就是时间戳的值。
实际上我在很多项目中用到的时间戳都没有考虑时区,直接用当前系统默认时区的 1970/01/01 00:00:00 为起点,或者说是把当前时区时间当作零时区时间。
Internet Message Format, 邮件格式
date-time = [ day-of-week "," ] date FWS time [CFWS]
day-of-week = ([FWS] day-name) / obs-day-of-week
day-name = "Mon" / "Tue" / "Wed" / "Thu" /
"Fri" / "Sat" / "Sun"
date = day month year
year = 4*DIGIT / obs-year
month = (FWS month-name FWS) / obs-month
month-name = "Jan" / "Feb" / "Mar" / "Apr" /
"May" / "Jun" / "Jul" / "Aug" /
"Sep" / "Oct" / "Nov" / "Dec"
day = ([FWS] 1*2DIGIT) / obs-day
time = time-of-day FWS zone
time-of-day = hour ":" minute [ ":" second ]
hour = 2DIGIT / obs-hour
minute = 2DIGIT / obs-minute
second = 2DIGIT / obs-second
zone = (( "+" / "-" ) 4DIGIT) / obs-zone
1992/02/12 12:23:22+0800
Wed, 21 Jul 2017 10:35:00 +0000 (UTC)
Wed, 21 Jul 2017 18:35:19 +0800 (CST)
Wed, 21 Jul 2017 03:35:02 -0700 (PDT)
import time
import datetime
time.strftime('%a, %d %b %Y %H:%M:%S %z') # local timezone
time.strftime('%a, %d %b %Y %H:%M:%S %z', time.gmtime()) # UTC
tz_e8 = datetime.timezone(datetime.timedelta(hours=8)) # +08:00
dt_e8 = datetime.datetime.now(tz_e8)
print(dt_e8)
print(dt_e8.strftime('%a, %d %b %Y %H:%M:%S %z'))
tz_w8 = datetime.timezone(datetime.timedelta(hours=-8)) # -08:00
dt_w8 = datetime.datetime.now(tz_w8)
print(dt_w8.strftime('%a, %d %b %Y %H:%M:%S %z'))
# dt_e8.strftime('%Y-%m-%d %H:%M:%S.%f')
约定了时间中各个部分的格式,比如年份应该采用四位数字,日期应该怎么表示,时间范围(比如一个月),循环时间,时间区间应该如何表示之类,是一份完整的时间相关规范。
对应的中国国家标准是 GB/T 7408-2005。
比如我们要说的完整时间格式化就有几种允许的格式,下面就是常见的一种符合规范的表述:
YYYY-MM-DDThh:mm:ss+offset
例如:
2004-05-03T17:30:08Z
2004-05-03T17:30:08+08:00
JavaScript 日期输出:
Sat Jul 24 2017 15:42:49 GMT+0800 (中国标准时间)
Python datatime 类型转字符串:
2017-07-25 12:09:39.123173+08:00
ISO 216(1975 年)定义了 A 系列和 B 系列纸张。
ISO 269(1985 年)定义了主要使用于信封的 C 系列纸张。
ISO 217(1985 年)定义了 RA 系列和 SRA 系列的未完成纸张。
利希滕贝格(Lichtenberg,1742-1799)是 18 世纪下半叶德国的启蒙学者,杰出的思想家、讽刺作家、政论家、物理学家。
1786 年,利希滕贝格在书信中提出纸张长宽比为 √2 可实现完美缩放,该理论成为现代 ISO 216 标准(如 A4 纸)的核心依据。这个标准最主要的障碍是美国和加拿大,它们仍然使用 Letter(尺寸接近于 A4)、Legal(尺寸接近于 A3)、Executive 纸张尺寸系统。而加拿大用的则是一种 P 系列纸张尺寸,不过它其实是美国用的纸张尺寸,然后取最接近的公制尺寸。
基本规则:
不同系列:
计算下来:
| Size | A | B | C |
|------|-------------|-------------|-------------|
| 0 | 841 × 1189 | 1000 × 1414 | 917 × 1297 |
| 1 | 594 × 841 | 707 × 1000 | 648 × 917 |
| 2 | 420 × 594 | 500 × 707 | 458 × 648 |
| 3 | 297 × 420 | 353 × 500 | 324 × 458 |
| 4 | 210 × 297 | 250 × 353 | 229 × 324 |
| 5 | 148 × 210 | 176 × 250 | 162 × 229 |
| 6 | 105 × 148 | 125 × 176 | 114 × 162 |
| 7 | 74 × 105 | 88 × 125 | 81 × 114 |
| 8 | 52 × 74 | 62 × 88 | 57 × 81 |
| 9 | 37 × 52 | 44 × 62 | 40 × 57 |
| 10 | 26 × 37 | 31 × 44 | 28 × 40 |

国标(GB/T 148-1997)中没有定义 C 系列,但是有一个 D 系列,其尺寸定义的依据不明。
但我们经常在本子上看到的 16 开,32 开这样的字眼就从这里来的。
| Series | Size | 称呼 |
|---|---|---|
| D0 | 764 X 1064 | 全开 |
| D1 | 532 X 760 | 半开 |
| D2 | 380 X 528 | 4 开 |
| D3 | 264 X 376 | 8 开 |
| D4 | 188 X 260 | 16 开 |
| D5 | 130 X 184 | 32 开 |
| D6 | 92 X 126 | 64 开 |
A4 有些时候也被称之为大 16 开
A4 有些时候也被称之为大 32 开
打印的时候经常可以看到。

对内核资源进行分区,为进程隔离提供支持。
| Namespace | CloneFlag | Version | Year |
|---|---|---|---|
| Mount (mnt) | CLONE_NEWNS | 2.4.19 | 2002 |
| UTS | CLONE_NEWUTS | 2.6.19 | 2006 |
| Inter-process Communication (ipc) | CLONE_NEWIPC | 2.6.19 | 2006 |
| Process ID (pid) | CLONE_NEWPID | 2.6.24 | 2008 |
| Network (net) | CLONE_NEWNET | 2.6.29 | 2009 |
| User ID (user) | CLONE_NEWUSER | 3.8 | 2013 |
| Control group (cgroup) | CLONE_NEWCGROUP | 4.6 | 2016 |
| Time | CLONE_NEWTIME | 5.6 | 2020 |
挂载点可以在不同命名空间之间共享。
UNIX Time-Sharing
不知道为什么叫这个名字。作用是隔离主机名和域名。
不同 IPC 命名空间的进程不能通过 shm 系列方法共享内存。
每个网络命名空间都有一组自己的网络资源,包括 IP 地址、路由表、套接字列表、连接跟踪表、防火墙等等。
主要作用是权限的隔离。
进程控制组。
时间的隔离。
PyCrypto Crypto 曾经非常著名的项目,后来没有维护了,推荐后面两个。
PyCryptodome Crypto 从 PyCrypto 分叉出来的项目,继续维护中。
CryptodomeCryptodome 做包名,方便和老的 PyCrypto 共存。Cryptography cryptography 算 Python 官方项目(PyCA Python Cryptographic Authority)。
# 安装
curl -s "https://get.sdkman.io" | bash
# 查看当前版本
sdk version
# 更新到最新版本
sdk update
# 列出可用 Java 版本
sdk list java
# 安装指定 Java 版本
sdk install java 11.0.16-albba
# 切换到另一个已安装 Java 版本
sdk use java 8.8.9-albba
除了管理 Java 版本,还可以用来管理其他开发工具,比如 Gradle,Maven,Scale 等。