2011年8月13日星期六

Windows IIS日志文件分析程序

  Windows Server具有事件日志记录的功能,其IIS日志文件里记录了包括下列信息:谁访问了您的站点,访问者查看了哪些内容等等。通过定期检查这些日志文件,网站管理员可以检测到服务器或站点的哪些方面易受攻击或存在其他安全隐患。

  不过,目前的日志分析工具并不是很完善,有些功能并不具备,特别是针对某个URL地址进行攻击的分析并不多,下面是一个VB Script程序,保存为VBS程序后可以在服务器上运行,用于分析和检测IIS日志里针对某个URL地址进行攻击的IP地址。

'代码开始
targeturl = "/archives/2761.html"  '受攻击网站的URL地址。
logfilepath = "C:LogFilesW3SVCex110813.log"  '受攻击网站的日志路径。

 

On Error Resume Next
Set fileobj = CreateObject("scripting.filesystemobject")
Set fileobj2 = CreateObject("scripting.filesystemobject")
Set myfile = fileobj2.opentextfile(logfilepath, 1, False)
 
Do While myfile.atendofstream <> True
myline = myfile.readline()
myline2 = Split(myline, " ")
newip = myline2(9)
myurl = myline2(5)
If targeturl = myurl Then
      writelog newip
End If
Loop

myfile.Close
Set fileobj2 = Nothing
Msgbox "结束."

Sub writelog(errmes)
ipfilename = "blockip.txt"
Set logfile = fileobj.opentextfile(ipfilename, 8, True)
logfile.writeline errmes
logfile.Close
Set logfile = Nothing
End Sub
'代码结束
 

IIS日志

  分析出来的IP如果出现异常,可以通过程序,将其批量添加到IIS的屏蔽IP列表里,下面是网上找到的一段VBScript代码,将其改名为vbs后,把上面那段程序的IP导入,即可批量屏蔽攻击者的IP地址。

'代码开始
'/*=========================================================================
' * Intro VBScript使用ADSI为IIS批量添加屏蔽或允许访问的IP
' * FileName VBScript-ADSI-IIS-Add-Deny-Grant-IP-Change-MetaBase.xml.vbs
' *==========================================================================*/
'AddDenyIP2All "192.168.1.106,255.255.255.0"
'AddDenyIP "123456","127.0.0.1"
'AddDenyIP2All "14.113.226.116"

 

'添加要屏蔽的IP或一组计算机,到一个指定站点上
Sub AddDenyIP(strWebNo, strDenyIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = True
IPList = MyIPSec.IPDeny
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strDenyIp
MyIPSec.IPDeny = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加要屏蔽的IP或一组计算机,到IIS公共配置,以应用到所有站点
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点
Sub AddDenyIP2All(strDenyIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = True
IPList = MyIPSec.IPDeny
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strDenyIp
MyIPSec.IPDeny = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加允许的IP或一组计算机,到一个指定站点上
Sub AddGrantIP(strWebNo, strGrantIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = False
IPList = MyIPSec.IPGrant
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strGrantIp
MyIPSec.IPGrant = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'添加允许的IP或一组计算机,到IIS公共配置,以应用到所有站点
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点
Sub AddGrantIP2All(strGrantIp)
On Error Resume Next
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
MyIPSec.GrantByDefault = False
IPList = MyIPSec.IPGrant
i = UBound(IPList) + 1
ReDim Preserve IPList(i)
IPList(i) = strGrantIp
MyIPSec.IPGrant = IPList
SecObj.IPSecurity = MyIPSec
SecObj.Setinfo
End Sub
'显示IIS公共配置里禁止访问的IP
Sub ListDenyIP()
Set SecObj = GetObject("IIS://LocalHost/W3SVC")
Set MyIPSec = SecObj.IPSecurity
IPList = MyIPSec.IPDeny 'IPGrant/IPDeny
WScript.Echo Join(IPList, vbCrLf)
' For i = 0 To UBound(IPList)
' WScript.Echo i + 1 & "-->" & IPList(i)
' Next
End Sub
 

智能手机管理软件进入红海

  在中国,一个新产品出现后最好的选择就是去抄它,抄得比它更好更本地化,再集合自身已有的用户、流量、资源优势一举奠定位置。如果是出现一种新趋势,最好的选择就是思考怎样从中找准自己的价值,一个新趋势的成功不是一两家公司能决定的,这也就是之前在某社区说的一切从小处着手,不要动不动就想做平台、做巨头,概念越大可能死起来越快。

  出版行业有人写书,有出版社卖书号,有编辑负责编校,有印刷厂负责印刷,有物流负责配送,有经销商负责销售。一个完整的产业链能够让上下游获利,而智能手机正是这样一个新兴的大趋势,看看周围有多少抛弃诺基亚投入HTC怀抱的朋友,未来两三年智能手机将会继续完成由上至下的普及,而运行在PC的智能手机管理软件就是备受看重的一环。

  这一类软件存的价值是:智能手机的性能配备、输入与使用、网络连接稳定性与性价比、资源获取便利性仍然与PC有着较大差距。例如我希望在手机上获取一段视频,可能会遇到的问题包括小尺寸操作麻烦,连接速度太慢且价格昂贵,下载完成后才发现播放器不支持这一格式,更好的选择是从PC搜索、下载、转码然后通过数据线传输,这样的过程同样适用于应用程序、图片、音乐的获取。另一个可以佐证的例子是,多个移动应用开发者的数据显示用户活跃度在每天的晚间大幅增加,做完用户调研后发现,除了下班空闲时间更多等因素外,最重要的因素居然是因为家里的WIFI更快更便宜。

  这些现象说明智能手机短期内不可能成为一个完整的独立平台,内容获取、资料管理等多方面都需要依赖PC,这时候PC端的智能手机管理软件就应运而生。目前主流的智能手机平台包括苹果的iOS以及Google领衔的Android,Android平台已经成为全球范围内增速最快的智能手机平台。Android手机管理软件不得不提豌豆荚,这是我去年买第一部Android手机后曾经痴迷两个月的软件,虽然之前已经有了91手机助手,但广告繁多且黑暗绯闻众多,豌豆荚界面有点小清新,各种功能做得颇有条理,孚一出现便有一丝王霸之气。

智能手机管理软件进入红海

  回头看看今天,市场上同类产品不下五款,就连腾讯都推出了同类产品,而且产品间功能并无实质差异。尽管豌豆荚已经拿了第二轮投资,但反倒是变得默默无闻了,一个纯手机管理器无法支撑一家公司,要么做矩阵要么另求出路,豌豆荚不像小米有那么完整的布局,同宗的点心OS也并不面向通用市场。豌豆荚也侧面印证了其它Android管理软件的处境,不能快速找出突围方法,产品都是无差异的软件、资料、应用管理,稍微有一点创意也会迅速被模仿,而巨头的加入更是他们无法摆脱的噩梦。

  而iOS平台的状况更糟,由于苹果是更封闭的产品体系,有自己的iTunes给用户管理设备,用户缺少对第三方管理软件的刚需。传统的越狱路线只能覆盖少部分用户,而以同步助手为代表的模拟iTunes派最终无法脱离苹果的生态链,苹果一发威他们就可能灰飞烟灭,这种行为还涉及到未知的法律风险。

  更大的风险是,智能手机或移动设备用户对于PC的依赖会越来越小,操作系统和越来越多的应用程序都致力于给用户提供更多的选择,看视频、下载资料都可以直接在手机上完成,我已经越来越少使用手机与iPad的数据线了,而更多的WIFI热点、更廉价的资费在未来都是可以期待的,PC端的管理软件注定只是一个过渡产物,终究会在发展车轮的碾压下消失。

  来源:XJP投稿,原文链接

2011年8月11日星期四

关于编程,大学没有传授的十件事

  笔者依然记得当年完成学业时,深信自己已经准备好进入任何一家软件公司,并开始成为一个顶级的开发人员。显然,开始工作后没多久,笔者就意识到,还有很多事是我所不了解的。

  在不断吸取经验的同时,笔者一直在努力学习那些我从来没有学过的,但却是成为优秀的开发人员所应了解的基本知识。以下是笔者希望自己能在学校就学到的十件事。

编程

  1. 我们总是错的

  开发人员有着相当大的自我意识,包含了一些其他的非技术性缺陷,这也正是为什么我们很难发现我们做错了什么。我看到过很多无休止的设计讨论,开发人员不断地发表自己的想法……呵呵!猜猜怎样……我们都错了,唯一的区别就是我们犯错的离谱程度不同。

  理解并接受这个事实非常重要,我们只有这样做了,才能敞开心胸去听听别人的意见,采用他们的想法,来得出一个更好的解决办法。

  2. 事情若有可能出错,就一定会出错

  也就是说“希望驱动开发(hope driven development)”,如果你对于某些事并不确定,如果你发现自己使用了“应该”这个词,那你就麻烦了。

  而这只有一个解决方案,尽己所能去保证它不会出错,这可能意味着你需要编写一个测试、调试并验证需求……

  3. 所有的代码都烂

  在我抱怨那些我碰到过的代码十年之久后,我得出了一个精辟的结论,所有的(包括我自己写的)代码,都烂。当然,烂还是有等级之分的,但即便是我见过写得最好的代码,也是难以读懂的。

  这并不意味着把你的代码写得更好是没有意义的,恰恰相反,最好和最坏的代码还是有天壤之别的。

  4. 错误(Bug)总会存在

  永远存在!问题只在于要发现它困难与否。

  5. 客户最大

  许多客户并不在乎你在方案中使用了哪些技术,应用程序需不需要做更多的事……或通俗上说,你是否使用了好的实践方案。

  也因为我可以想象,要是我只说了前面那一段,我会收到多少恶评,让我说得更清楚些……我想说的是,我们永远不应该忘记客户的立场,有时候,开发人员为了最佳实践而在项目工程中过度坚持采用(某些)技术,但要记住,若这些技术无法给客户带来价值,那就放弃吧!

  6. 纸上谈兵是行不通的

  我曾认为,我可以在前期就把我的整个设计置于纸上,然后只要将缺漏处填上就好,但这样根本行不通。

  软件开发是复杂的,若不亲手去碰碰看,很难看到所有的实际层面以及它们之间的关系。因此,在前期保持规划与设计是很有用的,但不要过度坚持,也不要把设计图表当作合约固守。

  7. 少即是多

  或者,你可能知道更好的说法是:“Keep it simple, stupid!”(保持简单,KISS设计原则)。所以,如果没有必要的就舍弃吧!因为要记住:“事情若有可能出错,就一定会出错。”

  8. 编写代码只是我们所做工作的20%而已

  请准备好,花80%的时间用于思考、调试、测试、开会、谈话……而所有的其他活动都是非常重要的,所以若要成为一个优秀的软件开发人员,你必须培养广泛而全面的技巧(Skill),而不仅仅是技术(Technical)。

  9. 客户永远不知道他/她想要的是什么

  客户若有需求,或是想法,但是他们不知道详细情况……软件开发要做的工作就是,发现细节并去除所有的不确定性,将这些需求转换成客户想要一个应用程序。

  10. 已经有人做过了

  所以不要再重新发明轮子,用谷歌找找看,或者更好的方法是,请教你的同事,很多时候他们可能都已经做了相同、或非常类似的事情。

  英文原文:10 things they never teach in college about programming

  中文翻译:伯乐在线

Twitter支持上传图片功能

  Twitter官方微博中称,已经全面推出新版Twitter页面,旧版Twitter页面下线,用户将无法再使用旧版页面。新版中,用户可以使用图片上传功能,上传用户本地的图片到Twitter里。

  用户可以在他们的个人状态更新框的最左侧找到一个相机图标,用户可以点击该图标进行图片上传。用户可以从自己的桌面中上传不超过3MB的图片,然后相关图片信息将会嵌入到用户的Twitter状态中。如果用户发现传错了图片,可以直接点击“X”按钮来删除该图片。

  在用户的Timeline里,图片会显示一条以“pic.twitter.com”开头的链接来表示,所有通过Twitter上传的图片都将交由图片共享网站Photobucket托管,用户点击后会查看到图片信息,目前手机上好像可以正常访问Twitter发的图片。

Twitter支持上传图片功能

  稍后,Twitter会进一步增强这个图片上传功能,包括支持iPhone摄像头直接发布微博图片。

  总的来看,Twitter正在向“富媒体”微博方向转变,今天Twitter支持发图片,明天可能就支持发Youtube视频,之后再支持个投票、音乐什么的,Twitter就变成新浪微博了。

2011年8月10日星期三

百度说吧正式关闭

  昨日,百度正式发布公告,宣布关闭百度“说吧”的发布入口,并将于本月22日停止“说吧”所有服务,并要求用户在此期间备份个人数据,上线不到一年的“百度说吧”就此宣布失败。

  公告内容称:“因公司业务调整,说吧即日起关闭发布入口, 并将于8月22日起停止所有说吧服务,请在此期间备份您的个人数据。由此给您带来的不便,还请谅解。同时也欢迎您通过贴吧、知道等产品享受更多的百度社区服务。”

百度说吧正式关闭

  百度说吧是在2010年9月16日上线,定位是“实名社交平台”,用户账号需与手机号码绑定,并且需要用户输入身份证信息,身份证系统还连接了公安系统的中国居民身份证的数据库,用户输入的身份证号码必须和姓名完全对应,才能通过认证,是中国实现“实名制”的一个急先锋。

身份证

  对这种实名制,我一开始就表示了强烈的质疑

  一个简简单单,并非生活必需的微博,注册居然还要身份证号码和中文姓名,用户在注册的时候不得不考虑一下风险得失,使用这个微博能给自己带来什么,自己为此将失去什么。

  实名制本身也是一个双刃剑,本来网络就是一个虚拟的环境,在这么严格的实名认证下,用户将不能畅所欲言,这显然不利于信息的传播和分享,并且,百度通过“说吧”建立起来的实名用户资料也存在着巨大的安全隐患,如果百度被黑导致用户用户的身份证信息泄漏,这责任谁来负责,如果有人使用这些身份证和姓名去办理信用卡或其他违法犯罪的事情,由此个人遭受的损失由谁来负责,这中间的争议由谁来监管,难道百度真以为自己可以承担公安机关的相关责任和义务?并具有相关的公信力?

  后来的发展果然如此,百度说吧的实名制引来众多质疑,百度说吧被迫于2011年4月16日进行了改版,放弃了包含身份证和头像认证的强制实名制度,但已经为时已晚,该产品已经错失了发展的良机,无法对新浪微博及腾讯微博产生威胁。

  事实证明,强制实名认证不符合中国国情,在中国根本不可行,中国不具备美国Facebook那样的运营环境,试图通过百度说吧打造中国版的Facebook显然只是一场不切实际的梦。

  为什么中国不具备美国Facebook那样的运营环境呢?在美国的互联网,你无论说什么话,都不会进监狱,每个用户的发言都会受到美国宪法第一修正案的保护,所以美国实名制的Facebook是靠谱的。而中国不具备这种条件,匿名发消息都可能被“跨省”,更别说主动提供身份证和个人信息了。

  百度做为中国最大的搜索引擎,和世界最大的搜索引擎Google一样,不擅长做社交网络,其社交产品鲜有成功案例。Google早先搞的Google Wave、Google Buzz、Orkut等社交产品,要么已经失败,要么就是不死不活的状态,这也刺激了Google花大力气推广其最新社交产品“Google+”。百度在这点上也学习了Google,同样也在社交网络上栽了跟头。

  既然搜索引擎都不懂社交网络,建议百度还是采用“收购”的方式进军社交网络吧。

2011年8月8日星期一

移动互联网的入口之争

  入口是指你最常寻找信息、解决问题的方式,搜索引擎是互联网最大的入口,网址导航提供与搜索引擎不同价值的入口。QQ是一个中国互联网的怪胎巨鳄,拥有最完整、最真实的社交网络,但是因为它没有广泛输出价值所以现在还不算入口,浏览器作为用户访问互联网的重要工具也成为入口,而操作系统则是整个链条中最大的入口。

  用户从入口找到各种充满想象的信息与解决方案,获得用户认可的入口有机会成长为这个行业的巨头。搜索引擎与网址导航向用户输出价值所以获得了成功,QQ向自己的产品线输出了大量资源与用户获得了成功,微软通过Windows系统这个最大的入口获得了在办公软件与商用领域的成功。

  得入口者得天下,不断有人做搜索引擎、网址导航、浏览器,背后隐藏着对用户使用入口的明争暗斗,而Google甚至倾力打造自己的操作系统,降低入口风险的最好办法就是让自己成为入口。一场移动互联网入口之争正在展开,这是一个堪比传统互联网的新兴市场,巨大的机遇背后同样也掩藏着无数双手。

移动互联网的入口之争

  操作系统作为移动互联网生态中不可或缺的部分,苹果的iOS、intel主导的Meego、Google主导的Android、微软主导的Windows Phone都是新一轮入口之争的重要参与者。而Android的开源特性也提供了一些新机会,小米、阿里云、点心这样的第三方开发商都在开发属于自己的定制版Android系统,移动定制的oPhone与联通定制的沃Phone也属于这种类型。

  Android提供的底层支持可以让他们更专注在体验与功能改进,数量众多的应用让用户接受度更高,而超过千万的国内Android终端则是第三方ROM的生存沃壤,只要你能够提供更好的体验就能吸引用户。未来腾讯、百度这些互联网公司都可能加入这一战团,开发自己的定制OS可以捆绑优秀服务,甚至像小米一样推出自有品牌的移动终端。

  传统的浏览器与搜索引擎仍然是重要的入口,但是由于移动互联网的各种应用分散了用户的注意力,所以受到的关注要远远低于传统互联网。国内叫得出名号的手机浏览器有UCWEB、QQ手机浏览器、百度手机浏览器、傲游浏览器、3G浏览器,各种不知名的小浏览器产品就更多了,它们都期望从移动互联网浪潮中分一杯羹。而移动搜索仍然是百度、Google等传统搜索占大头,他们也各自推出了针对移动设备的搜索产品,有效利用了移动设备的各种特性。

  应用程序是与移动互联网、智能终端密不可分的重要一环,应用程序的受欢迎程度已经远远超过传统的简单应用,我可以玩游戏、找美食、买东西、拍照片,设备与系统都是舞台,而应用程序就是台上唱戏的重要主角。伴随着应用程序的快速流行,开始出现各种形式的第三方应用商店或者应用程序推荐,人工整理优秀的应用程序提供给用户,成为移动互联网不可忽视的重要入口,不过目前国内应用程序商店太多太杂,推荐的应用大多品质良莠不齐。

  平台争的是用户,拼的是资源、人才、体验,最终还是得用户开口说话,用心改进产品为用户考虑才是正道。倘若胜了便能有五六年安生日子,如果输了便可以转换跑道成为整个平台的参与者,善用入口为用户提供服务。

  来源:XJP投稿,原文链接

Google如何设定目标与衡量成功

  编者按:原文作者多恩·道奇(Don Dodge)是Google帮助开发人员在其平台和技术上构建新应用的开发者代言人。在加入Google之前,多恩是微软新兴事业部业务开发主管。他同时也是一位创业老兵,是如下5家软件创业公司的领导团队成员:Forte Software、AltaVista、Napster、Bowstreet 和 Groove Networks。(以下是全文)

  Google往往设定不可能实现的目标……然后去实现它们。解决这些不可能完成的目标的战斗心态,是早已灌输进Google每个团队中的企业文化的一部分。一些战斗难题的答案并不明显。这就需要你来发掘解决方案,而不是仅仅去优化那些现有的东西。Google的每个团队的每个季度都要设定未来九十天内的目标,叫做 OKRs(目标和主要结果)。大多数大型企业都会设定年度目标,计划一年内将一些指标提高或增加几个百分点,然后每年进行一次绩效衡量。在Google,一年相当于十年,年度目标是不够的,他们会设定季度目标,设定不可能实现的季度目标,然后搞清楚如何实现它们。每个季度都要进行一次绩效衡量,然后对突出成就进行奖励。

  OKRs 是指目标与主要结果。我曾经提交过第一个季度的OKRs,里面有我认为积极但依然是可实现的目标。然而这还不够。我的经理解释说我们需要设定看似不可能完全实现的远大目标。嗯……我回答“这仅仅是90天的目标,我们明明可以设定合理准确的目标,为什么还要设定不切实际的目标呢?”因为如果目标太保守就一定不能实现惊人的结果。我们需要惊人的结果,我们要搞定不可能实现的东西。

  (编注:“OKRs”应该是 “one objective and three measurable key results”的缩写,意指“一个目标,三个重要的衡量指标”。)

Google如何设定目标与衡量成功

  失败不是一种选择 —— 不久前我写过一篇关于“失败不是一种选择”的文化文章,讲述了设定保守的人们当然能够实现的目标,这实际上限制了他们自己,此种文化是多么地错误。因为如果他们一旦失败就会被开除。冒大风险,追求创新,然后努力实现那些不可能的目标,这种情况不会发生在那样的公司里。在那篇文章中我讨论了初创企业对 “不能失败”完全不同的定义。初创企业指愿意尝试5或10种甚至是20种方法,直到找到有效方法的公司。他们不成功不会罢休。Google的文化有点像托马斯·爱迪生的方法,意思是“我没有失败,我已经找到了很多不能成功的方法,现在我离成功更近了。”

  实现65%的不可能的目标胜过100%地实现可能的目标 —— 设定不可能的目标,并实现一部分与安全路线相比是截然不同的目标。有时你可以在一个季度内就实现了不可能实现的目标,但是即使你没实现,也是在很快实现该目标的快速干道上。每季度对业绩的测量,让中期调整得以进行,并可以为下个季度设立更高目标。

  对成功的奖励 —— 对实现不可能实现的目标进行奖励是很重要的。就好像你期待有一种计算法则可以用各种乘数来计算动力的奖金。Google之所以吸引众多业内最优秀人才,原因有很多,最重要的原因是他们为人们实现不可能实现的目标提供资源与支持。金钱奖励确实重要,但是它们却不是主要动力。与世界上最出色的人才共事及实现伟大的目标才是终极奖励。

  拿体育界来类比,你认为佩顿·曼宁或科比·布莱恩特是受金钱所驱使吗?不,他们几年前赚的钱比他们可能要花的都多。他们受成为世界最优秀者的愿望所驱动。这种愿望与动力远比大笔的金钱更有力量。对于Google来说也是如此。

  初创企业家受类似愿望驱使,实现不可能完成的事,从“无”当中创造出一些东西(To create something from nothing),吸引最优秀的团队,并且创造不同。从很多方面来说,Google还是一个初创企业,其创始人每天都在努力实现不可能。每个公司都有一个设立目标、衡量成功和计算奖金的流程。也不是说Google的流程更加出色……真正不同的是心态和文化。身处顶级成功人士之中,你可以感受到一种能量力场。这会使你感到兴奋,激发你实现比你以为可能的更多的目标。这种感觉很好!

  英文原文:How Google sets goals and measures success

  中文翻译:伯乐在线