C0reFast记事本

to inspire confidence in somebody.

经常会在日志,或者其他地方遇到类似 '\xe4\xb8\xad\xe5\x8d\x8e\xe4\xba\xba\xe6\xb0\x91\xe5\x85\xb1\xe5\x92\x8c\xe5\x9b\xbd' 的字符串,但是不知道实际是代表的什么,因此要做一个解码。

之前一直没有找到比较好的网页的工具,所以就直接尝试用Python进行解码,实际上类似的字符串就是二进制数据,所以作为字符串加上相应的编码decode一下就可以了。

# 前面加上b声明是二进制数据
s = b'\xe4\xb8\xad\xe5\x8d\x8e\xe4\xba\xba\xe6\xb0\x91\xe5\x85\xb1\xe5\x92\x8c\xe5\x9b\xbd'
# 尝试使用UTF-8解码并输出
print(s.decode('utf-8'))
# 如果不行的话,尝试一下GBK
print(s.decode('gbk'))

Python2和Python3通用~

Python 3.6.0 (default, Dec 24 2016, 08:03:08) 
[GCC 6.2.1 20160830] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> s = b'\xe4\xb8\xad\xe5\x8d\x8e\xe4\xba\xba\xe6\xb0\x91\xe5\x85\xb1\xe5\x92\x8c\xe5\x9b\xbd'
>>> print(s.decode('utf-8'))
中华人民共和国

最近需要修改一下Apache的BasicAuth模块,顺便简单分析一下。

首先是 mod_authn_file, 这个模块从文件中读取用户名和密码组合,并逐一check看用户名和密码是否符合。代码在 modules/aaa/mod_authn_file.c

static const authn_provider authn_file_provider =
{
    &check_password,
    &get_realm_hash,
};

//注册一个叫file的AuthProvider,主要是两个函数check_password和get_realm_hash
static void register_hooks(apr_pool_t *p)
{
    ap_register_provider(p, AUTHN_PROVIDER_GROUP, "file", "0",
                         &authn_file_provider);
}
阅读全文 »

前几天拿到了京东云的代金券,87块钱,刚好能用一台1核1G的虚拟机一个月,外加1M的外网带宽。于是就随便试用了一下,感觉还行,说说感受吧。

首先是镜像,目前镜像不是很多,主要集中在CentOS、Ubuntu、Windows。CentOS还是比较全的,从5.8到7.3都有,Ubuntu只用12.04和14.04两个LTS版本,Windows还是有一些的,不过没怎么关注。除了官方的镜像,还有安全镜像,不过我不敢选。不知道里面加了些啥~
我是直接选了一个CentOS 7.3的镜像。

然后是硬盘,87块钱的代金券只能用系统盘了,30G,数据盘不够加了,也没加。

目前网络只有非BGP可选,创建好了之后我是分配了一个电信的IP,地域是华北,不知道会不会有其他运营商可以选择了。带宽也只能选择1M,不然钱不够了~

创建的过程还是挺简单的,我是绑了SSH key,可以直接ssh登录了。

进去了主机看了一下系统信息:

阅读全文 »

某天收到报警,发现某台PHP Web机器的CPU比较高,压力比较大,登录到机器看了一下,发现,user的CPU还行,但是system的CPU比较高,导致了整个机器的负载比较高,于是就怀疑是不是系统某些地方存在性能瓶颈。

于是先用perf+FlameGraph生成了一下火焰图看一下:
火焰图

发现有很多 __lxstat64 调用占用了很多的CPU时间,这个调用是 stat 函数在64位Linux下的实现,正常情况下,PHP不应该会有这么多类似的调用,这是为什么呢?

阅读全文 »

很久之前,对于磁盘的了解,就知道一个很关键的指标MTBF,即相邻两次故障之间的平均工作时间,也称为平均故障间隔,这个值越大越好,越大意味着硬盘更不容易坏。
对于RAID,也是很相信,觉得大多数情况下,使用RAID,就能保证数据的安全性,几乎不会有数据丢失的风险。

突然的,读到一篇对于RAID 6的文章 Why RAID 6 stops working in 2019,这是一篇2010年的文章,很遗憾到目前才读到。
这篇文章里提到了一个指标,叫URE,也就是Unrecoverable Read Error Rate,不可恢复读取错误,一般普通的桌面级别硬盘,这个指标的值为1 × 10^-14,意味着每读取10^14bit的数据,就有可能产生1bit的错误。

问题在于,这个错误是无法被检测和修复的。10^14bit,大约相当于12.5TB的数据,也就是说,每读取12.5TB的数据,就有可能产生一个错误的读取。而对于目前现在硬盘的容量越来越大,4TB,6TB硬盘的价格越来越低,这种现象会越来越严重。

在RAID5中,当整个集群有一块硬盘出现损坏需要替换时,需要进行重建,重建时,需要读取其他硬盘的数据,计算出替换的那块硬盘的数据,在重建过程中,除了需要考虑重建的时间之外,还要考虑的就是URE的影响,如果集群的容量足够大,比如超过10TB,那么,其实是有很大的概率出现读取错误的,而一旦读取出错,则RAID的重建就会失败,基本也就意味着,数据能恢复的可能性变得相当低了。所以在使用RAID5时,就需要考虑重建的问题。

不过对于企业级的硬盘,URE普遍能做到1×10^-15,就意味着大约能读取125TB的数据,容量有比较大的提升,对于SSD,这个值会更加优秀,有些SSD能达到1×10^-17甚至1×10^-18,能提供更好的数据安全性。

所以,稳定点的话,还是RAID10吧。

默认的Thunderbird设置签名后,会在新建邮件时在前面自动添加两个短横线,类似:

--
xxxxxx

如果要去掉这两个短横线分割符,需要在 工具-> 选项-> 高级-> 配置编辑 中,将 mail.identity.default.suppress_signature_separator 配置项的值修改为 true。即可去掉分割符。

原文在 Signatures - Thunderbird

If you don’t want a “– “ signature separator (the divider between the message body and the signature)
use the config editor to change mail.identity.default.suppress_signature_separator from false to true.
This requires Thunderbird 5.0 or later. If you are using Windows go to Tools → Options → Advanced → General
and press the Config Editor button. Enter suppress_signature_separator in the Filter: field and press return.
Find mail.identity.default.suppress_signature_separator in the results and double click on false in its Value column
to toggle it to true, then close the config editor and press the OK button.

新浪云的PHP 7版本运行环境上线了,相对于PHP 5,PHP 7的性能,在官方宣传和实际应用测试中,都有极好的性能表现,大多数的主流应用和框架都有超过1倍的性能提升。

随着新浪云支持PHP 7运行环境,将应用切换到PHP 7版本运行无疑是更好的选择,但是,由于PHP 7的修改十分巨大,因此,有极少部分的代码是不兼容的,需要针对性的进行修改,想比较巨大的性能提升,这些小的修改就变得微不足道了~

阅读全文 »

为什么说也许是最简单的Channel服务教程呢?因为真的很简单啊,总共只有两个文件,一共只有不到30行代码,但是已经完整的实现了HelloWorld了,除了把代码全写在一行里,不然恐怕这已经是最短的例子了~

阅读全文 »

SAE内部的一些服务,比如MySQL,包括独享型和共享型,默认是无法在外网访问的,这给本地调试带来了一些麻烦,但是,有了VPN隧道服务之后,可以利用VPN隧道服务连接到SAE的内网环境,这时候,就可以在本地计算机直接连接这些服务了。

阅读全文 »
0%