存档:

文章标签 ‘JavaScript’
4

Google 爬虫们已经会执行 JavaScript 来探索更多内容了

2012年5月19日

Ars Technica报道说,Google搜索引擎的爬虫们现在可以索引并执行网页里的JavaScript和那些隐藏在AJAX下面的内容了。Google的SEO大神Matt Cutts也在Hacker News的报道下面留言说:

Google会继续让爬虫变得更好更聪明,包括让它们更好的执行JavaScript并探索到里面的内容。

实际上Google在3年前就着手让爬虫执行JavaScript了,在去年也开始研究让他们理解AJAX。对于站长来说,不要试图利用JavaScript和AJAX来骗过Google爬虫隐藏不可告人的内容,Google现在都知道了。

Via SER

0

Google 官方推出方便视力受损使用的 Chrome 屏幕阅读扩展 ChromeVox

2012年3月1日

ChromeVox是Google官方推出的一枚Chrome扩展,它可以让Chrome具备屏幕阅读器的功能。跟其它那些辅助性的屏幕软件所不同的是,ChromeVox完全使用HTML 5、CSS和Javascript这些网页技术打造而成,特别使用了W3C标准的ARIA(富互联网应用接入)技术,特别适合长时间使用网页应用来工作的视力受损的朋友。

安装之后你不需要进行任何设置,即可让Chrome浏览器读出屏幕上的所有内容。在Windows系统下,双击Insert键即可切换阅读模式;在OS X系统里快捷键是双击Command键,而在Chrome OS系统里则是双击Search键。

特别需要注意的是,ChromeVox还在测试中,且不支持你自己的屏幕阅读设备,所以使用的时候需要先禁用其它的屏幕阅读软件或设备。

继续观看官方介绍视频:

阅读全文...

4

Google 发布 JavaScript 到 Dart 翻译器

2012年1月31日

由于嫌JavaScript太烂,所以Google之前发布了自己的Dart语言。这个新的平台可适合开发简单、高效而具有可扩展的网页应用,整合了强大的全新的编程特色,但却同时具备你熟悉的语言语法结构。

今天Google则发布了JavaScript 到 Dart 翻译器,这个应用可以告诉你Javascript和jQuery的变量、函数、类库、DOM操作、数组等等,转换成Dart版本之后语法应该怎么写。

Via Chromium Blog

8

全平台 Chrome Dev 分支升级到 17.0.963.0

2011年12月7日

感谢读者 枫虹一刀刘 的提醒。

Chrome Dev for Mac OS X/Windows/Linux和Chrome Frame升级到17.0.963.0,主要更新:

全平台:

  • Javascript V8更新到3.7.12.6
  • 在用户总是选同样的搜索建议的情况下,Omnibox里的搜索建议可预先生成
  • 支持<meta name=”referrer”>标记
  • 设置里的Under the Hood里的Content Settings增加了Mouse Cursor设置,可控制Mouse Lock API的权限
  • 修复当在已打开很多标签页时打开一个标签页就崩溃的问题
  • 修复BiDi选择的Webkit问题
  • 修复Webkit输出元素以符合HTML 5 10.3.5部分里的问题

Windows:

  • 可设置不同的快捷键来启用不同的用户帐号

Mac:

  • PDF阅读器渲染的文字比以前更好看了
  • 使用Core Animation渲染模式的插件可通过Chrome排版,虽然用户看不出这个变化

已知问题:

  • Linux和Chrome OS上安装的扩展、网页应用、主题无法工作

详细记录请看SVN日志。这个版本似乎稳定了不少,以前上淘宝或Hotwire有100%的几率网页会卡死,现在应该已经好了。另外读者枫虹一刀刘还发现实验室里多了Pointer Lock和Gamepad两项,可打开对鼠标锁定的支持,以及对游戏控制器的支持,这两个API都是让Chromebook玩游戏的关键。

Via Google Chrome Releases

11

Google+ Badges 正式推出,立刻嵌入你的网站吧

2011年11月17日

我刚刚收到到了Google+ Platform的来信,告知Google+ Badges现在已经上线。Google+ Badges其实就是一个Javascript的小widget,可以让你将Google+的信息直接嵌入到自己网站里,只需要填写自己的Google+帐号URL地址,即可获得代码,贴到自己网站上之后,访客可以:

  • 看到你的Google+名字与地址
  • 如果访客登录了Google帐户,可以就地圈养之,而不必进入Google+
  • 看到有多少人给该Google+帐户做了Google +1
  • 看到自己好友里有谁给该Google+帐户做了Google +1

Google+ Badges代码可支持HTML 5,也支持异步,如果访问Google+服务器很慢,也可显示全你的网站后再显示Google+ Badges部分,不会拖累你的网站打开速度。

我们谷奥当然第一时间部署上了Google+ Badges,持续求圈养……

Via Google Developers

18

Chrome Dev 分支升级到 17.0.928.0,增加三个实验室功能

2011年11月4日

感谢读者 枫虹一刀刘 的提醒和爆料。

Chrome Dev 分支for Windows/Mac OS X/Linux和Chrome Frame同时升级到 17.0.928.0,更新包括:

  • 升级Javascript V8引擎到3.6.6.3
  • 如果用户在隐身模式下载文件,关闭最后一个标签页的时候会问用户是否停止下载
  • 默认启用Panels
  • 可在打印预览里调节边距
  • 允许鼠标锁定的许可可保存在每个域名的设置里

Linux:

  • 修复当使用一个主题且点击多帐户选择弹出框的bug
  • 优化GTK+性能

已知问题:

  • NaCI无法工作在Windows下
  • Indexed Database部分功能无法正常工作

详细请看SVN记录

读者枫虹一刀刘发现这次Chrome Dev的实验室里增加了三个新的选项:

  • Enable extension alerts:在扩展状态发生变化的时候弹出提醒
  • HTTP Pipelining:对HTTP请求流水线的支持
  • Enable Media Source API on <video> elements:对video标签里Media Source API的支持,该API允许Javascript直接发送媒体数据到视频元素里

Via Chrome Releases

23

Dart VS. JavaScript - 上篇:JavaScript 的历史包袱

2011年10月18日

敬告:本文作者没写过上万行的代码,文中信息全部为道听途说,未经查证;文中观点可能偏颇狭隘一根筋,谨做抛砖引玉之用。望达者查之,读者自重,喷者迅猛。

Google 近日推出 Dart 语言,剑指大红大紫的 JavaScript。为什么 Google 挑了这个看着不软的柿子,Dart 能不能顺利推倒傲娇的 JavaScript,这篇文章主要分析这两个口水侧漏的问题。

JavaScript 和 Google 的蜜月

JavaScript 本来是 Netscape 的小打小闹,可作为网页动态脚本的开先河者,它第一个实现了对网页动态指指画画的功能,必然随着 Web 壮大而壮大。2005 年,AJAX 兴起,网络应用形胜,JavaScript 更是如日中天。尽管其它脚本语言(e.g.VBScript, Perl等)能实现相同功能,JavaScript 是唯一一个跨平台跨设备浏览器都支持的语言。知名科技 Blog 抠腚好弱甚至说,所有能用 JavaScript 实现的,必将被 JavaScript 实现。

回顾 AJAX 的兴起,Google 扮演了重要的推手角色。几个标志性网络服务 Gmail, Google Maps, Google Group,甚至 Google 搜索建议,都采用了 AJAX 实现。用户端无需安装任何插件,便有交互效果。榜样的力量是无穷的,Google 的服务充分展现了 AJAX 的潜力,之后就是大家一拥而上,将 AJAX 捧到聚光灯下。考虑到 JavaScript 在 AJAX 之前都是小打小闹,验证个表单什么的,被人认为不堪大用。如果当时你说自己会 JavaScript 都没人搭理你,怎么也要懂个 ASP/JSP 才拿得出手。当然也不是说 JavaScript 可有可无。就去年,我在网上订机票,把身份证号填成手机号,竟然就注册成功了,结果最后空姐不让我登机!妈的,2010 年了,在网页上加个 JavaScript 表单验证会死么?分辨身份证号码和手机号码是尼玛世界级难题么?跑题了,总之还是 Google 把 JavaScript 从小萝莉带入青春期。

AJAX 应用越来越多,JavaScript 代码越来越多,短板也暴露的越来越明显众所周知,评判编程语言的标准和评判男人的标准不一样。其中重要的一个标准是看编程语言有多快(严格地说,编程语言无快慢之分,编程语言的实现才有。为了语言简洁,本文用编程语言快慢代指。)。而 JavaScript 最大的问题是,太!慢!了!

作为脚本语言,没有事先编译,性能完全靠浏览器里的 JavaScript 引擎。Google 在芬兰找了一个团队,闭门造车两年打造出 V8 JavaScript 引擎,内置入 Chrome 浏览器。而 Chrome 在 08 年横空出世,用几百上千倍的 JavaScript 速度分数秒杀了当时市场上一切其它浏览器。自然,后来其它浏览器纷纷跟上,苹果搞了 Safari Nitro 引擎,Mozilla 更新了各种猴子 JavaScript 引擎,连 IE 也不甘落后,搞出 Chakan 引擎各种提速,这货虽说不比 Google Chrome V8 的速度,也聊胜于无。终于,JavaScript 引擎性能的突破使其能够满足现代网络应用部署的需要。这次,Google 把 JavaScript 从含苞待放的青春前期催熟到青春后期。

吊诡的是,如今推出 Dart 语言的团队便包含当年开发 V8 引擎的团队。他们对 JavaScript 的评价是:“JavaScript 语言与生具来的残疾是无法通过进化改善的。”

就是说,感情破裂了。

JavaScript 的非主流本质

究其原因,最大的瓶颈源于 JavaScript 是非主流语言的本质。

JavaScript 是基于原型(Prototype-based)的编程语言,而现在最主流的对象编程语言都是基于类(Class-based)的。两者根本的区别在于,迥异的视角产生的不同方法论。。。

不严谨地说,基于类的语言逻辑来自分类学(Taxonomy),自上而下进行实现。程序员先要理清楚各种类之间的关系,定义好各种类,才能写出类下面的实例(可用对象)。而基于原型的语言逻辑来自认知论,举一反三进行实现,更符合人类正常认知的模式。程序员先关注几个个例的具体行为,之后再分类使用。不恰当比喻说明,如果让基于类的语言写出一个男人,要先找到人类。然后创建一个男人子类,子类具有人类一切属性且有男性性征。之后在男人子类创建出具体的男人甲。而基于原型的语言,可以先观察女人和公猿,然后删删减减拼拼凑凑得到一个男人的原型,之后按照原形创建一个男人乙。

可以看出,基于类的编程主要方法是继承,男人子类继承了人类所有属性,男人甲拥有男人子类所有属性并赋了值,比如身高 175 体重 300 斤。而原型编程主要方法是克隆,男人原型克隆了女人的智商和皮肤属性,公猿的性腺和嗓音属性等等其它不细说了,请自行脑补。

计算机科学史上,先出现的是基于类的语言,后来才有基于原型的语言。前者在对象编程领域一直是主流,大学里教的主要是这个,多数研究也集中在这个领域。而原型编程,虽说由于 JavaScript 的存在使用的很多,但和基于类的编程相比还是非主流状态。这就导致了一些相对劣势。

由于缺乏对类的支持,而很多开发人员又习惯基于类编程。很多 JavaScript 库模拟了自己的类对象,便于开发人员调用。看上去现在两全齐美了,其实没有。关键问题是,性能。

拜 Google 所赐,JavaScript 拥有目前世界上最有技术含量最复杂的脚本引擎,速度和其它脚本语言相比无以匹敌。Google 对 JavaScript 的最主要提速来自 JIT(Just-in-time) 编译,把 JavaScript 预编译成机器码,在执行时直接调用机器码提升效率。可跟传统编译语言比起来,性能不可同日而语;甚至比 JAVA, C# 也略逊一筹。

事实上,JavaScript 引擎相当复杂,且提速越来越难。这也跟 JavaScript 非主流原型编程有关。

基于类的语言,同类实例的数据结构和方法都相同,男人甲乙丙丁都有身高体重胸围,无非是数值区别。这种情况下,脚本引擎只需要优化该类一次,生成本地码,之后反复套用,自然会有效率性能提升。

而原型语言不同,没有类的概念。传统原型语言引擎的经典方法是给出一个大字典(HashMap),每次调用具体数值都去查字典,如此操作费时费力。可如果引擎按照类语言进行预编译,又不知道编译出来的本地码后面是否被频繁调用。有时甚至得不偿失,花在预编译上的时间还未必比查字典少。Google 的 V8 引擎则另辟蹊径,分析发现 90% 的JavaScript object 是有规律可循的。于是他们总结规律,人为地生成隐藏类,对隐藏类进行优化编译。当扫描的符合条件 JavaScript 代码时,自动调用事先编译好的机器码执行。

现在你知道原型语言 JavaScript 为开发者和引擎造成了多大的拧巴。这种复杂性带来的维护成本上升,开发门槛提高。要是用了主流类语言,不会有这么多麻烦。

JavaScript 本身缺乏很多特性,如不支持 Static Typing,调试维护相对困难;调用多个第三方库难以保证不冲突;内置库太迷你等等等等。当然这些都有解决方法。事实是,大多数 JavaScript 的粉丝也承认,JavaScript 是有一些缺陷的。

于是有了 Google Dart 语言,最核心的特性 1)基于类 2)可选类型(支持 dynamic/static typing)3)丰富内置库 4)开发工具丰富。分别对应了上文提到的 JavaScript 缺陷。

下篇待续:Dart 的今生来世,主要分析 Dart 能否推倒青春后期的 JavaScript。

作者: 分类: 观点/评论 标签: , ,
7

Google 正式发布适合打造网页应用的 Dart 编程语言

2011年10月11日

在等待了将近一个月之后,Google正式正式发布了Dart语言,帮助你打造网页应用。这个新的平台可适合开发简单、高效而具有可扩展的网页应用,整合了强大的全新的编程特色,但却同时具备你熟悉的语言语法结构。

Google称这个新的语言将协助开发者打造出结构化的灵活网页程序,同时Dart又让程序员感到很熟悉而自然,简单易学。同时确保Dart在现代化的浏览器和环境上提供最高的性能。

Google已经在 dartlang.org公布了开发工具、语言和源代码,并有适合一个人的开发团队到大型工程的代码示范,其代码可通过原生的虚拟机或JavaScript引擎转换Dart代码到JavaScript后直接执行。尽管目前Dart虚拟机还没有整合进Chrome浏览器,但未来肯定会实现。

Via TNW

作者: 分类: Google新闻 标签: , , ,
2

Google 推出 Javascript 测试工具 Google JS Test

2011年9月30日

Google JS Test是一个运行于V8 JavaScript引擎下的Javascript单元测试框架,其在Google内部负责对Chrome的快速JS执行速度进行测试,现在Google以开源工程开放大家使用。Google JS Test主要特性:

  • 超快的启动速度和执行时间,不需要在浏览器里运行
  • 清爽而具有可读性的输出内容
  • 也有一个可选的基于浏览器的测试器,可在JS修改的时候刷新
  • 其样式和语义跟Google Test for C++类似
  • 内置的Mocking框架只需要最简单的样板代码(比如no $tearDown or $verifyAll 请求),其样式和语义基于Google C++ Mocking Framework
  • 匹配系统允许表达式测试,并可直观的阅读输出的错误提示,内置了很多匹配器,用户也可自行添加

Via Google Open Source Blog

22

Google 欲强推仅有 Chrome 支持的 Dart 语言代替 Javascript

2011年9月13日

先说DART。在10月即将召开的GOTO开发者大会上,Google工程师说他们将宣布一个新的编程语言的细节,而其名称就叫做DART。即将在GOTO开发者大会上做主题演讲的是Google的工程师Lars Bak,它负责Chrome V8 Javascript引擎,之前有过虚拟机的开发经验。Bak持有大量专利,不过主要都来自早先在SUN工作时期获得的。

另外一位Google工程师Bracha则在博客里透露了一些内容,其先是表达了对Javascript的不满,然后提出互联网需要继续进化,另外就是需要能够利用上多核心处理器的性能。他还说:

Javascript依然是一个对平台部署来说有着严重限制的语言。

然后神人出现了,挖到了去年11月Google员工之间的通信,自打那时候起就有一组Google团队在研究Javascript的未来了。这封信里提到的Google的新语言称为Dash,看来现在已经改名为Dart。但是这封信里的一些内容让人看了不禁后背发凉:

我们将严重鼓励Google开发者只专注于Chrome,这样才可以给我们带来最佳的用户体验。

那些仅专注于Chrome的开发者可以xxxxx……专注于所有浏览器的开发者将不得不xxxxx……

REDDIT上有人评论到,我不理解为什么人们非要跟着Google帮他们用自己的技术去取代现有的技术。他们总是承诺“我们必须尝试新标准”,但他们自己的技术目前为止没有任何一样成为标准:

  • Google不喜欢MPEG,于是搞出了VP8。但打一开始他们就没在将其打造成一个真正的开放标准上做任何努力。
  • Google不喜欢HTTP,于是搞出了SPDY。但现在只有Chrome和Google的网页应用支持,目前也没有任何迹象能成进入标准组织。你可以想象微软的IE自己鼓捣了一套HTTP标准然后只和微软自己的IIS服务通讯吗?
  • Google不喜欢所有非IE浏览器的NPAPI插件模型,于是搞了完全不兼容的插件API和原生代码的Native Client
  • Google不喜欢JPG和PNG,于是搞了WebP图形格式
  • 而现在Google又开始不喜欢Javascript了,于是搞了Dart
  • 估计接下来Google还会不喜欢CSS甚至是HTML

诚然,Google自己打造的技术都是开源的,但他们根本就不想将其推广成为一个公开的开放的标准,一个开放的标准意味着整个行业里的所有人都有机会对设计、开发和指导技术进步方向进行探讨,以适合所有人使用。但Google现在自己鼓捣的所有技术标准都完全是受Google控制的,Google决定着该技术的一切(包括Android,我说的没错吧?)。

对,这些技术和标准是开源的,但这种开源有意义吗?VP8、SPDY、NPAPI、Native Client、WebP、Dart,一切都在Google的控制之下,到目前为止几乎都只被部署在Google自己的Chrome浏览器里。对,你也可以部署到自己的浏览器里,但你完全无法控制它的发展,只能跟着Google在他的黑匣子里玩。对,你也可以利用开源的代码来修改出一套适合自己的技术而不受制于Google,但这样费力的结果是毫无意义的,难道你想让一个网站为了获得比HTTP更快的响应速度而同时部署SPDY和其各种变种版本的服务吗?

如果Google真是一个负责任的真心推动开源和更好的技术标准的公司,他们应该做的是将自己的想法和技术上报到类似W3C这种行业的开放标准上,让整个行业一起制订、创造、完善这一更好的技术,使其成为真正的开放标准。

Via REDDITIW and DZone
Pic via pureawesome.net