Python
2016-05-16
-
bytes 按索引取值得到的是整数。
b'abc'[0]
97
-
str 转 bytes 只需要编码一下就行了。反过来就是解码一下。
s = '你好'
b = bytes(s, 'utf-8')
# b'\xe4\xbd\xa0\xe5\xa5\xbd'
assert b.decode('utf-8') == s
bytes('hello')
TypeError: string argument without an encoding
bytes('hello', 'ascii')
b'hello'
'hello'.encode()
b'hello'
bytes('hello', 'utf-16')
b'\xff\xfeh\x00e\x00l\x00l\x00o\x00'
bytes('hello', 'utf-32')
b'\xff\xfe\x00\x00h\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00'
-
bytes 和 int 列表的转换。
list(b'abc')
[97, 98, 99]
bytes([97, 98, 99])
b'abc'
bytes([256])
ValueError: bytes must be in range(0, 256)
# 大端序
(2008).to_bytes(length=4, byteorder='big', signed=False)
b'\x00\x00\x07\xd8'
# 小端序
(2008).to_bytes(length=4, byteorder='little', signed=False)
b'\xd8\x07\x00\x00'
struct.pack('<I', 2008)
b'\xd8\x07\x00\x00'
int.from_bytes(b'\x00\x00\x07\xd8', 'big')
2008
int.from_bytes(b'\xd8\x07\x00\x00', 'little')
2008
int.from_bytes(b'abc', 'little')
6513249
int.from_bytes(b'cba', 'big')
6513249
PS:2020/11/02, 字节顺序(大端序、小端序)
-
Python2 字符串
# python2
print(repr('你好'))
'\xc4\xe3\xba\xc3'
print('\xc4\xe3\xba\xc3')
你好
# python3
print('\xc4\xe3\xba\xc3')
'ÄãºÃ'
print('\xc4\xe3\xba\xc3'.encode('latin-1'))
b'\xc4\xe3\xba\xc3'
print('\xc4\xe3\xba\xc3'.encode('latin-1').decode('gbk'))
'你好'
Linux
2016-05-14
安装 Ubuntu 16.04 时选择的分区方案。
| 挂载点 |
大小 |
意义 |
/ |
50GB |
根目录 |
/boot |
10GB |
启动目录 |
/home |
150GB |
用户主目录 |
/usr |
100GB |
程序分区 |
/var |
50GB |
变量文件目录 |
/tmp |
50GB |
临时文件目录 |
SWAP |
20GB |
交换分区 |
Linux 命令行 终端
2016-05-13
在命令行中输出颜色文字。
包管理工具 Linux CentOS RHEL DNF Yum RPM
2016-05-02
关于 DNF 的更多信息,参考:2016/05/03 CentOS DNF
介绍
.rpm 包,和 .deb 包是 Linux 生态中两种最主要的包格式。
- yum:
- 较新版本提供了 dnf 工具,改善 yum
包名
bash-4.2.46-35.el7_9.x86_64.rpm
其中:
- bash 是名称
- 4.2.46 是版本
- 35.el7_9 是构建版本
- x86_64 是服务器架构
- rpm 是文件后缀
名称 :bash
架构 :x86_64
版本 :4.2.46
发布 :31.el7
大小 :3.5 M
源 :installed
来自源:anaconda
简介 : The GNU Bourne Again shell
网址 :http://www.gnu.org/software/bash
协议 : GPLv3+
描述 : The GNU Bourne Again shell (Bash) is a shell or command language
: interpreter that is compatible with the Bourne shell (sh). Bash
: incorporates useful features from the Korn shell (ksh) and the C shell
: (csh). Most sh scripts can be run by bash without modification.
基本用法
yum help list # 查看帮助
yum search <package> # 搜索包
yum list
yum list installed
rpm -qa
yum list --upgradable
yum info <package>
rpm -qi <package>
rpm -ql <package> # 已安装包的文件列表
rpm -qd <package> # 已安装包的文件列表中的文档部分
rpm -qc <package> # 已安装包的文件列表中的配置部分
yum repolist
# repoquery 是 yum-utils 包提供的命令
repoquery -l <package> # 文件列表
repoquery -f <filepath> # 查看文件属于哪个包, 比如: `repoquery -f "*/repoquery"`
repoquery --location <package> # 查看包的下载地址
yum deplist <package> # 依赖
rpm -qR <package> # 已安装包的依赖
rpm -q --whatrequires <package> # 反向依赖
rpm -q --whatprovides <filepath>
rpm -qf <filepath>
yum provides <pattern>
yum whatprovides <patter>
yum check-update
yum updateinfo
yum update [package]
yum upgrade [package]
yum update-minimal
yum upgrade-minimal # 和 yum update-minimal 相同
yum downgrade <package>
yum install <package>
yum install <package-rpm-filepath>
yum reinstall
yum makecache
yum clean
yum erase
yum remove
yum autoremove
# list, info, summary, repeat, redo, undo, new, rollback, addon, addon-info, stats, statistics, sync, synchronizepkg, pkgs, pkg-list, pkgs-list, package, package-list, packages, packages-list, pkg-info, pkgs-info, package-info, packages-info
yum history
yum history list
yum history list all
yum versionlock <package>
安装组
RedHat 系列提供的,安装组(Group)的概念非常好。
安装组就是为了某一个目的需要的一组包,比如 gnome-desktop 组是安装一个完整的 gnome 桌面环境,web-server 组是安装 apache 和相关的几个包。
- 安装组中有必须安装的包(Mandatory Packages),默认安装的包(Default Packages),也有可选的包(Optional Packages)。
- 按我的理解,安装组分成三类:
- 可用组 Available Group,就是普通的安装组,包含部分包,可以 install。
- 环境组 Environment Group,就是安装组的组,group of goups,比如 minimal 环境组包含必须的 core 组和可选的 debugging 组。也可以 install。
- 基础组,比如 core,比如 php,是隐藏的,不可直接 install,用于构建环境组设计的。
我实在想不到为什么这些组不直接暴露出来,这个设计有什么别的原因。
$ yum help groups
groups [list|info|summary|install|upgrade|remove|mark] [GROUP]
显示或使用、组信息
别名:group, grouplist, groupinfo, groupinstall, groupupdate, groupremove, grouperase
yum grouplist
yum group list ids 附带组 ID
yum group list hidden 列出所有组
yum groupinfo
yum groupinstall <group>
yum install @<group>
yum install @^<environment-group>
yum --setopt=group_package_types=mandatory,default,optional groupinstall "Web Server"
yum groupupdate
yum groupremove
yum grouperase
相关文件
/etc/yum.conf
/etc/yum.repos.d/
/etc/yum/
/etc/rpm 目录不知道是干什么的。
yum 插件
比如最常见的 fastestmirror,用于自动选择最快的镜像源。所以我们使用 CentOS 时,一般不需要去配置镜像源。
Linux wget 开发工具 HTTP
2016-04-26
复制指定 URL 路径下的所有文件到本地目录 HTML 下:
wget -m -p -k -np -P <HTML> <URL>
Nginx WebDev 服务器
2016-04-10
Nginx 商用版 1.5.7 (2013 年) 开始支持 sticky 指令。
文档: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky
Syntax: sticky cookie name [expires=time] [domain=domain] [httponly] [samesite=strict|lax|none] [secure] [path=path];
sticky route $variable ...;
sticky learn create=$variable lookup=$variable zone=name:size [timeout=time] [header] [sync];
Default: —
Context: upstream
开源版有 nginx-sticky-module。
C 语言写的,BSD 协议。
代码看起来并不复杂,如果需要用到的时候,可以进行一个粗略的 Review。
编译
# 下载 nginx 源码 (2016-04-26)
wget http://nginx.org/download/nginx-1.10.0.tar.gz http://nginx.org/download/nginx-1.10.0.tar.gz.asc
gpg --verify nginx-1.10.0.tar.gz.asc
# 下载 nginx-sticky-module (2015-08-06)
wget https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/1.2.6.zip
unzip 1.2.6.zip
cd nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d/
unzip nginx-1.10.0.zip
cd nginx-1.10.0/
# 其他参数按需添加
./configure --add-module=../nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d/
make && make install
# Configuration summary
# + using system PCRE library
# + OpenSSL library is not used
# + md5: using system crypto library
# + sha1: using system crypto library
# + using system zlib library
# nginx path prefix: "/usr/local/nginx"
# nginx binary file: "/usr/local/nginx/sbin/nginx"
# nginx modules path: "/usr/local/nginx/modules"
# nginx configuration prefix: "/usr/local/nginx/conf"
# nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
# nginx pid file: "/usr/local/nginx/logs/nginx.pid"
# nginx error log file: "/usr/local/nginx/logs/error.log"
# nginx http access log file: "/usr/local/nginx/logs/access.log"
# nginx http client request body temporary files: "client_body_temp"
# nginx http proxy temporary files: "proxy_temp"
# nginx http fastcgi temporary files: "fastcgi_temp"
# nginx http uwsgi temporary files: "uwsgi_temp"
# nginx http scgi temporary files: "scgi_temp"
用法
upstream {
sticky;
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h]
[hash=index|md5|sha1] [no_fallback] [secure] [httponly];
科学
2016-03-31
ABO 血型系统是根据血小板上的两种抗原——A 抗原和 B 抗原——来区分的:
- A 型血 :仅携带有 A 抗原
- B 型血 :仅携带有 B 抗原
- AB 型血 :同时携带 A 抗原和 B 抗原
- O 型血 :两种抗原都没有
A 型血的人会消灭 B 抗原,所以不能输 B 型血和 AB 型血,只能输 A 型血和 O 型血;
同理,B 型血的人会消灭 A 抗原,所以不能输 A 型血和 AB 型血,只能输 B 型血和 O 型血;
AB 型血的人自己就两种抗原都有,当然都不消灭,所有血型的血都可以;
相反,O 型血的人两种抗原都没有,哪种都不可接受,所以只能使用 O 型血。
遗传规律表
| No |
父/母 |
父/母 |
子女 |
子女 |
子女 |
子女 |
| 1 |
O |
O |
O |
- |
- |
- |
| 2 |
O |
A |
O |
A |
- |
- |
| 3 |
O |
B |
O |
- |
B |
- |
| 4 |
O |
AB |
- |
A |
B |
- |
| 5 |
A |
A |
O |
A |
- |
- |
| 6 |
A |
B |
O |
A |
B |
AB |
| 7 |
A |
AB |
- |
A |
B |
AB |
| 8 |
B |
B |
O |
- |
B |
- |
| 9 |
B |
AB |
- |
A |
B |
AB |
| 10 |
AB |
AB |
- |
A |
B |
AB |
-
一共 10 种组合:
-
生 O 型血子女的组合有 6 种
- 生 A 型血子女的组合有 7 种
- 生 B 型血子女的组合有 7 种
-
生 AB 型血子女的组合有 4 种
-
AB 型血父母不能生 O 型血子女
- O 型血父母不能生 AB 型血子女
美文佳句
2016-03-17
牛耕田回来,躺在栏里,疲惫不堪地喘着粗气,狗跑过来看它。
“唉,老朋友,我实在太累了。”牛诉着苦,“明儿个我真想歇一天。”
狗告别后,在墙角遇到了猫。狗说:“伙计,我刚才去看了牛,这位大哥实在太累了,它说它想歇一天。也难怪,主人给它的活儿太多太重了。”
猫转身对羊说:“牛抱怨主人给它的活儿太多太重,它想歇一天,明天不干活儿了。”
个人
2016-03-16
每次春晚都必然问候海外华人华侨,但我从来没有思考过华人和华侨有什么区别,近日看到网络上的一些资料才弄明白。
Linux
2016-03-15
# 时间清零
touch -amt 197001010000.00 <file>
sudo apt install -y xattr
xattr -l <file>
# 删除所有附加属性
xattr -c <file>