开发者 Marc Bevand 在 Hackernews 发了一篇短帖,简要解释了 Windows 运行速度为何比其它系统慢。随后,一位声称参与 Windows NT 内核开发的微软员工进行了回复,从公司内部管理和人才流失两个方面进行了解释。但由于某种原因,这篇回复被删除了。
Marc Bevand 认为此回复很有价值,在获得该员工的许可后,他在个人博客发表了这篇回复。该员工认为,从许多方面来说,Windows 比其它系统慢,而且差距还在加大。
我们偶尔会看到一些天真的人试图去改善问题。这些人几乎总是失败。我们能够改善系统性能而且去做的时候,是因为特别情况,那些有能力分配资源的人相信这会影响到商业目标,但是这种工作是西西弗斯式的。在系统级的性能改进上,没有正式或非正式的项目。我们开始关心安全的时候,是因为 SP3 之前的 Windows XP 对自身生意是一种生存上的威胁。我们的低性能对于自身生意没有生存上的威胁。
无论是项目主管、测试人员还是产品经理,对于外部补丁都是公开的敌对态度。他们没有动力去接受来自外部的一些变革,“你永远能找到理由说‘不’,你很少有动力去说‘是’”。另外,员工们很少有动力去寻求改变,只有做出重大的改进,才能够获得领导关心或者有升职的可能,“增量改进只能让人们厌烦,而且对你的职位不利。” 因此,员工们在经过一段时间后,都学会了按部就班工作,不再去想着创新了。
除了管理上的原因,另一个原因是公司很难留住人才,“Google 和其它大公司不断挖走我们最好、最有经验的开发者,而我们雇佣了刚出校门的年轻人来替代他们”。 这些人通常很聪明,但是他们不了解系统的具体细节,更重要的是,对于那些已经在运作的东西,他们不想做出任何改变。当他们想要改善系统的时候,更倾向于增加新东西而不是改善已有的东西,结果是许多旧功能无法得到改进。
综合起来,这位员工认为,微软并不缺乏真正一流的开发者,而且 NT 内核在许多方面都比 Linux 要好,但是这些人不断退休,或者去了其它公司,而且很少有人能够代替他们。“我们用来凑人数的是那些朝九晚五有孩子的人、急着取悦人的 H-1B 持证者,以及被 Google 抛弃的人。偶尔,我们能够召来能人,就像是犯了个错,但是这并不够。还在思考我们为什么落后?腐败已经进驻了。”
该员工的回复引起了非常多的关注,以至于他自己有些担忧。于是,他联系了 Marc Bevand,并且发表了一篇声明,以详细解释自己文章的各种失当之处。他表示,“所有这些事情已经超出控制了。我太严酷了,而且我并未想要将其当做某种大规模的揭秘,这只是一些抱怨。对于那些微软外部的人在政体研究上的胃口,我并不赞同。我应该更加深入地思考我的帖子。对于这份误导人的所谓内部印象,我希望做出道歉”。
或许该员工的抱怨过于主观,但是其提到的问题,其实已经有过报道,比如《名利场》曾有一篇文章,认为微软的管理体制扼杀了创新萌芽。在科技行业竞争日益激烈的时候,微软或许已经到了正视问题,做出激进改变的时刻了。
图片来自 Mashable
原文链接:爱范儿
360石晓虹:针对移动Apps的DDoS攻击将成重大威胁
(CSDN报道 子曰/文) 5月11日,在2013第八届中国互联网创业者大会现场,CSDN记者采访了360公司副总裁石晓虹博士。对话中石晓虹博士谈到了如何做网站安全检测和防御、360“库带计划”最新进展以及时下移动互联网领域面临的安全挑战等热点话题。
据了解,360通过在线的安全检测工具webscan.360.cn为站长们提供漏洞识别、安全报告及修复方案,以及 wangzhan.360.cn 360网站卫士提供漏洞防御措施,现在已经可以实现抵御1600万次DNS查询攻击、200G DDoS流量攻击、5万僵尸网络CC攻击、1000余种漏洞攻击行为。前者用户超过50万,有2万以上的站长通过360网站卫士来抵御漏洞和攻击。以上服务均免费提供。
360网站安全检测
360还为IDC厂商、云建站平台、建站软件、CDN服务商、DNS服务商、域名交易平台等站长服务平台开放API,帮助他们的产品接入360网站安全服务。
另外,由于大量的网站漏洞是源于开发者的开发技能、架构设计实力、历史累积等一系列深层原因,对此,石晓虹建议开发者要在观念上重视网站安全问题,并利用相关的源代码检测工具辅助开发,优化架构设计,尽量在源头防止安全事故的发生。
自上月网站系统漏洞悬赏项目“库带计划”上线以来,首月已收集到264个开源建站系统漏洞,并协助厂商修复了漏洞,涉及Discuz!、ShopEx、ECShop、PHPWind、PHPCMS、DEDECMS等客户量众多的知名建站系统。在首月收集的全部漏洞中,高危漏洞占35%、中危漏洞52.4%、低危漏洞12.6%。
“库带计划”首月收集的漏洞类型
石晓虹表示在360在收到漏洞提交后,会按照业界规范操作流程知悉相关厂商,“主流开源建站系统厂商回复还是很快的,会尽快发布相关漏洞补丁,但很多站长重视程度不够,还未能在第一时间做网站更新”。
随着移动Apps的普及,在谈到移动互联网安全形势时,石晓虹表示通过移动智能设备来发动对Apps的DDoS会越来越普遍,并成为一种新的威胁,尤其在手游、电商等竞争激烈的行业应用上。另外,移动互联网领域目前已初步形成黑色产业链,黑客通过刷机、应用市场、预装等多种方式窃取用户个人信息和钱财。据统计,360去年拦截到的伪装APP达到13万个,某些热门应用的盗版Apps数量甚至是正版的几十倍。
P.S. 我想说。。要备案才能用
老板我想辞职:因为小米100万元征集一张壁纸
时间:2013-05-10 17:18 作者:张宁
在上个月,罗永浩发微博一百万年薪招聘研发总监,在业界引起激烈讨论。移动互联网行业充满了生机和赚钱的机会。即使你不懂开发,不懂运营,甚至不懂什么是LBS或者积分墙,照样可以赚一大笔。今天,小米宣布了百万壁纸征集活动,6月3日即将开放提交入口。一张壁纸如何赚100万?以下是提交作品尺寸及要求:
- 需要提交锁屏壁纸和桌面壁纸,两者必须是一套。
- 锁屏壁纸尺寸为19201080,桌面壁纸尺寸为19202160。尺寸不合格的作品视为无效作品。
- 提交作品的格式必须为png或jpg。
- 题材内容不限,但不得上传黄赌毒色情暴力以及违反法律法规的不健康内容。
- 作者需要保留所有设计稿源文件,获奖后向主办方提供源文件及版权授权。
未来,这样一张昂贵的壁纸,在小米的商店中将如何定价?小米在怎样的背景下,作了这项活动?无论怎样,很多做美工的朋友在微博上发言,表示赞同,美工和设计人员的劳动成果得到了尊重。感兴趣的朋友可以关注小米的百万壁纸征集活动。(责编/张宁)
WordPress 3.5.1 for BAE
声明一下,这份移植版 WordPress 不是我修改的。。。我没这个本事。。。有问题别找我。。。我就更新了一个插件,加上了评论回复邮件通知功能而已。。。
WordPress for BAE 不使用插件实现评论回复邮件提醒功能
表示这是博主原创。。。转载请注明原文链接
该方法仅限在 BAE 版 WordPress 上使用
当然如果要在普通版本的 WordPress 上实现功能的话,请自行修改 wp_mail 那一行
找到你网站根目录下的 wp-comments-post.php ,在里面找这样一行代码1
$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
在前面加入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28if (!empty($comment_parent)) {
$get_comment_parent = get_comment($comment_parent);
$mail_subject=$comment->comment_author.' 回复了您的评论 - '.get_option('blogname');
$mail_message='
您在《'.$post->post_title.'》发表的评论内容:
'.
$get_comment_parent->comment_content.'
'.
'
由 '.$comment->comment_author.' 于 '.$comment->comment_date.' 回复您的评论内容:
'.
$comment->comment_content.'
'.
'
点击链接查看或回复:
'.
'['.get_comment_link($comment_id).']('.get_comment_link($comment_id).')
';
if ($comment->comment_author_email !== $get_comment_parent->comment_author_email) {
wp_mail($get_comment_parent->comment_author_email,$mail_subject,''.$mail_message);
}
}
保存,上传覆盖原文件即可
表示本博客已搬迁到 Baidu app engine
详解 JavaScript 中的 this(转载)
其实如果完全掌握了this的工作原理,自然就不会走进这些坑。来看下以下这些情况中的this分别会指向什么:
1.全局代码中的this
1 | alert(x);// 全局变量x值为2 |
全局范围内的this将会指向全局对象,在浏览器中即使window。
2.作为单纯的函数调用1
2
3
4
5function fooCoder(x) {
this.x = x;
}
fooCoder(2);
alert(x);// 全局变量x值为2
这里this指向了全局对象,即window。在严格模式中,则是undefined。
3.作为对象的方法调用1
2
3
4
5
6
7
8var name = "clever coder";
var person = {
name : "foocoder",
hello : function(sth){
console.log(this.name + " says " + sth);
}
}
person.hello("hello world");
输出 foocoder says hello world。this指向person对象,即当前对象。
4.作为构造函数1
new FooCoder();
函数内部的this指向新创建的对象。
5.内部函数1
2
3
4
5
6
7
8
9
10
11
12var name = "clever coder";
var person = {
name : "foocoder",
hello : function(sth){
var sayhello = function(sth) {
console.log(this.name + " says " + sth);
};
sayhello(
}
person.hello("hello world");//clever coder says hello world
在内部函数中,this没有按预想的绑定到外层函数对象上,而是绑定到了全局对象。这里普遍被认为是JavaScript语言的设计错误,因为没有人想让内部函数中的this指向全局对象。一般的处理方式是将this作为变量保存下来,一般约定为that或者self:
1 | var name = "clever coder"; |
6.使用call和apply设置this1
person.hello.call(person, "world");
apply和call类似,只是后面的参数是通过一个数组传入,而不是分开传入。两者的方法定义:1
call( thisArg [,arg1,arg2,… ] ); // 参数列表,arg1,arg2,...
1 | apply(thisArg [,argArray] ); // 参数数组,argArray |
两者都是将某个函数绑定到某个具体对象上使用,自然此时的this会被显式的设置为第一个参数。
简单地总结
简单地总结以上几点,可以发现,其实只有第六点是让人疑惑的。
其实就可以总结为以下几点:
当函数作为对象的方法调用时,this指向该对象。
当函数作为淡出函数调用时,this指向全局对象(严格模式时,为undefined)
构造函数中的this指向新创建的对象
嵌套函数中的this不会继承上层函数的this,如果需要,可以用一个变量保存上层函数的this。
再总结的简单点,如果在函数中使用了this,只有在该函数直接被某对象调用时,该this才指向该对象。
1 | obj.foocoder(); |
更进一步
我们可能经常会写这样的代码:1
$("#some-ele").click = obj.handler;
如果在handler中用了this,this会绑定在obj上么?显然不是,赋值以后,函数是在回调中执行的,this会绑定到$(“#some-div”)元素上。这就需要理解函数的执行环境。本文不打算长篇赘述函数的执行环境,可以参考《javascript高级程序设计》中对执行环境和作用域链的相关介绍。这里要指出的时,理解js函数的执行环境,会更好地理解this。
那我们如何能解决回调函数绑定的问题?ES5中引入了一个新的方法,1
2bind():
fun.bind(thisArg[, arg1[, arg2[, ...]]])
thisArg
当绑定函数被调用时,该参数会作为原函数运行时的this指向.当使用new 操作符调用绑定函数时,该参数无效.
1 | arg1, arg2, ... |
当绑定函数被调用时,这些参数加上绑定函数本身的参数会按照顺序作为原函数运行时的参数.
该方法创建一个新函数,称为绑定函数,绑定函数会以创建它时传入bind方法的第一个参数作为this,传入bind方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数.
显然bind方法可以很好地解决上述问题。1
2$("#some-ele").click(person.hello.bind(person));
//相应元素被点击时,输出foocoder says hello world
其实该方法也很容易模拟,我们看下Prototype.js中bind方法的源码:1
2
3
4
5
6
7Function.prototype.bind = function(){
var fn = this, args = Array.prototype.slice.call(arguments), object = args.shift();
return function(){
return fn.apply(object,
args.concat(Array.prototype.slice.call(arguments)));
};
};
明白了么?
相信看完全文以后,this不再是坑
原文作者:foocoder
Linux流量监控工具 - iftop (最全面的iftop教程)(转载)
在类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看网络状态可以使用netstat、nmap等工具。若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop。
一、iftop是什么?
iftop是类似于top的实时流量监控工具。
官方网站:http://www.ex-parrot.com/~pdw/iftop/
二、iftop有什么用?
iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等,详细的将会在后面的使用参数中说明。
三、安装iftop
安装方法1、**编译安装**
如果采用编译安装可以到iftop官网下载最新的源码包。
安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。
CentOS上安装所需依赖包:1
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel
Debian上安装所需依赖包:1
apt-get install flex byacc libpcap0.8 libncurses5
下载iftop1
2
3
4
5wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz
tar zxvf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make && make install
安装方法2:(懒人办法,最简单)
直接省略上面的步骤
CentOS系统:1
2
3yum install flex byacc libpcap ncurses ncurses-devel
wget ftp://fr2.rpmfind.net/linux/dag/redhat/el5/en/i386/dag/RPMS/iftop-0.17-1.el5.rf.i386.rpm
rpm -ivh iftop-0.17-1.el5.rf.i386.rpm
Debian系统 运行:1
apt-get install iftop
四、运行iftop
直接运行: iftop
效果如下图:
五、相关参数及说明
1、iftop界面相关说明
界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间的<_ _=”_”>这两个左右箭头,表示的是流量的方向。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量
2、iftop相关参数
常用的参数
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n使host信息默认直接都显示IP,如:# iftop -n
-N使端口信息默认直接都显示端口号,如: # iftop -N
-F显示特定网段的进出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b使流量图形条默认就显示;
-f这个暂时还不太会用,过滤计算包用的;
-P使host信息及端口信息默认就都显示;
-m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100M
进入iftop画面后的一些操作命令(注意大小写)
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序br> 按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
六、常见问题
1、make: yacc: Command not found
make: *** [grammar.c] Error 127
解决方法:apt-get install byacc / yum install byacc
2、configure: error: Curses! Foiled again!
(Can’t find a curses library supporting mvchgat.)
Consider installing ncurses.
解决方法:apt-get install libncurses5-dev / yum install ncurses-devel
PHP利用curl伪造IP和来路(转载)

效果如图
伪造的文件:1.php1
2
3
4
5
6
7
8
9<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/2.php");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8')); //构造IP
curl_setopt($ch, CURLOPT_REFERER, "http://www.xssxss.com/ "); //构造来路
curl_setopt($ch, CURLOPT_HEADER, 1);
$out = curl_exec($ch);
curl_close($ch);
?>
查看效果的脚本2.php1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<?php
function getClientIp() {
if (!empty($_SERVER["HTTP_CLIENT_IP"]))
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if (!empty($_SERVER["REMOTE_ADDR"]))
$ip = $_SERVER["REMOTE_ADDR"];
else
$ip = "err";
return $ip;
}
echo "IP: " . getClientIp() . "";
echo "referer: " . $_SERVER["HTTP_REFERER"];
?>
FBI密码挑战,你能解开吗?
时间:2013-05-06 15:00 作者:夏梦竹
最近几年,FBI官网都会推出一个新的密码破解挑战赛,据说是为了激发青少年对FBI工作的好奇心而设立。与以往不同的是,这次加入了代码。下面的这幅图就是今年的密码破译游戏,一起看看你能破解吗?
你能破解吗?
尽管破解了FBI也不会聘你做探员,但至少可以显摆一下各位精湛的大脑,不管怎样,大家试试吧。
想要了解更多关于恐怖分子、间谍和不法分子利用他们的通信类型密码和代码吗?请参阅“Analysis of Criminal Codes and Ciphers”,你也可以查看以往著名案件的”密码破解“法:A 400-Year History。
一起来回顾下过去精彩的密码破解案例:
在笔者看来还是蛮难的,反正我是看不懂,谁有本事来破解一下?如果你实在想不出答案,也没关系,笔者稍后会公布答案!
P.S. 本文转载,原文如此,我不是笔者。。。别问我答案。。。









