护主莫心急

很早就关注了冯大辉,从他的微博、微信公共号里经常会看到他对阿里的评论。大概得出的印象是阿里系的员工更喜欢对外维护公司和老板的形象,如果有人骂了马云,会有一大批人出来给你骂回来。

冯大辉是个有个性的人,有时候会直接回骂,旁敲侧击的也不少,例如下面几条。

纯银发了个网易内部邮件出来,居然没被丁磊约架,没被网易员工在内网和微博上骂,顿时感觉不科学,好失落…唉

网易之所以是一家有趣的公司,就是无论你是调侃还是喷网易,都不会有网易员工冒出来跟你对喷或是对骂;如果你不小心夸了网易,也不会有员工出来对你跪舔。简单一句话:这家公司的员工有独立的人格。

几家大厂里面,我比较喜欢网易的员工,人格独立,三观端正。当然其他几家大公司这种标准的也很多,只是平均一下就不成了。

O_EXCL的作用

1.原始语义

与O_CREATE标志组合起来调用open,确保指定的文件由open的调用者创建,否则返回错误。即,如果进程A用O_CREATE和O_EXCL标志来调用open,期望创建一个指定的文件file1,如果file1不存在,则open成功返回且创建file1,如果file1已经存在了(即不是由进程A创建的),那么open返回错误。

2.使用场景

O_CREATE|O_EXCL多用于确保一个一个程序只能执行单个进程,不能执行多个进程。原理如下,假设进程A是某程序的一个实例,如果它用O_CREATE|O_EXCL标志能够成功创建指定的文件,说明它是该程序的唯一实例,可以继续执行;如果返回错误,说明该文件已经存在,进而说明系统中已经运行着一个该程序的其它实例,检测到错误的返回值后,该实例就可以退出了。

之所以能这么用的唯一理由是该操作是原子的

之所以这么说,理由如下。假设同样语义的非原子的操作流程如下:

if( access(file, R_OK) == -1 )   /* 首先检查文件是否存在 */  
    open(file, O_RDWR | O_CREAT,0666);  /* 如果不存在,那我创建一个这样的文件 */  
...  /* 继续执行任务 */  

从emlog换到typecho

typecho终于迎来大的更新了,从2012年5月8号官网放出一篇名为《Its about time》的日志后,让各路淫民翘首以待,谁都没想到一翘就翘了一年多。

从两年前买了域名+空间后,试过了各种博客程序,wordpress,typecho,emlog,textpattern等等,但最喜欢的还是emlog和typecho,后来一直用的是emlog。说实在话,对emlog很满意的,emlog的社区也做的不错,但这次typecho的更新太吸引人了,还是转了过来。更换程序是很彻底的,我丝毫没有考虑如何在url上做文章,对这个网站和搜索引擎而言,意味着N多死链,但幸好对我自己而言,不意味任何东西。

这个博客一直放在一个虚拟空间里,除了用ftp上传网站代码外,几乎没有任何权限。虽然早已有一个vps,但仍然没有把它迁过来,让它安静的躺在这里吧。

誓要去,入刀山

周末,成都的一个朋友陪他的一个哥们来广州玩,原因是他这个哥们跟女朋友闹别扭了心里难受,他陪他出来转转。中午把他们接到后,吃了顿饭,到我的住处坐坐,然后就去订了几张电影票,看了《扫毒》。

《扫毒》是个怀旧的电影,但如何个怀旧法,每个人的感受不同。诚然,跟很多人一样,我也认为影片本身香港八九十年代兄弟情的主题确实是怀旧的一大因素,但对我而言,最能体现怀旧情绪的,是主题曲《誓要去,入刀山》。

AF_INET与PF_INET的区别

在一些开源项目的socket相关代码中,会同时看到AF_IENT和PF_INET,这两者有什么区别呢?

其实这两个东西就是当年设计上的误差而已。AF=Adress Family;PF=Protocal Family,原来的设计是设想一个AF会支持多个PF,但是就没有然后了。现在为止,这两个东西就是一样的,Linux源代码为证:

/* Protocol families, same as address families. */  
#define PF_UNSPEC	AF_UNSPEC  
#define PF_UNIX	 AF_UNIX  
#define PF_LOCAL	AF_LOCAL  
#define PF_INET	 AF_INET