手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:yii

震精:RSS规范作者之一、Reddit创始人之一Aaron Swartz自杀身亡

让人震精的新闻。一个比我小的人,自杀了。。。
国外不是不流行自杀的吗?

本文来自infoQ:http://www.infoq.com/cn/news/2013/01/aaron-swartz-suicide

2013年1月11日,美国程序员、作家、政治活动组织者、互联网活动家Aaron H. Swartz在纽约自杀身亡,享年26岁。

Swartz出生于1986年,在14岁时,就已经加入W3C RDF核心工作组。在麻省理工学院,他与Web发明人Tim Berners-Lee一起工作,并协助开发并传播了Web上数据共享的标准,他与其他人联合写就了目前广泛使用的RSS 1.0规范。他是markdown的联合创始人,还是知名社会化新闻站点Reddit的三个拥有者之一,他还创造了python web应用框架web.py。

Swartz曾在Stanford读过一年,然后主动退学,创立公司Infogami,该公司受到Y Combinator首次Summer Founders Program资助。

2007年,他领导非盈利组织Open Library的创立,该组织意将世界上所有曾经出版过的书的信息都收集起来。

此后,Swartz在哈佛道德中心实验室(Harvard's Ethics Center Lab)完成了一个研究生奖学金,研究制度腐败(Instutional Corruption)。在2010年,他创建了DemandProgress.org,发起运动“反抗互联网审查法案SOPA/PIPA”。

2011年7月,美国联邦大陪审团起诉Swartz,罪名是他从JSTOR在线杂志档案系统上下载了海量学术性文档,并大量散发。此后,他为Avaaz基金会工作,这是一家非盈利性组织,致力于“全球web运动,将人民群众的力量带入到政府决策过程中”。

他对Wikipedia曾做过里程碑式的分析,并写就文章《谁撰写Wikipedia?》。

Swartz曾写过一篇非常有名的文章:《如何提高效率》,在文章结尾 ,他这样写道:

效率的真正秘密在于“聆听自己”,在你饿的时候吃饭,在你疲惫的时候睡觉,当你厌烦的时候休息一下,做那些有趣好玩的项目。

这看起来很容易,但是社会上的一些观念正在把我们向相反的方向引导。要想变得更加有效率,我们需要做的就是转过头来“聆听自己”。

如今,斯人已逝,回看这两句话,怎能不令人唏嘘!

郑柯 郑柯,实用的理想主义者,相信:每天改变一点点,这个世界会更好。

---------
实在让人不敢想象。。

Tags: rss, reddit

php pack()函数详解与示例

pack和unpack在一般的程序中还真的不容易见到,但是如果你用过很久以前的php生成excel你就会知道了。他的excel的头就是pack出来的
最近在尝试与C交互的时候又用上了这玩意,所以不得不再看看。其实就是C要求我一定要有包头。。。其实纯字符串也不错嘛。干嘛非得搞个包头呢?真纠结 .。

手册上有pack与unpack的介绍,但都是英文的。。。
 

  任何一款拥有socket操作能力的语言都有一个专门用于组包的函数,php也不例外!          

   用了很久php了却很少有机会用php进行一些二进制操作。 最近用php写一个socket客户端连接一个用C++语言开发的游戏服务端。 服务器端开发人员使用了二进制的形式来定义协议的格式。协议格式如下:

   包头(2bytes)+加密(1byte)+命令码(2bytes)+帧内容

1.包头的内容是记录帧内容的长度;
2. 加密:0表示不加密,1表示加密;
3. 命令码为服务端命令识别符号;

    一开始不了解php原来有pack可以来组装二进制包, 走了弯路,让服务端开发人员用C语言帮忙开发了的几个内存操作函数,按照协议规则返回二进制包,然后我将这几个方法编译成一组扩展函数供php使用。
   
    话归正题,本文是介绍如何使用pack和unpack这两个方法的。php官方手册举例太少,不能很容易理解,特别是那些格式化参数的使用。

转摘的参数中文说明:

pack/unpack 的摸板字符字符 含义
a 一个填充空的字节串
A 一个填充空格的字节串
b 一个位串,在每个字节里位的顺序都是升序
B 一个位串,在每个字节里位的顺序都是降序
c 一个有符号 char(8位整数)值
C 一个无符号 char(8位整数)值;关于 Unicode 参阅 U
d 本机格式的双精度浮点数
f 本机格式的单精度浮点数
h 一个十六进制串,低四位在前
H 一个十六进制串,高四位在前
i 一个有符号整数值,本机格式
I 一个无符号整数值,本机格式
l 一个有符号长整形,总是 32 位
L 一个无符号长整形,总是 32 位
n 一个 16位短整形,“网络”字节序(大头在前)
N 一个 32 位短整形,“网络”字节序(大头在前)
p 一个指向空结尾的字串的指针
P 一个指向定长字串的指针
q 一个有符号四倍(64位整数)值
Q 一个无符号四倍(64位整数)值
s 一个有符号短整数值,总是 16 位
S 一个无符号短整数值,总是 16 位,字节序跟机器芯片有关
u 一个无编码的字串
U 一个 Unicode 字符数字
v 一个“VAX”字节序(小头在前)的 16 位短整数
V 一个“VAX”字节序(小头在前)的 32 位短整数
w 一个 BER 压缩的整数
x 一个空字节(向前忽略一个字节)
X 备份一个字节
Z 一个空结束的(和空填充的)字节串
@ 用空字节填充绝对位置


string pack ( string $format [, mixed $args [, mixed $...]] )

一些规则:
1.每个字母后面都可以跟着一个数字,表示 count(计数),如果 count 是一个 * 表示剩下的所有东西。
2.如果你提供的参数比 $format 要求的少,pack 假设缺的都是空值。如果你提供的参数比 $format 要求的多,那么多余的参数被忽略。

下面还是用例子来说明用法会容易理解一点:
PHP代码
  1. 关于Pack:  
  2.   
  3. 下面的第一部分把数字值包装成字节:  
  4. $out = pack("CCCC", 65, 66, 67, 68);      # $out 等于"ABCD"  
  5. $out = pack("C4", 65, 66, 67, 68);         # 一样的东西  
  6.   
  7. 下面的对 Unicode 的循环字母做同样的事情:  
  8.  $foo = pack("U4", 0x24b6, 0x24b7, 0x24b8, 0x24b9);  
  9.   
  10. 下面的做类似的事情,增加了一些空:  
  11. $out = pack("CCxxCC", 65, 66, 67, 68);      # $out 等于 "AB\0\0CD"  
  12.   
  13. 打包你的短整数并不意味着你就可移植了:  
  14. $out = pack("s2", 1, 2);          
  15. # 在小头在前的机器上是 "\1\0\2\0"  
  16. # 在大头在前的机器上是 "\0\1\0\2"  
  17.   
  18. 在二进制和十六进制包装上,count 指的是位或者半字节的数量,而不是生成的字节数量:  
  19.   $out = pack("B32""...");  
  20.     $out = pack("H8""5065726c");         # 都生成“Perl”  
  21.   
  22. a 域里的长度只应用于一个字串:  
  23.   $out = pack("a4""abcd""x""y""z");      # "abcd"  
  24.   
  25. 要绕开这个限制,使用多倍声明:  
  26.   $out = pack("aaaa",    "abcd""x""y""z");   # "axyz"  
  27.    $out = pack("a" x 4,   "abcd""x""y""z");   # "axyz"  
  28.   
  29. a 格式做空填充:  
  30.   $out = pack("a14""abcdefg");         # " abcdefg\0\0\0\0\0\0"  
  31.   
  32. 关于unpack:  
  33.   
  34. array unpack ( string $format, string $data )  
  35.   
  36. $data = "010000020007";  
  37. unpack("Sint1/Cchar1/Sint2/Cchar2",$data);  
  38.   
  39. ## array('int1'=>1, 'char1'=>'0','int2'=>2,'char2'=>7);  
  40.   
  41. 最后本文开头讲到的协议使用pack/unpack 举例程序代码为 :  
  42.   
  43. $lastact   = pack('SCSa32a32',0x0040, 0x00, 0x0006, $username$passwd );  
  44.   
  45. unpack('Sint1/Cchar1/Sint2/Cchar2/',$lastmessage);  

学习资料:
http://blog.csdn.net/jojobb3138688/archive/2007/05/07/1598609.aspx

我上面的内容来自于:http://blog.sina.com.cn/s/blog_3eba8f1c0100nq9r.html,我现在已经顺利的使用完了。黑黑
还有的参考资料:
http://bbs.phpchina.com/thread-104492-1-1.html
http://hi.baidu.com/chinetman/item/f78a71d847e7d638e2108fda

Tags: pack, unpack

dash的一个小配置文件

 软件名叫DASH,这个plist文件是老鬼发我的,还不错。

 
com.kapeli.dash.plist
 
看手册是方便了。

Tags: dash

转:像打麻将一样干工作

这是一篇来自问库的文章,虽然说的很无耻,但也很有道理 :http://wenku.baidu.com/view/22732d8183d049649b665862.html

说白了,就是利益的关系,真的。。你看文章就是这么写的,看到最后你就会发现,确实是因为利益导致了工作的进度

原文如下:

国人都爱打麻将,我认为,只要拿出一半打麻将的精神,企业各部门之间的配合就会无缝对接。
 
仔细想一想,其实打麻将包含了所有企业成功的精髓。任何工作都不是一个人单打独斗,要的是集体配合。比如,你坐在我对面,你洗牌的时候,牌掉在我的脚下,谁捡?当然是我捡。因为早捡起来,早开局,我好早点赢钱。所以打麻将,不管谁掉了牌,都会有人尽快捡起来。
 
但在工作中呢?你做错了,凭什么我来帮你?你弄掉了,肯定由你捡,跟我有什么关系?一个人做错了,实际上跟大家都有关系,那么,为什么不能用打麻将的精神来工作?
 
打麻将的人从来不迟到,说好晚上8点,可还没到点,有三个人先到了,剩下的那个人在路上,这三个人电话一顿催:“快点来,三缺一”。那个人敢说:“急什么,不是8点吗”?结果,赶紧打个车跑来了,进门一看表才7点半。可他第一句话,肯定是:“不好意思,迟到了,让你们久等了”
 
为什么说迟到了?因为别人都比他早到。
 
另外,说好晚上12点收局,时间没到,一定有人举手要求“加班”。说:“实在不好意思,今晚输多了,再打一圈吧”?打一圈就打一圈,你赢了别人输了,不打不好意思。所以,打麻将通宵达旦是常事,但第二天很少有人抱怨自己又加了一个夜班。
 
打麻将的人从不抱怨工作环境。可是,我们现在对生活和工作的环境有多挑剔,什么宿舍太吵,洗碗时油太多,上班太累。。。。。你有没有见过打麻将的人说,房子吊顶太矮,空调不够冷,桌子太脏的?
 
打麻将冬天捂着被子打,夏天光着膀子打;没桌子把纸箱子倒放,放上板子就是麻将桌,洗脸盆垫上报纸就是凳子,麻将打得照样热火朝天。这时候要来个人说请吃饭,四个人肯定说改天去。可是我们工作上能做到吗?做不到,但是打麻将我们做到了。
 
还有一个神奇的地方,打麻将用手能摸出是什么牌。九万和六万,六条和九条,多小的差别,居然能摸出来。为什么?因为打麻将的人用心,用心的人学东西都能学进去,大不了慢一点,迟早会学会。
 
可是我们对工作呢,一遍一遍的出错。想想看,如果用一半的心感受工作会怎么样?还有学不会的吗?
 
最佩服的就是打麻将的人永远不抱怨被别人,只从自己身上找原因。输了钱的只会说:“自己手背”。上趟洗手间拼命洗手,回来后,在点儿好的人身上摸一把,再用别人的打火机点上一根烟,狠狠地抽一口,但是,永远不会抱怨别人。

php手册说了,再多的Gcd也只能返回一个

php手册里有一个函数叫做substr_count,是用来计算一个字符串在指定的字符串中出现的次数。

http://www.php.net/manual/en/function.substr-count.php
  1. <?php  
  2. $text = 'This is a test';  
  3. echo strlen($text); // 14  
  4.   
  5. echo substr_count($text'is'); // 2  
  6.   
  7. // the string is reduced to 's is a test', so it prints 1  
  8. echo substr_count($text'is', 3);  
  9.   
  10. // the text is reduced to 's i', so it prints 0  
  11. echo substr_count($text'is', 3, 3);  
  12.   
  13. // generates a warning because 5+10 > 14  
  14. echo substr_count($text'is', 5, 10);  
  15.   
  16.   
  17. // prints only 1, because it doesn't count overlapped substrings  
  18. $text2 = 'gcdgcdgcd'; 
  19. echo substr_count($text2, 'gcdgcd');  
  20. ?>  

最后一个例子很深刻的说明了,就算字符串重复再多,但是真要显示的话,也只显示一次,不重复计算。