Dark Side cat /dev/brain

MSN Messenger,再见

2014.10.31 MSN Messenger 在中国大陆正式下线,这是 MSN Messenger 最后一个服务地区。运营了15年的 MSN Messenger 寿终正寝,被 Skype 取代。

msn messenger

阅读全文

中点(·)在UTF-8和GBK转换中的问题

在翻译外国人名的时候会用到中点(“·”,大陆和台湾称为“间隔号”),例如“理查德·斯托曼”。偶尔也会用在广告词、电影名或者书籍章节名中,例如:“如果·爱”。

在实际使用过程中,对含有中点的文件进行字符集转换时,经常会出现转换失败的情况。这种情况通常出现于以下场景:

  • UTF-8 -> GBK
  • GB2312 <-> GBK
  • UTF-8 -> BIG5

转换失败的原因

通常情况下,字符集转换失败是由于文本使用的字符在目标字符集中没有对应字符的编码造成的。

符号 UNICODE UNICODE 名称 GB2312 GBK GB18030 BIG5
· U+00B7 MIDDLE DOT - A1 A4 A1 A4 A1 50
U+2022 BULLET - - 81 36 A6 31 A1 45
U+FF0E FULLWIDTH FULL STOP A3 AE A3 AE A3 AE A1 44
U+30FB KATAKANA MIDDLE DOT A1 A4 - 81 39 A7 39 -

注意:

  • GB2312 中“A1 A4”代表的是 U+30FB katakana middle dot
  • GBK、GB18030 中“A1 A4”代表的是 U+00B7 middle dot
  • GBK 中 没有 U+30FB KATAKANA MIDDLE DOT 对应的字符编码

基于以上原因,GBK <-> GB2312 字符集转换的时候如果包含看起来像是“中点”的东西,转换失败的概率极高

阅读全文

cp 大量文件时可能耗光内存

8月11日的时候有用户在 GNU coreutils 邮件组发邮件反馈,自己在拷贝大量文件(4.32亿,39 TB)的时候发现所有空闲内存被用光。

这个问题目前暂未修复,预计在GNU coreutils 下一个版本(8.24)修复。当前 patch在 8.23版本可用(更早版本没试过,理论上可用)。

注意: 这一问题在 mv 命令被转化为 cp (例如跨文件系统 mv 文件)的时候也会有影响。

阅读全文

应届生的简历

前段时间帮别人转发简历的时候,讨论了一些问题。想起其实可以把这个写下来给应届毕业生同学做参考,社招简历不单独讨论,不过也有一些参考价值,请自行斟酌。

注意: 这里讨论的主要是技术类简历,对其他(如艺术类、文秘类)不一定适用。也请自行斟酌。

阅读全文

Numbers You Should Know

Latency Numbers

Project Time
( ns )
Time
( ms )
Description
L1 cache reference 0.5    
Branch mispredict 5    
L2 cache reference 7   14x L1 cache
Mutex lock/unlock 25    
Main memory reference 100   20x L2 cache, 200x L1 cache
Compress 1K bytes with Zippy 3,000    
Send 1K bytes over 1 Gbps network 10,000 0.01  
Read 4K randomly from SSD* 150,000 0.15  
Read 1 MB sequentially from memory 250,000 0.25  
Round trip within same datacenter 500,000 0.5  
Read 1 MB sequentially from SSD* 1,000,000 1 4X memory
Disk seek 10,000,000 10 20x datacenter roundtrip
Read 1 MB sequentially from disk 20,000,000 20 80x memory, 20X SSD
Send packet CA->Netherlands->CA 150,000,000 150  

Cache & Memory Latency in CPU Cycles

根据 Intel 官方论坛的讨论,Sandy Bridge 架构 Intel CPU 的 Cache 时间可以做如下运算。

Cache status Cycles costs
L1 CACHE hit ~4 cycles
L2 CACHE hit ~10 cycles
L3 CACHE hit, line unshared ~40 cycles
L3 CACHE hit, shared line in another core ~65 cycles
L3 CACHE hit, modified in another core ~75 cycles
remote L3 CACHE ~100-300 cycles
Local main memory reference ~60 ns
Remote main memory reference ~100 ns

Operation Costs

以下数据基于2.3GHz 双核 Xeon。

Project Time
( ns )
Time
( ms )
int bit 0.5  
int add 0.2  
int multi 1.5  
int div 10  
int mod 11  
int64 bit 0.5  
int64 add 0.2  
int64 multi 1.5  
int64 div 20  
int64 mod 20  
float add 1.5  
float multi 2.0  
float div 8  
double add 1.5  
double multi 2.0  
double div 12  
context switch ( 2 processes 16K per one) 1,500 1.5
context switch ( 2 processes 64K per one) 1,600 1.5
context switch ( 8 processes 16K per one) 2,000 2.0
context switch ( 8 processes 64K per one) 2,500 2.5
context switch ( 16 processes 16K per one) 2,100 2.1
context switch ( 16 processes 64K per one) 2,700 2.7

Notes

  • Assuming ~1GB/sec SSD
  • Context switch 与系统当前负载情况强相关,无法准确测定。以上数值请做参考。

Credits

阅读全文