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

雅虎JavaScript架构师:网页开发技术安全优先

html5 越来越近了,HTML5可能给我们带来很大的改变,就象新的标签可以支持视频了。看看javascript的架构师能够做什么吧。原文来自http://www.cnbeta.com/articles/109538.htm

由于当前技术仍偏向功能强化为主要思维,指令码趋向庞杂的结果,容易产生更多安全漏洞,且失去快速因应攻击调整架构的灵活性。
身 为JavaScript网路技术重要推手的雅虎(Yahoo!)架构设计师Douglas Crockford表示,现行网页开发技术思维仍偏重多媒体功能或浏览效能的提升,未来应以安全为第一优先。 Crockford 现为Yahoo!资深JavaScript架构师,负责YUI(Yahoo! User Interface)的架构设计,并且担任ECMA JavaScript 2.0技术委员会成员,为JavaScript开发社群大师级人物,此次受邀来台参加OSDC(Open Source Developer's Conference Taiwan)进行专题演讲,向国内开发者介绍ECMA JavaScript的发展。

Crockford向媒体阐述网络技术发展时指出,当前的网络技术仍然不脱过去的思维,网页开发技术仍以功能强化、浏览网页效能提升为主,虽然强 化了网络开发的丰富性,但未将网络安全列为开发优先考虑因素的结果,致使网络安全事件层出不穷。

延续过去网络开发思维的结果,现今网络技 术强调强大的互动、多媒体功能,但也让一些攻击手法兴起,以XSS(Cross-Site Scripting)为例,由于内嵌多个不同来源的脚本,容易让黑客借指令集趁虚而入,窃取用户端计算机的数据。

虽然也有新的技术,如 Google推动的Caja,用以防范XSS跨站攻击手法,但整体技术发展方向仍是朝功能、效能提升前进。

以HTML 5技术为例,Crockford表示,虽然HTML5增加了许多功能,但让整个脚本变得更为庞大且复杂,容易产生漏洞遭到攻击;另外,支持存取使用者电 脑、手机的终端数据,将数据被窃的安全风险扩大至手机上,而过于庞大复杂的结果,不容易因应日新月异的攻击手法改变,长期而言易形成安全风险。

对 于当前浏览器业者形成速度竞赛,纷纷强化JavaScript引擎加速网页浏览速度,号称最快的浏览速度,他认为,浏览器加速网页浏览速度虽是好事,但这 样改善方式有限,只在5至10%的终端浏览器部份加速,若能同时改善服务器端,加速的效果更大。

对于制定中的新标准ECMA Script 5,他乐观预期未来将成为主要的网络开发标准,虽然Apple、Chrome还不明确,但包括IE、FireFox、Opera都倾向ECMA Script 5,今年应会看到新的浏览器应用。
--EOF--
HTML5已经被越来越多的浏览器所支持,IE还能挺多久?是否又会创造出什么新标准?从IE4开始,多少网页设计师为了兼容所有的浏览器而痛苦?以后又会怎么样?IE6还有这么多用户,怎么办?这一些都让人迷惘啊。HTML5来了,对于前端工程师的压力就要更大一点了。代码没写好,很可能就直接被人利用了。以前的XSS漏洞可能会被更加扩大、放大。还是需要多学一点安全了

Tags: html5, ecmascript, javascript, chrome, yahoo

机器管家

一般来说,讲机器人的往往到最后都会讲人机恋,当然那部《我,机器人》(i,robot)不太一样。机器人三守则是不会遗忘的事,被遗忘的嘛,那就是经典的《终结者》了。
《机器管家》这部片子挺老了,但是讲的故事有点感人,讲的是机器人成长的过程,和人的成长差不多,只是遇到的问题不一样。
当机器人越来越想成为人的时候,他不可避免的就是,时间对于他们来说是没有意义的。
内容大致如下:
马丁一家买来一个机器人当管家,可男主人马丁很快发现:这个名叫安德鲁的机器人,不仅有非凡的创造力,甚至还能表达情感。安德鲁一直称男主人的小女儿为 “小小姐”,并和她建立了深厚的感情;几十年过去了,安德鲁已经成为马丁家族的一员,在一个工程师的帮助下,他从内到外一点点的,几乎变成了一个真正的 人,安德鲁还发现自己陷入了爱情-——爱上了“小小姐“的孙女,外貌酷似“小小姐”的波西娅。这段机器人与人的科幻爱情将面临什麽样的考验?

事实上,这种爱情故事现在确实不多见。以前的人机恋都是男主人公恋上个女机器人。再来上一点女机器人为救爱人命怎么怎么样,偶尔有一部女主人爱上男机器人的确实很少。而且,确实可以算是跨度为二百年,爱上小小姐,爱上小小姐的孙女,并为之赴死。遗憾的是,直到最后也没有看到法庭宣判他可以成为人这个消息。他一直是想成为人,可到死也没有看到这个消息。其实他也算是想给自己的老婆一个名份吧。不想她有内疚?最后的护士机器人也不错,也有了人形了,是不是在暗示那位医生也会尝试和护士一起生活?

情节有点老套,但内容 和表演确实不错

Tags: 机器管家, robot, 机器人, 人机恋

在非IE浏览器中实现“灰阶化[1]”

原文:http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/

在非IE浏览器中实现“灰阶化[1]”

这个问题看似简单,实际上要付出很大的努力[2]。要的结果很简单:在所有非IE浏览器中模拟Internet Explorer浏览器的grayscale(灰度)滤镜。然而,它的解决方法并非你想得那么简单,这也让我着实大大地吃了一惊。

在 IE中,grayscale滤镜可以应用到任意一个元素中,它会很直观地将元素转变为灰度。可以使用下面 这行复杂且专有的CSS来实现grayscale滤镜。

JavaScript代码
  1. elem.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)';  

如上所示,在IE中实现这种效果简单是小菜一碟;然而,在其他的浏览器中,需要引起很大的关注。

需要有两件情况值得考虑:图片元素和非图片元素。“非图片”类元素实现十分简单:在当前文档中遍历每个元素,寻找类似“backgroundColor”和 “color”的色彩属性,将它的RGB颜色值转换为灰度值。有不少方法可以实现;注意我们这里不是说降低图片的饱和度;“灰阶化”很明显跟它不一样。

JavaScript代码
  1. // Desaturate:降低饱和度  
  2. function RGBtoDesat(r,g,b) {  
  3. var average = (r + g + b) / 3;  
  4. return {  
  5. r: average,  
  6. g: average,  
  7. b: average  
  8. };  
  9. }  
  10.    
  11. // Grayscale:灰阶化  
  12. function RGBtoGrayscale(r,g,b) {  
  13. var mono = parseInt( (0.2125 * r) + (0.7154 * g) + (0.0721 * b), 10 );  
  14. return {  
  15. r: mono,  
  16. g: mono,  
  17. b: mono  
  18. };  
  19. }  

因此,每个带颜色属性的元素要使用它来转为灰阶;初始颜色用来重置属性值。

我们的图片能否转为灰阶取决于两个因素;一是浏览器必须要支持HTML5 canvas元素和它getImageData方法,二是主机上的所有图片必须位于同一域名下;除此外,主机上的图片不能脱离getImageData方法而不管它是否支持[3]。Google Chrome浏览器和Safari(4以下版本)由于不支持getImageData,先不作讨论。其他的浏览器支持canvas元素,完全可以做到“灰阶化”图片。

实现这种方式是要“手工”遍历图片中的每一像素,并应用我们用来设置CSS 颜色属性的RGBtoGrayscale函数。真要这样做的话,浏览器绝对吃不消;除非有极其快速的Javascript引擎来承受大图片处理的压力。

鉴于上面提到的原因,因此在任一个元素需要“灰阶化”前,添加一个“预置”函数去运行显得尤为必要,这个函数可以使用零超时递归技术[4]来避免耗死浏览器。如果仅仅是小图片需要转换的话,不必使用“预置”函数,可以直接使用这种暴力转换。

为什么呢,这是为什么呢?

你肯定想知道在“灰阶化”会有哪些应用。那么,比如说:降低色彩以减少用户的视觉焦点,以此来减少用户对你网站上五颜六色东西的关注;比如说,光箱特效。像 vBulletin的论坛系统就使用了这种效果,它会你点击离开时,将页面变灰;然后会弹出确认框,这个确认框非很容易识别,因为它是页面中惟一的带色彩的东西。

“灰阶化”困扰我的真实原因是因为我很想知道是否有可能做到这个目的。我已经知道在IE浏览器里有这个滤镜,我还想看看在其他浏览器中能否模拟实现这种方便的特效。我也知道这种特效可能被认为已经过时了,但这并不重要;我仅仅是对实现它很感兴趣。

示例

我做了一个示例页面,上面有几个格斗士[5]的图片,功能已经在这篇文章中说过了。注意,在Safari(小于4)或才 Chrome(还有可能在Firefox老版本(V.2以前))不起作用;不要忘了它仅仅是一个试验。
http://james.padolsey.com/demos/grayscale/

使用方法

要对一个元素实现“灰阶化”需要调用 grayscale()函数,并将元素作为参数传递,比如:
JavaScript代码
  1. var el = document.getElementById( 'myEl' );  
  2. grayscale( el );  
  3. // 也可以传递一个DOM集合  
  4. // (这样所有的元素都会得到“灰度效果”)  
  5. grayscale( document.getElementsByTagName('div') );  
  6.  //也可以在jQuery对象集合中使用  
  7. grayscale( $('div') );  
若要重置元素(返回到原来的颜色状态)必须调用grayscale.reset(),并将需要重置的元素作为参数传递:
JavaScript代码
  1. grayscale.reset( el );  
  2. // reset()同样可以接受DOM对象或jQuery对象集合参数  
  3. grayscale.reset( $('div') );  
其中的prepare函数,上面已经讲过了,在有大图片要处理的情况下需要使用到,或者即使只是几个小图片。注意大图片需要有一会儿的时间去处理(一张 300×300的PNG格式图片在“预置”方式下需要耗费3秒钟的时间)。
JavaScript代码
  1. grayscale.prepare( document.getElementById('myEl') );  
  2. // 同样可以接受DOM对象或jQuery对象集合参数  
  3. grayscale.prepare( $('.gall_img') ); 

[完]

注:

[1]:灰阶化:原文grayscaling,意为“采取灰度标准”,即灰阶化,将图片由彩色转为灰度;
[2]原文为”This started out as a little experiment and eventually turned into quite an endeavor.“,可能存在翻译问题;
[3]原文为“externally hosted images cannot be passed into ‘getImageData’ regardless of whether it’s supported.”,翻译存疑;
[4]零超时递归技术:原文zero-timeout recursion technique,应为zero-time recursive technique;参见http://en.wikipedia.org/wiki/Recursion_(computer_science)
[5]格斗士:原文blood-thirsty hunters,嗜血的猎人

--EOF--
灰阶化可以用在414或者512,值得用用喽。。。

 

 

KESO:Google一次的能耗

好象这次KESO的《Google一次的能耗》引起了很多人的关注,特别是在QQ微勃上面,有人的转贴就是:不知道http://url.cn/0k4vVU消耗多少,硬件软件有重新设计过吗?|| 腾讯科技  keso炮轰人民网

KESO的原文不长,我这里稍转一下,三言二拍:Google一次的能耗

人民网上有一篇文章,说每次Google搜索的能耗,相当于100瓦灯泡工作一小时。其中充斥着大量的错误,既有原文的错误(原文在此),也有翻译的错误。

比如,翻译中说,“谷歌数据中心拥有近100万台服务器,每台服务器每小时消耗大约1000瓦的电量”。瓦特是功率,不是电量,电量我们一般用度 (千瓦时)来表示。再比如,“这个搜索引擎每小时产生近1000万个搜索结果”,实际上,早在2001年,Google每天的搜索请求量就超过了1亿次, 今天这 一数字早已超过10亿次(Twitter的日查询次数,包括各种客户端的请求,都高达6亿次)。

上面是明显的错误,其他错误还包括,按每台服务器功耗1000瓦的标准计算Google服务器的能耗,也是相当不靠谱的。普通PC服务器的功耗,一般在400-500瓦。Google的服务器、机房、电源、甚至冷却系统,都是自己设计生产的,按照Google公开的数据,Google服务器的电能转换效率是业界最高的。

而且,把全部服务器的能耗,平均到每次查询上,也非常不靠谱。Google每天要存储20PB的UGC数据(相当于20,000TB,或者 20,000,000GB),假设每块硬盘的容量是1TB(1000GB),那么用户每天产生的内容要写满2万块硬盘。在Google庞大的数据中心中, 有大量服务器实际上是存储服务器。

按照Google自己的计算,一次搜索查询的能耗,大约只相当于0.0003度(千瓦时),或者1千焦(1千瓦时=3600千焦),如果是100瓦的灯泡,这些能量只能点亮11秒钟。

写到这里,我觉得这种计算其实挺无聊的。Google当然会想尽办法节省能源,毕竟它的百万规模的服务器数量,在节能上哪怕非常微不足道的一点小进步,都意味着巨大的资金节省。能源账到底该怎么算,恐怕不是个简单的算术题。

节能是必要的,也是可能的,但搜索技术带来的巨大的社会进步和其他损耗的减少,是在上面的计算中完全看不到的。能源账到底该怎么算,恐怕不是个简单的算术题。

--EOF--

转载的文章嘛。不多点评,不过我是知道国内大多数的机房,其实有很多都在空转着。大量的电力、网络都被IDC消耗掉了。不过想想也很正常,承租机柜后如果没有业务,机柜怎么办?关掉?而且,即使你用的电源低于标准的400W,也没有减少他们应收的费用。更加让人郁闷的是,国内很多大型网站的老总都是这么认为的:能用钱解决的问题就不是问题(比如,服务器、带宽等)。因此,说google的时候,考虑一下自己才是重要的。

国内,好象就听说阿里有自己的机房,不知道他们在缴纳每年的电费时,是否也在考虑着要节约电力?要思考如何改进架构?至于我们这些P民,用着租来的、托管的机器,或许,想的是真的要少一点吧?

Tags: keso, google, 微勃, 微博, qq微博

重要的不是语言,是思想

标题这种话已经在被很多人所理解,现在大多数开发人员已经不再把语言当成障碍,而是把思想当成障碍,语言的跨度其实真的很容易解决,但思想不进步,你有着再好的语言又怎么样?即使你用的是所谓的自然语言(即平时生活中的语句),但只要你没有思想,没有逻辑,你又能写出什么样的程序?

以下内容来自老王参加的某大会的记录、摘要。我是看中其中的一小部分,觉得有感触。。原文在这里,点击进入

部分我认为不错的精华,或者说是我关注的。。。

1、课程:失败来临的征兆(讲师:Michael Nvgard)这一切正是Michael Nvgard先生演讲的主旨:意外的问题总是在不经意间发生,要注意把它们的影响限制在局部,避免拖累整个应用。比如说在SOA中集成若干个服务时,应该 设置好各个服务的Timeout,避免其中一个服务崩溃连带整个系统等待。

2、课程:Twitter的可伸缩性数据架构(讲师:Nick Kallen)

Nick Kallen介绍了Twitter在处理海量数据时的经验,其实总结出来就三条:分区,索引,复制。

着重介绍了Tweets,Timelines,Social Graphs,Search Indices四个基本功能的实现:

Tweets比较简单,就是分区,虽然可以使用id或者user_id来分区,不过目前Twitter使用的是按time分区。

Timelines相对复杂了一些,最开始采用的方法是纯SQL的,大致如下:

SQL代码
  1. SELECT * FROM tweets  
  2. WHERE user_id IN (SELECT source_id FROM followers WHERE destination_id = ?)  
  3. ORDER BY created_at DESC  
  4. LIMIT 20  
这当然不是一个高效的解决方案,后来采用了被称作离线计算(Offline Computation)的解决方案,其思路大致就是每当发送一条推的时候,采用队列存储避免峰值瓶颈,同时向所有Followers分发此消息,然后每 个分发 终端在缓存中完成合并计算。乍一听起来这似乎也不是什么好的解决方案,一旦某人有非常多的Followers,即便分区,这个分发操作也会非常耗时,但按 Nick Kallen的介绍,Twitter确实是这么做的,细节操作有待研究。

剩下的问题不多说了,Nick Kallen给了PPT地址:http://www.slideshare.net/nkallen/q-con-3770885

3、课程:构建可扩展的微波系统(讲师:杨卫华)

杨卫华作为新浪微博的架构师,这次的PPT做得很酷,虽然在内容上和Twitter有些重复,但还是很不错。

提到了Memcached的evictions问题,给出了三个守则:

1:规划好cache的容量
2:将永久数据和临时性数据分开
3:不使用随机字符串做Key

至于原因,可以参考杨卫华的博客上的介绍:Memcached数据被踢(evictions>0)现象分析

4、课程:敏捷在中国(讲师:Tom Mellor) 编程工期的催促往往让程序员只考虑眼前的既得利益,却忽视了后期的风险。

5、课程:如何在团队中有效实施TDD(讲师:麦天志)在阐述为什么即便工期紧张也应该使用TDD的时候,他给了一个比喻:医生做手术的时间很紧张,但即便 这样,手术前清洗双手的工作程序也是必不可少的。在讲解重构时,他强调了TDD是重构的基础,只有这样才能保证重构没有改变现有的行为,否则就不是重构,而是重写。

Tags: 语言, 思想, 参考