从Google索引中删除网页内容

根据Google Webmaster Tools的说明文当,如果要从Google的搜索结果中删除网页内容,必须至少满足三个条件中的一个:

  1. 访问该页面返回404或者410错误。必须是HTTP Header里包含错误,而不是返回自定义错误页面。
  2. 用robots.txt禁止对特定页面的索引。
  3. 在HTML页面中是用meta tag noindex。

Google说满足该条件之后,Google的机器人在下次爬网的时候,会从索引中删除该页面。可是有时候好像即使满足上面条件之一,页面也并不能完全从搜索结果中删除。这时可以用Google Webmaster Tools提交一条删除链接申请。该申请如果被批准,链接基本能从搜索结果中删除了,但该申请也有可能被拒绝。不知道Google在批准或拒绝申请时,是人工还是机器。

上面的方法对特定的页面或文件有效,但对象WordPress首页这样的动态页面效果不大。因为这个页面不大可能返回404或410,如果只想移出某一篇blog,也不大可能加noindex的meta tag,同样如果用robots.txt,所有blog都不会被索引。我试着提交了一个移出链接申请,结果被拒绝了。最终我选择使用robots.txt暂时block全站,这样google检索之后,在搜索结果中虽然还能看到我的blog,但缓存的内容已经没有了。问题是我修改robots.txt恢复全站索引之后,内容好像有回来了。

Google说页面的内容必须有改变才会重新索引,加了这篇blog之后,看看索引和缓存会不会更新。

晴朗的天空里飘着啥

1.

在买iPad之前,我想过我可以用它来做什么。上网听音乐看视频这些不必说了,我想我还可以用它来看电子书,我之前用Kindle 2,看书的体验还不错,但看PDF效果就差一些。可以用它来记笔记,我在电脑上就用OneNote来记笔记,我想iPad应该有替代应用。再有就是玩玩Twitter,看看Google Reader啥的,也许还可以尝试一下iPhone OS上的游戏。iPad拿到手2个月之后,我发现它确实能满足我上网,玩Twitter,玩游戏的需要,但是要真想拿它来干点正事,比如看书记笔记,它还真不怎么靠铺。它就纯粹是个大玩具。这是什么原因呢?

首先就是“iPad太好使了”,你可以用它来干许多事,比如上网,发推,玩游戏。相比而言,看书就太枯燥了。看书是一个需要集中精力的事,用Kindle的时候,它让人Focus在书上,因为它完全干不了别的(Kindle 2非国际版出了美国就没有网络可用了)。iPad正相反,比如看书看到什么有趣的东西,会想要在Twitter上分享一下,结果一去Twitter就回不来了。

第二原因就是iPad完全不适合输入。由于屏幕的关系,它的软键盘,一个手输入显的太大,速度会很慢,而且iPad太重,不适合一个手长时间举着。两个手输入的话就必须有个支撑,而键盘又会显得太小。总之靠键盘输入来快速记东西或写很长的东西不太靠铺。手写输入更惨,因为是电容屏的关系,一般的触控笔都不能用,一直用手指迟早磨出老茧,而且手指太粗,相对来说iPad的屏幕就显小了。相比而言,Courier的双屏幕+触控笔应该是非常理想的组合,但是这东西已经被微软cut掉了。

2.

Jobs说iPad 28天卖了100万台,59天卖了200万台。它能卖得这么火说来令人吃惊的,试想一台CPU主频1GHz,256MB内存的电脑这年头谁会买啊?这还是一个十分封闭的系统,用户不能随便安装程序,没有Jailbreak过的系统只能从App Store购买和安装软件,而App Store的审核规则非常模糊,也许只有Jobs知道什么样的程序能够通过审核。想象一下,如果微软在Windows里强制用户只能安装比尔盖茨喜欢的程序,PC还会有人买吗?

关键就在于iPad不是电脑,而是一款娱乐设备。iPad取代不了电脑,电子书阅读器,游戏机,甚至是上网本,但是它能填补这些设备之间的空隙。如果你需要一款移动设备既能够上网查邮件,又能够玩游戏看电子书,iPad确实是不二之选。

3.

前一段Google开了Google IO,发布了Android 2.2,Apple开了WWDC,发布了iOS 4,两家斗的利害,可是谁也没再把微软放在眼里了。似乎移动领域再也没微软什么事了。

我曾经很看好Windows Mobile平台来着。记得当年mvm面试我的时候,我们还大聊了一番对移动设备发展的看法,都认为Windows Mobile将是很有前途的平台。说话间没有5,6年的功夫,它已经没落到没人搭理的地步了,真是让人心寒。

也许现在是微软改变策略的时候了。微软应该学学Amazon,Amazon明白自己的核心业务是卖书,Kindle设备只是书的媒介,它不在乎用户用什么设备来看书,因此有了Kindle, Kindle for Win/Mac/iPhone/iPad/Android,Kindle的软件在所有平台上都有。尽管苹果有iBooks和Kindle竞争,我还是会选择买Kindle的书,因为我不想被绑定在一个平台上。

微软继续发展自己的移动设备当然是好事,虽然这会烧掉许多钱,也很难再建立起以前的优势了。但这不应该妨碍微软将自己的产品发布到别的平台上,Office如果有iPad版,绝对会是一件好事。Windows Live最近就发布了Live Messenger for iPhone,新版的Safari里也集成了Bing搜索,这是不是意味着转变的开始呢?

Silverlight on SharePoint

这两天花了点时间在Silverlight上。Silverlight blueprint在RTM之前有一个MediaViewer的Web Part,可是在RTM里这个web part没有了。而http://mssharepointdeveloper.com/上关于Silverlight的hands-on中,第三个是MediaViewer,但是它的代码也是基于Silverlight 2 beta 2的,在Silverlight 2上不能正常工作。Silverlight control可以在Web Part中正常加载,但媒体内容无法正常显示,只显示一个白色画布。我对Silverlight也没有太多的认识,为了修复代码中的问题,debug的过程真实一波三折,总算最终找到了问题所在并修复了。修复后的代码可以从这里下载。

原先的代码中有两个问题,这两个问题其实是相关的。

1. 这个MediaViewer通过调用SharePoint的web service来取得媒体文件的信息,特别是媒体文件的URL。这个web service的调用是通过Ajax的异步方式实现的。源代码如下:

        private void BuildPreviewBar()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(siteUrl + "/_vti_bin/Lists.asmx", UriKind.Absolute));
            request.Method = "POST";
            request.ContentType = "application/soap+xml; charset=utf-8";
            request.BeginGetRequestStream(new AsyncCallback(RequestCallback), request);
            request.BeginGetResponse(new AsyncCallback(ResponseCallback), request);
        }

这里request和response运行在两个线程里,这两个线程的timing和同步就变成了一个问题。解决方法是将request.BeginGetResponse放入RequestCallback方法的最后,当request已经写完之后,再来获取response。

2. 这样做了之后,随之而来的第二个问题是,在ResponseCallback方法中有一些代码是用来更新UI的,比如更新PreviewControl,由于ResponseCallback是运行在一个工作线程里,这就引起了Cross thread的问题。最终在Silverlight的论坛里找到了解法,就是将ResponseCall里的调用,用Dispatcher.BeginInvoke的delegate包装,Dispatcher保证了代码运行在UI线程里。

在debug这个Silverlight应用的过程中,除了一些Silverlight的基本资料,我看得最多的就是Silverlight论坛和一些牛人的博客,也对Silverlight有了一些认识。Silverlight说穿了就是一个WPF的子集,它包含了一些有用的组件,比如MediaElement,使得浏览器不必依赖客户端的媒体播放器就能够播放媒体文件。这一点Flash早就可以做到,但是如果用Silverlight结合Expression系列以及Visual Studio,就能很容易地开发出具有全新用户体验的web应用了。目前Silverlight比较大的一个问题是,各个版本之间变化太大,换了版本之后原有的代码可能就不能工作了,现在就将已有的应用迁移到Silverlight上来,还真需要一些决心。

一点小教训

  1. 数据库及时备份很重要,比想象的更重要。
  2. 慎用Shift+Del,误操作真的会发生,恢复误删除的文件很辛苦。
  3. 最好将备份定期移入另外的介质,避免一个磁盘崩溃导致所有的备份丢失。
  4. 验证数据完整性。

迈向云端

无巧不巧,IE8 Beta 2刚刚发布一星期,Google就发布了他的免费浏览器Chrome,一场新的浏览器大战终于上演了。

其实这是注定的,随着Google对“云”概念的不断鼓吹,他必然会试图占领“云”的入口。我们且看最终谁会站上云端。

Update: Chrome, every tab is a process.

Obama在柏林的演讲

原文: http://www.iht.com/articles/2008/07/25/america/24textobama.php
我尝试翻译的第一部分:

感谢你们,柏林市民和德国人民。请让我感谢今天早些时候欢迎我的总理Merkel和外交部长Steinmeier。感谢Wowereit市长,柏林议会,警察,尤其是感谢你们的欢迎。

像许多以前来此的我的同胞一样,我来到了柏林。今夜,我不是作为一个总统侯选人向你们演讲,而是作为一个公民–一个自豪的美国公民,一个世界公民。

我知道我看起来和以前在这个伟大的城市演讲的美国人不同。引领我来的这里的旅程非常不可思议。我的母亲出生在美国的心脏地区,而我的父亲在肯尼亚放着山羊长大。他的父亲,我的祖父,是一个厨师,一个英国人的家仆。

在冷战的高潮时期,像生活在世界各地被遗忘的角落的许多人一样,我的父亲认为,他的渴望–他的梦想–需要被西方承诺的自由与机会。于是,他开始给美国各地的大学一封又一封地写信,直到某处的某人答应了他对更好的生活的祈祷。

那是为什么我来到了这里。你们来到这里是因为你们也了解那个渴望。这座城市,像其他所有的城市一样,了解自由的梦想。 你们知道,今夜我们站在这里的唯一理由,是因为我们两国的男人和女人,为了更好的生活,一起工作,一起奋斗,一起牺牲。

我们之间的伙伴关系,真正开始于60年前这样一个夏天,始于第一架美国飞机降落在Templehof那天。那时,这片大陆的大部分地方还是一片废墟,但是这个城市的瓦砾却已经被砌进了墙里。苏联的阴影已经席卷了东欧,而在西方,美国,英国和法国还在估算着他们的损失,考虑着该如何重建这个世界。

两个阵营在此相遇。1948年6月24日,共产主义者选择封锁城市的西部,他们切断了对超过200万柏林人的食物和供给,从而达到熄灭柏林最后的自由之火的目的。 我们的军队的数量无法与庞大的苏联军队相比,然而撤退会使共产主义进军整个欧洲大陆,这里上一场战争刚刚结束,新的世界大战会很容易开始。挡住这条路的是柏林。就是在那时,空运开始了–那是历史上最大规模和最不可思议的救援行动,为这座城市的人民带来了食物和希望。

(累了,待续……)