第一次看这本书大概是2年前吧,那个时候就是草草的翻阅一遍,只记得那个金字塔的模型,随后也没有真正实行。大概3个月前吧,又参加了一次这个东东为期2天培训,不过到现在,里面的那7个习惯还是记不清楚了,但这三个月过来,还是有两点感触的:
1.本书的核心是“习惯”,其实看书名就知道了,但一直没有重视过这个词。这三个月来,在好几件事情上都发现,循序渐进才是王道,符合自然界的发展规律啊。不图刚猛强劲,只要能够坚持就成了。私事就不说了,看看美国就知道了,她之所以能够成为首屈一指的超级大国,消耗地球上三分之一的资源,就是因为她已经以2%的增长坚持了200年啊(具体请见经济笔记)。我国有了翻天覆地的变化,也是因为已经以8%的速度增长了30年了。所以说习惯才是决定命运的最直接因素,养成好的习惯才是正确的解决方案
2.事情重要性与实践分配田字格。这个第几象限的问题大家应该已经看过好多次了,印象也是最深刻的一个。不过我也没有统计过自己到底做到了没有,我想大概是没做到吧嘿嘿。不过在同一时间只做一件事,要专注才能把事情做好,这个先安排在第二优先级吧呵呵
《高效能人士的7个习惯》这本书不错,应该看一看
在这片神奇的土地上,经常出现神奇的事情,久而久之,大家也就习惯了。这次银行出台数钱费,大家不必大惊小怪,垄断的必然结果而已。但是作为普通的老百姓,也有解决的办法,记得以前有个事情:
上海,一小伙去银行取钱,看到取款机好多人排队,但是银行的柜台前却没什么人,于是去柜台办理。小伙:“我取200”;营业员:“你看公告板,新规定,取1000元以下,柜台不给办理”;小伙:“…”,走了;过一会儿,小伙又回来了:“存钱给办理么?”;营业员:“存钱可以的”;小伙:“那先给我取1000,再存800”。
天朝之所以法律有漏洞,执法不严格,与劳动人民的强大智慧是分不开的。银行不是要数钱费么,没事,我帮你数啊,把1000块钱分成1块的数好,存1000次不就行了。
由总部在美国纽约的经济实验室集团(EconomicLba)颁布的中国贫富标准线,看看你生活在哪个位置?
超级大富豪:年收入在5000万以上
大富豪:年收入在1000–5000万
富豪:年收入在300–1000万之间
富人:年收入在100–300万之间
高产者:年收入在30–100万之间
中产者:年收入在15–30万之间
低产者:年收入在8–15万之间
穷人:年收入在3–8万之间
很穷的人:年收入在1–3万之间
非常穷的穷人:年收入在5千–1万之间
穷得没衣服穿的人:年收入在1千–5千之间
穷得求生不得求死不能的穷人:年收入在100–1000元之间
穷得几乎要死的穷人:年收入在30–100元之间
死路一条的穷人:年收入在30元以下……
唉,我太可怜了
我看网上应该有不少搜索这个区别的问题,但是回答的都不全面,其中sigterm与sigint尤其有一点区别比较重要,但大都没有提及,今天我就遇到了这个问题,纠结了20分钟才搞明白咋回事。
首先,对于说这几个信号都是终止程序运行的说法不太准确,因为程序收到信号后,如果不对信号处理,就会导致程序退出,但如果程序捕获信号进行处理,按照它的逻辑,它是不一定会退出的。
在这三个信号中,sigkill是不能被捕获的,程序收到这个信号后,一定会退出。这就是kill -9一定能保证将程序杀死的原因。
下面说一下sigterm与sigint的区别,其中有一点区别区别很多文章都没有提及,也是我写这篇blog的原因(如果人家都写了,我就不用写了呗)
| 信号 |
产生方式 |
对进程的影响 |
| sigint |
通过ctrl+c将会对当进程发送此信号 |
信号被当前进程树接收到,也就是说,不仅当前进程会收到信号,它的子进程也会收到 |
| sigterm |
kill命令不加参数就是发送这个信号 |
只有当前进程收到信号,子进程不会收到。如果当前进程被kill了,那么它的子进程的父进程将会是init,也就是pid为1的进程 |
下面这两个代码片段就能够验证这种情况(注意使用pcntl的时候,一定要declare ticks,要不然会杯具的发现函数没有被调用,进程不退出,信号发过去没有作用。php手册竟然没有强调这一点):
文件:loadhelper.php
#为了pcntl能够截获信号
declare(ticks = 1);
$arr_processes = array();
function terminate($signo){
echo "aaaaaaaaaaa\n";
}
pcntl_signal(SIGTERM, "terminate", true);
pcntl_signal(SIGINT, "terminate", true);
foreach($argv as $key => $operation){
if(0 === $key){
continue;
}
$pipes = array();
$process = proc_open($operation, array(), &$pipes);
if(false === $process){
exit(-1);
}
$arr_processes[] = $process;
}
while(true){
sleep(100);
}
文件:child.php
declare(ticks=1);
pcntl_signal(SIGINT, "terminate");
pcntl_signal(SIGTERM, "terminate");
function terminate($signo){
echo "test_child\n";
}
while(true){
sleep(100);
}
使用命令php loadhelper.php “php test.php”可以启动这个测试。
1.输入ctrl+c发送sigint可以看到,父进程与子进程的terminate都得到了执行,都有输出,但父进程不会退出,因为子进程还没有退出
2.通过kill向父进程的pid发送sigterm,可以看到,只有父进程输出
遗留问题:
父进程(loadhelper)接受到一次信号后,如果在terminate函数中调用exit,它还是不能退出的,因为还有子进程没有退出。但是从此以后它就不能再接收信号了(子进程还是能够接收到sigint),可能是exit使进程进入了待回收状态,具体还 需要后续在分析一把。
Gmail Notifier Plus 是一款为 Windows 7 专门开发的 Gmail 新邮件提醒应用软件,而实现 Gmail 新邮件提醒等功能则是基于 Windows 7 的 Jump Lists 桌面特性。用起来很方便
Gmail Notifier Plus 是由 Neowin.net 社区成员 daty2k1 开发的,软件很小,只有1M左右,无需安装即可使用,并且它还支持多个gmail账户
目前最新版本2.1.2可以不用鼠标点击登录那个按钮,直接就能进入gmail了,很好很强大。官方下载地址

Gmail Notifier Plus 利用了 Gmail 的安全 RSS Feed 来返回邮件,主要功能包括:定时或即刻检查 Gmail 邮箱,状态栏显示未读邮件数,预览未读 Gmail 邮件,访问、撰写及未读邮件的 Gmail 链接(如上图)。
文章中有些内容copy自:http://livesino.net/archives/2070.live
在这里,我不得不再一次感叹php语言库函数的山寨与不专业。getopt函数就是一个典型的例子,通常用的时候,大家可能觉得没有什么,但在某些情况 下,就真的让人很囧。一个简单的函数,稍微多花几分钟就弄得更好一些了,但这个语言有个随意的开端,就有个随意的实现啊。
在linux中,使用getopt时候,有两种情况:
1.取得的参数解析成字符串:“php test_arg.php -c abc”,这种情况c参数取得的结果就是abc这个字符串
2.取得的参数解析成数组:“php test_arg.php -c abc -c abc123”,这种情况c参数取得的结果就是包含abc与abc123的数组
但是遇到这种情况呢:“php test_arg.php -c abc*”?由于linux的shell已经帮程序做了输入参数的解析,这时候c参数得到的既不是abc*这个结果也不是一个数组,而是被shell展开成了很多文件名后的第一个。
可能getopt用的童鞋很少,但这种山寨的设计,实在太让人憋屈了,自己花个10分钟写一个就比它的要好,为了避免大家重复劳动,分享一个代码片段
function mygetopt(){
global $argv;
$result = array();
$current_key = false;
foreach($argv as $opt){
$matches = array();
if(1 === preg_match("/^-{1,2}(.*)$/", $opt, $matches)){
$current_key = $matches[1];
if(false === isset($result[$current_key])){
$result[$current_key] = false;
}
}else if (false !== $current_key){
if(false === $result[$current_key]){
$result[$current_key] = $opt;
}else{
if(false === is_array($result[$current_key])){
$result[$current_key] = array($result[$current_key]);
}
$result[$current_key][] = $opt;
}
}
}
return $result;
}
为了方便使用,将新版本的getopt函数设置为不接受任何参数,但是解析的结果可以输出所有的参数内容。因为php官方的getopt函数使用后,也无非是对输出的数组进行foreach之后进行switch,还不如方便点,直接解析所有呢。除了这一点,这个getopt函数的输出结果与php官方的完全一致
php官方getopt函数参考文档:http://cn.php.net/manual/en/function.getopt.php