分享:我的Reader订阅
应网友workout和其他热心读者的要求,我罗列一些自己觉得值得推荐的feed。用纯文字罗列如下,想找到以下的话可以通过Google。希望大家在此互相分享。
适合读者:广谱技术爱好者,国外互联网信息爱好者,用户行为和设计爱好者, 语言爱好者,阅读狂。
技术类
Coding horror
Joel on software
unified Python planet
业界信息
谷歌黑板报
Search Blog: Bing
Search
百度爱好者
silicon valley watcher
Google Blogscoped
Google Code Blog
月光博客
apple4us
古奥
望月的博客
Google Operating System
杰出个人博客
Paul Graham Essays
Pure Pleasure – lixiaolai.com
The noisy channel
李开复新浪博客
韩寒博客
the trump blog
Matt Cutts
Linus blog
Paul Buchheit (G ...
如何修改微软人体工学键盘的Zoom键
如果你不是订阅本站的用户,你很肯能可能是通过搜索引擎的魔力来到本文的。
微软的软件产品咱们暂且不谈,他们生产的键盘鼠标确实很不错。例如,经典的 microsoft natural ergonomic keyboard 4000 (见图)。著名Google工程师博主Matt Cutts用的就是这个(参考链接)。
可是每个入手该键盘的geek都会觉得,这个弱智的设计师把zoom键放在中间干嘛,应该用来当上下滚轮嘛。
无独有偶,该问题已经被先辈们解决,笔者只搜到了英文文章
为了让中文读者方便找到并使用,暂且将关键步骤翻译如下:
下载微软键盘驱动 http://www.microsoft.com/hardware/download/download.aspx?category=MK
找到command.xml文件,应该是在 C:\Program Files\Microsoft IntelliType Pro\
编辑command.xml文件(建议之前备份),替换所有 <C319 Type=”6″ Activator=”ZoomIn” /> 为<C319 Type= ...
分享:我是如何使用Google Reader的
相信不少读者都是通过Google Reader (貌似没有中文名) 看到本文的,而多数Google Reader的爱好者都是贪婪的。如果你像我一样,估计未读数量从来都是1000+。遇到强迫症就麻烦了。下面一个方法能让阅读变得有“轻重缓急”。
承认不是所有种子一样重要,有些更新你想立刻知道(例如某新闻类的博客:古奥),有些只是希望不要错过(例如某经典博客:Joe l on Software),还有一些可能只是娱乐用的(例如:煎蛋)
Reader是可以为种子建文件夹的,所有“重要而必读”的种子都可以放在一个文件夹里,文件夹的名称最好是用“_” 开头,这样排序的时候可以在最前面(见图解)
每当打开Google Reader的时候,先看重要的种子即可,其他的有时间再读。
笔者的Reader界面(献丑了)
Python程序员的进化
以前本站发布过一篇《程序员的进化》,以一种幽默的代码展现方式调侃了程序。下面这篇是关于Python程序员的。以阶乘为例,很有意思。
目录
新手程序员
第一年的刚学完Pascal的新手
第一年的刚学完C语言的新手
第一年刚学完SICP的新手
第一年刚学完Python的新手
爱偷懒的程序员
更懒的 Python 程序员
Python 专家
Python 黑客
专家级程序员
英语系的专家级程序员
Web 设计者
Unix 程序员
Windows 程序员
公司里的程序员
新手程序员
def factorial(x):
if x == 0:
return 1
else:
return x * ...
如何防范密码被破解
你会用什么样的算法来为你的用户保存密码?如果你还在用明码的话,那么一旦你的网站被hack了,那么你所有的用户口令都会被泄露了,这意味着,你的系统或是网站就此完蛋了。所以,我们需要通过一些不可逆的算法来保存用户的密码。比如:MD5, SHA1, SHA256, SHA512, SHA-3,等Hash算法。这些算法都是不可逆的。系统在验证用户的口令时,需要把Hash加密过后的口令与后面存放口令的数据库中的口令做比较,如果一致才算验证通过。
但你觉得这些算法好吗?我说的是:MD5, SHA1, SHA256, SHA512, SHA-3。如果你使用的是MD5算法来加密你的口令,如果你的口令长度只有小写字母再加上数字,假设口令的长度是6位,那么在目前一台比较新一点的PC机上,穷举所有的口令只需要40秒钟。而据我们了解,几乎有90%以上的用户只用小写字母和数字来组织其口令。对于6位长度的密码只需要最多40秒就可以破解了,这可能会吓到你。
如果你愿意花2000美金和一周的时间来构建一个CUDA,那么,你可以在你组建的这个集群中使用进行密码穷举运算,其速度是,1秒钟可以计算7亿个口令。对于目前实际 ...
一个浏览器市场占有量的图
下面这个网站是一个关于Web浏览器的市场占有量的图:
http://www.michaelvandaniker.com/labs/browserVisualization/
这个图是从2002年到2009年,也许未来还会更新,把鼠标移到每个弧上你可以看到那个浏览器的的占有量的百分比。如下图:
这个图本来没有什么,但制作者把其做成了一个圆弧形,这样,看下来就有些不一样了。你还没有看出来?让我们来对比一下这个图和FireFox的logo吧。
一个Windows 3.1的Web网站
啥也不说了,请大家围观下面这个网站吧。
http://www.michaelv.org/
打开这个网站,你会看到N年前DOS时代的Windows 3.1的界面,居然还可以扫雷,呵呵。真应了那句话——“只要是可以被Javascript实现的应用或程序,最终都会被Javascript所实现”。另,关于其它Web上更为疯狂的程序,可以查看本站的这篇文章。还有这个在线的IDE。下面是win3.1的截图:
各种流行的编程风格
在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗?
目录
散弹枪编程
撞大运编程
Cargo-Cult 编程
刻舟求剑编程
设计模式驱动型编程
侦探型编程
屠宰式编程
散弹枪编程
这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 false 变成 true!”,当然依然出错,于是我们的程序员会这样:“好吧,那我就注释掉整个方法吧”,或是其它更为随意的处理方式,直到最后让这个调用成功。或是被旁边的某个程序员指出一个正确的方法。
如果我们把一个正规的程序员和一个撞大运的程序员放在一起做结地,那么,那个正规的程序可以马上变得发疯起来,并且,可以把正规的程序员的智商降到最低。两个撞大运的程序员不应该在一起做结对编程,这是因为他们破坏性的才能会造成的伤害会比只有一个还差。
撞大运编程
这是一种比散弹枪编程要温和一些的编程方式,我相信这种方式可能会是大多数程序员都会使用的方式。这种编程方式经常出现于程序员并不确切知道 ...
最为奇怪的程序语言的特性
这些最为奇怪的程序语言的特性,来自stackoverflow.com,原贴在这里。我摘选了一些例子,的确是比较怪异,让我们一个一个来看看。
1、C语言中的数组
在C/C++中,a[10] 可以写成 10[a]
“Hello World”[i] 也可以写成 i[“Hello World”]
这样的特性是不是很怪异?如果你想知道为什么的话,你可以看看本站的这篇文章——《C语言的谜题》中的第12题。
2、在Javascript中
‘5’ + 3 的结果是:’53’
‘5’ – 3 的结果是:2
3、C/C++中的Trigraphs
int main() {
cout << "LOL??!";
}
上面的这段程序会输出: “LOL|”,这是因为 ??! 被转成了 | ,关于Trigraphs,下面有个表格:
??=
#
??(
[
...
“第六感装置”的惊人潜力
我们总是在于“现实生活”和“电脑的数字生活”中的差异,这两个世界难道不可以合并吗?美国MIT Media Lab(麻省理工学院媒体实验室)的天才学生普拉纳夫- (Prarnav Mistry),发明了一项结合实体世界和虚拟世界的科技,令人惊喜,感叹创造力的惊人。下面是视频。翻译还OK。
PI小数点位数的新纪录
PI小数点后的位数据个数据的纪录被刷新了,被一台PC机刷新的。新的纪录把PI的小点数后面的位数整到了近2.7万亿位,太BT了。下面的链接是本次经录的通告:
http://bellard.org/pi/pi2700e9/announce.html
这个通告宣称:
PI后的小数点位数被计算到了2,699,999,990,000位。
为了保存计算结果,一共花了,1137GB的硬盘空间。
本次计算使用了价值2000欧元左右的PC机,CPU是Core i7 CPU at 2.93 GHz ,内存6GB,5个1.5TB的希捷硬盘。
操作系统使用的是Linux 64 bit Red Hat Fedora 10 distribution,7.5TB的硬盘被做成了RAID-0阵列,使用了ext4文件系统。
整个计算时间花了131天(4个半月),其中,103天用于计算PI的二进制结果,13天用于验证二进制结果,花了12天把二进制转成十进制,最后花了3天再验证了转换。
...
CPU的性价比
下面这个网站是关于CPU的性价比的,其中的性能数据来源于cpubenchmark.net,而价格数据来源于:newegg.com。
http://paulisageek.com/compare/cpu/
于是,得出了目前性价比最差的是:Intel Xeon X5570 @ 2.93GHz,最好的是:AMD Phenom 9850 Quad-Core,下面是一个性价比表格。
CPU类型
性能
价值
性价比
AMD Phenom 9850 Quad-Core
2864
89.99
31.8
AMD Athlon II X4 620
3084
99.00
31.2
AMD Athlon II X3 425
2366
76.00
31.1
AMD Athlon 64 X2 Dual Core 6000+
1577
53.99
...
2010 = 1+2-(3-4-5)*6*7*8-9
这是一个数字游戏,使用123456789,并按照123456789的顺序,使用加减乘除以及括号,进行操作使其结果等于2010(原来的游戏是使其值为100,请看这里),那么会有多少种解法呢?下面是924种解法,其让我想起了“24点游戏”。
这里,如果让你写一段程序来生成所有的可能,你知道怎么写这段程序吗?
使用单个数
2010 = 1+2-(3-4-5)*6*7*8-9
2010 = 1-(2+(3-4-5)*6*7)*8+9
2010 = 1+2+(3+4*(5+6*7+8))*9
2010 = 1+2*(3*4*(5+6)-7)*8+9
2010 = 1*2*3*(4*(5*6+7*8)-9)
2010 = 1+2+(3+4*(5-6+7*8))*9
2010 = (1-2-3+4*(5/6+7*8))*9
2010 = (1+2+3*4)*(5-6+(7+8)*9)
2010 = 1+2+((3*(4+5)+6)*7-8)*9
2010 = (1+2+3)*(4*(5*6+7*8)-9)
2010 = 1+2+3*(4*(5+6 ...
程序命名的一些提示
选择一个正确的名字是编程中最重要的事。以前酷壳向大家推荐过两篇文章《编程命名中的7+1个提示》 和《编程中的命名设计那点事》,今天再向大家推荐一篇。一个正确的命名可以让你更容易地理解代码的程序,好的命名可以消除二义性,消除误解,并且说明真实的意图,甚至可以让你有清新的气息以让你更能吸引异性。;-)
方法,类和变量
正确的名字可以让你的程序顾名思义,下面是一些提示:
不要使用”ProcessData()“这样的命名
你如果在你的程序生涯中使用这样的函数名,那么这意味着你将是一个不合格的程序员而会被淘汰或解雇。请明确实际的功能。比如:ValidateUserLogin(验证用户登录) 或 EliminateDuplicateRequests(去除重复请求) 或 ComputeAverageAge(计算平均年龄),等等。
让命名来帮你设计程序
让我们假装有这么一条规则是——“任何的函数是有输入/输出的”,那么,你需要思考的是所有的把input变成ouptut的步骤,然后,你可以选择一个简短的句了来说明你的这段程序,然后,把这个短句再精练 ...
google的免费dns服务器
google推出了自己的免费dns服务器,以供公众使用。服务器地址是:
dns1: 8.8.8.8
dns2: 8.8.4.4
我在我的机器上测试了一下:
$ host -a g.cn 8.8.8.8
Trying “g.cn”
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33253
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;g.cn. IN ANY
;; ANSWER SECTION:
g.cn. 300 IN A 72.14.203.160
g.cn. 259200 IN NS ns3.google.com.
g.cn. 10800 IN MX 10 ...
推荐几个镜像站点
搜狐的:http://mirrors.sohu.com
网易的:http://mirrors.163.com
上海交通大学FTP:http://202.38.97.230
如果你是教育网的用户,上海交通大学FTP访问速度非常的快。
:)
粉丝眼中的操作系统
在发布完《程序员眼中的编程语言》一文后,发现网上还有一个关于操作系统的。如下所示。
图片的横轴是三大操作系统。
纵轴是各操作系统的粉丝和信徒。
中间的各个小图片则是,粉丝眼中的操作系统的形象。
关于操作系统,还有这一张图也很有意思。
程序员眼中的编程语言
下图是一个搞笑的图片——程序员眼中的编程语言。
图片的横轴是编程语言。
纵轴是各语言的程序员、粉丝、信徒。
中间的各个小图片则是,粉丝眼中的编程语言的形象。
比如说,
第一行第一列,是Java程序员看Java语言的样子,一幢现代化的大厦。
第一行第二列,是Java程序员看C语言,一个年老过时的骨灰级老头。
当然,C程序员看Java语言也比较搞,见第二行第一列。呵呵。
其它的大家自己看吧。还有另外一个关于操作系统的《粉丝眼中的操作系统》
C语言的演变史
1972 – C语言的先驱——B语言,被贝尔实验室开发。B语言是一个很快速的,容易维护的,而且对于从系统到应用开发是很好用的。设计这门语言的整个团队被马上解雇了,因为他们干了一件和电话通讯不相干的事情。最后这个项目转给了 Dennis Ritchie。他把这个语言变得不容易理解,很难维护,而且,只能用于系统方面的编程。而且,他还设计了一个指针系统,保让每一个程序都超过500行,并可以使用操作系统的指针。
1982 – 大家发现有97% 的C程序调用产生了“缓冲区溢出”问题。于是,C 程序员们开始意识到,就算是不必要也必需要初始化变量。然而,强制性的变量初始化这个明智的决定,很难影响了当时已经写成了的97%的C程序,所以结果什么也没有发生。
1984 – 操作系统出现了“错误指针”的问题数量开始戏剧性地增涨。
1985 – 一系列的让C语言有面向对象能力的解决方法出现了,一个叫“C With Classes”正准备商业化。然而,大家觉得名字“C With Classes”太清楚和容易被理解了,所以,最终的商业版本叫做—— C++。
1986 – C语 ...