存档:

文章标签 ‘AJAX’
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

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。

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

YouTube 时间机器让你观看到任何年代的视频

2010年9月24日

YTTM全称是YouTube Time Machine,顾名思义就是一个YouTube时间机器,你可以选择1860年到2010年之间任何上传到YouTube的视频观看。好吧,1860年的时候还没有YouTube呢,这里说的年份是指该视频所讲的故事的年份,而非上传到YouTube的时刻。

除了按时间搜索,你还可以按分类过滤,包括视频游戏、电视、商业、事件、体育、电影和音乐。整个网站使用了AJAX技术,当你按下过滤按钮后网页不用刷新即可得到结果,很赞。

YTTM简直就是一个人类历史的纪录片检索仓库啊~~

Via Download Squad

作者: 分类: Google技巧 标签: ,
6

Google 将 Instantiations 制作的 JAVA 开发工具全部免费放出

2010年9月17日

Google于今年8月买下了JAVA/AJAX工具开发商Instantiations,他们的产品基本都是Eclipse Java开发工具,包括著名的GWT Designer。一般来说Google收购后的产品都会开源或免费提供,Instantiations也不例外,Google今天宣布Instantiations旗下4款跟Google有关的产品全部免费放出,包括:

  • GWT Designer:强大的基于Eclipse的开发工具,Java开发者可以用Google Web Toolkit快速创建Ajax用户界面
  • CodePro AnalytiX:出色的自动化软件代码质量和安全分析工具,可改进软件质量、稳定性和可维护性
  • WindowBuilder Pro:为Swing、SWT、GWT、RCP和XWT·UI框架提供Java图形化用户界面的设计器
  • WindowTester Pro:为Swing和Swing UI框架测试Java客户端的GUI互动性

以上四款软件现在均可在GWT下载页面里找到。

Google还宣布他们正在将这些工具与GWT家族工具做深度整合,比如将这些技术整合到Google Plugin for Eclipse (GPE)里,还有GWT Designer中内置对UiBinder的支持。

Via Google Web Toolkit Blog

3

又一个山寨的 Google 瞬时搜索,好处是它可以加密搜索

2010年9月15日

感谢读者 wmr 的自爆。

wmr山寨了一个Google瞬时搜索。其使用了Google Ajax Search API,将其中的onkeyup加入了action的值,就得到了一个瞬时搜索。其对比之前的那些山寨瞬时搜索的优势在于支持加密传输,不怕发生意外。

1

周四凌晨的 Google Search 发布会能有什么?

2010年9月8日

searchon

我们知道北京时间周四凌晨会有一场号称“绝对不能错过的”Google搜索新产品发布会,那么Google到底能带给我们什么绝对不能错过的惊喜?一般来说Google不会突然发布一个未经测试过的新产品(除了近两年的Google Buzz和Wave,他们的现状大家也知道了……),尤其是搜索类的产品,这个Google赖以生存的基础服务要推出什么改变的话,Google会提前找用户进行随机测试。最近被用户察觉到的搜索方面的测试包括:

1.AJAX搜索结果

使用AJAX驱动的Google搜索,当你在Google搜索的时候,尽管搜索结果页面变化了,但如果注意地址栏的话会发现URL是不变的,就是说网页并未刷新,而利用了AJAX技术在页面内自动刷新,这样可以大大提高用户看到搜索结果页面的速度。已经有人看到了这种AJAX搜索页面。

2.每页20或30条搜索结果

WebmasterWorldGoogle Web Search Help很多人都报告他们被强制限定每页显示30条搜索结果条目,昨天我们也报道了这一事件,这可能是为了让用户不必考虑到翻页问题。

3.搜索结果居中显示

谷奥读者 Garrid Lou 发现,尽管只是在CSS里加了一句“CSS:margin:0px auto”,但足以让整个Google搜索结果页面大变了。居中后的页面可以让超大屏幕用户使用起来感到舒服一些。

4.新的导航栏设计

这是谷奥读者 FanQiuwen 率先发现的,新导航条里的链接没有了下划线,且采用块状的设计,右侧的Settings文字被替换成了扳手图标,有趣的是其方向跟Chrome浏览器里的扳手是反的。

5.边输入文字边出现搜索结果

这是SEO顾问Rob Ousbey发现的,随着你在搜索框里输入文字,Google搜索结果页面将自动刷新给你当时输入文字的搜索条目和广告。效果很酷,但实用性和对用户电脑的性能要求就不禁要让人打个问号了。

发布会将在太平洋时间9月8日早上9:30,北京时间9月9日00:30开始,届时谷奥也将在 @guao 和网站同时为大家进行中文直播,欢迎大家到时关注。

Via Search Engine Roundtable

作者: 分类: 故事/传闻 标签: , ,
1

Google 买下 Java/Ajax 工具开发商 Instantiations

2010年8月5日

Instantiations是一家流行的Java/Ajax工具开发商,尤其在设计Google Web Toolkit(GWT)方面很出色,他们之前甚至不得不特别说明自己并不是Google的子公司也没有收到Google的赞助。不过现在他们不必再逢人就这么解释了,因为现在Google已经买下了他们。Instantiations已经给客户发邮件告诉他们这一变化,Eclipse Java产品的下载将在过渡期暂时停止,未来新的产品将在Google Web Toolkit博客发布。

Google这一收购用意不仅在GWT设计工具,更在于Ajax和Java方面,Google所有网页应用都部署了大量的Ajax,而Android应用则使用Java来创建。所以这看起来是一次绝对直入主题的收购。

Via TechCrunch

10

Google 爬虫已经开始抓取 AJAX 页面里的内容了

2010年3月5日

今天在圣克拉拉举行的SMX West大会上,Google的Maile Ohye确认说Google已经开始使用去年夏天建议给各个网站的标准提议,来抓取AJAX页面里的内容了。Google Code里可以找到如何部署自己的AJAX代码和URL地址的例子,好让Google爬虫可以索引到。

如果你的网站大量使用AJAX并有无法被索引到的带hash标记的URL地址,那么现在正是改进AJAX的好时机。对AJAX抓取有任何问题,可以到讨论组里提出,Google Web Toolkit团队会帮你解决。

Via Search Engine Land

0

Custom Search 三周年第二弹:Google Custom Search 主题

2009年10月28日

themes

Custom Search Themes为使用Custom Search的站长们提供一个快速打扮Custom Search外观的方式。你可以在众多已经制作好的主题模版里选择,然后再根据自己的需要自定义字体、颜色、背景、推广设置、标签排列样式和鼠标悬停的样式,一切都可以在线编辑并实时看到更改后的效果。

你甚至可以选择Custom Search结果页面的分栏样式,有三种可选。如果你还想更深入的做定制,可以下载CSS文件到本地编辑,你也可以参考AJAX Search API来深入定制自己的Element样式。

现在就来定制自己的Custom Search主题吧

Via Google Custom Search Blog

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

Google AJAX Language API 支持更多语言,更多软键盘

2009年9月16日

Google Translate达到51种语言互译之后,Language AJAX API也进行了升级,增加了对新语言的支持(也达到51种语言了,实现2550种语言配对翻译),而且也增加了配套的软键盘支持。

Google Language API这次新增支持的语言包括:

  • 南非荷兰语
  • 白俄罗斯
  • 冰岛
  • 爱尔兰
  • 马其顿
  • 马来
  • 波斯
  • 斯瓦希里语
  • 威尔士
  • 意第绪语

Slovak-Keyboard

在推出软键盘的API之后,这次再增加9种新语言的软键盘布局:

  • 保加利亚
  • 捷克
  • 希腊
  • 希伯来语
  • 匈牙利- 101布局
  • 斯洛伐克(如上图)
  • 斯洛文尼亚
  • 土耳其-Q布局
  • 乌克兰- 101布局

Via Google Code AJAX API Blog

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