062012
 

iPhone越来越流行,App Store中的应用也越来越鱼龙混杂,不小心买到一款烂应用在所难免。买到不称心的应用怎么办,申请退款呗?去苹果官网投诉一下就可以获得退款,应用内的购买也可以退。

具体步骤如下:

1. 进入iTunes技术支持页面:http://www.apple.com/support/itunes/contact/

2. 点击”Get iTunes support via Express Lane”,然后可以看到如下界面: (如果你看到的界面不是中文,可以点击左上角“中国(简体中文)”的位置来更改语言。)

 

3. 依次选择iTunes->iTunes Store->购买、帐单与兑换

4. 点击继续看到以下界面:

5. 选择“已购买内容的质量”,填上一些你的信息,还有你要投诉的应用名字和你的订单号,(订单号可以在Apple寄来的帐单中查到)。

6. 点击继续后需要登录一下,然后再填写投诉的详细信息,如下:

不知道详细信息可不可以填中文,反正我当时填的是英文,大意是抱怨一下应用的描述和实际不符,有骗钱的嫌疑,然后要求退款。

接下去,一天之后,收到了Apple客服的邮件,说他已经处理了我的请求,我已付的款项(408RMB)会在5至7个工作日内汇到我用于付款的卡上。实际情况要比预期的快,大概3天就到帐了,非常好。

032012
 

AWS是Amazon旗下的云计算服务,全称是Amazon Web Services。可能Amazon在建立AWS之初,还没有“云计算”(Cloud Computing)这个词,于是它的名字和云一点关系也没有。

我现在使用了他家的EC2(Elastic Compute Cloud)作为主机、CloudFront作为CDN、Route 53作为DNS。EC2使用的是最便宜的Micro Instance,在免费期内Micro Instance一个月赠送750小时的免费额度,即完全免费。免费期有一年,一年过后,费用是$0.027每小时,即一个月$20.25。主机位于东京的数据中心,EC2在亚洲有2个数据中心,另一个在新加坡,据测试表明东京的连接速度要优于新加坡。

由于Micro Instance的限制(内存过小,CPU不给力),我最初没有办法把我的blog放在上面,被迫选择高一级的Small Instance,然后12月份就被Amazon狠狠地宰了$32.29。后来经过不懈地努力,尝试了很多种配置,终于把blog塞进了Micro Instance中,于是1月份的费用是降到了$2.01。我甚至还在EC2上搭了一个VPN服务,并且没有增加额外的费用。对此我相当满意。以下是费用清单:

  • CloudFront:1.759GB流量 + 83,828个请求 = $0.42
  • EC2:744小时Micro Instance + 8G硬盘 + 1,674,979次磁盘读写 = $0.00 (免费额度)
  • Route 53:174,931次请求 + 3个域名 = $1.59

这样一年的费用大概是150RMB,主要用于blog和VPN,还可以让我在闲得没事干的时候学点东西,比如node.js。相当得超值了……

至于如何优化WordPress使它能在Micro Instance上运行,之后再详述……

152012
 

前几天,IE(Internet Explorer)的团队特地制作了蛋糕,来庆祝IE6在美国的市场占有率不足1%;与此同时,在中国仍然有高达四分之一的用户在使用着IE6。

以上数据来自IE6CountDown.com

Windows XP是一款相当成功的操作系统,IE 6也就随之一起流行了起来,尽管用现在眼光来看,IE 6有着这样那样的毛病,但是在当时,IE 6几乎就是网页设计的标准。随着科技的发展,IE 6也有退休的一天,Windows 7带来了IE 8,Windows 8即将带来IE 10。每一个新版本都有大量的新功能,新特性,而相应的网页设计也随之发生了改变。但是似乎人们的习惯并没有发生改变……

这其中可能有那么几个原因:

  1. 习惯于IE 6的界面,不愿意花时间来熟悉新的界面。这种习惯很好理解,当你熟悉一样事物时候,就不太愿意尝试其它同类的事物,比如买衣服总盯着一个牌子;喝惯了星巴克的咖啡,就觉得其它店的咖啡不好喝。这些习惯对日常生活的影响并不大,衣服在几百年前就是这个样子,几百年后也不会变得太离谱。咖啡也是。但是电子产品就不是这样了,二十年前,还没有浏览器这个东西;十年前,在线看视频还属于天方夜谭;接下去的几年里,浏览器的功能和重要性将发生天翻地覆的变化。如果你不紧跟着潮流,很快这个世界就会把你甩开了。柯达和它的胶片相机就是一个很好的例子
  2. 由于使用了盗版的Windows,没办法升级。暂且不说盗版的危害性,盗版的存在固然有它的道理。但是这并不能阻止你使用先进的软件。同样买一张盗版盘,为什么不买Windows 7的呢,反正价格都一样……
  3. 我并不清楚自己在使用哪个版本的IE。如果你正在使用Windows XP,并且没有主动升级过IE的版本,那么你很有可能正在使用IE 6;但是如果你已经升级到了Windows 7,那么恭喜你,你不用担心你的IE了。

如果你已经动心,想安装新版本的IE:

  • 如果你正在使用Windows XP,请点这里来下载并安装IE 8。因为IE 8是最后一个支持XP的版本了,后续IE版本都要求Vista及以后的Windows;
  • 如果你正在使用Windows 7,请点这里安装IE 9。IE 9是目前最新的一个正式发布版的IE。
  • 如果你的朋友也在使用IE 6,请帮忙说服他们一起升级IE,为互联网的发展做一点贡献……
132012
 

最近,超级本(Ultrabook)这个概念渐渐火热起来。什么是超级本?它和一般的笔记本有没什么区别?

超级本是Intel主导的一个概念,和传统的笔记本比起来,超级本更轻、更薄、耗电更少。超级本被视为Intel用来和Macbook Air抢市场的产品。

以下是一段华硕UX21的广告:

为了推动超级本的发展,Intel做了一系列努力:

目前Intel对超级本的定义是厚度小于21毫米,重量小于1.4公斤,待机时间超过5小时。上述的UX21的最厚的地方为17毫米,最薄的地方仅有3毫米,和Macbook Air相当(作为参考,iPhone 4的厚度是9.3毫米),重量1.1公斤。

半年之后,Intel将会推出新一代的Ivy Bridge CPU,进一步提高超级本的运算性能;一年之后,Intel会进一步降低CPU的功耗,从现在的17W减少到15W。

既然超级本这么好,那普通的笔记本岂不是要淘汰了?事实上,Intel的估计是到2012年末,有40%的民用笔记本是超级本,普通的笔记本依然有些很大的市场。原因是超级本的价格偏高,接近1000美元,并非人人都消费得起……所谓一分价格一分货……

022012
 

Amazon的EC2中,默认是不允许使用用户名和密码直接连接Instance的,而是通过AWS (Amazon Web Service)提供的证书。在第一次使用EC2的时候,AWS会要求你创建一个证书并下载,证书是一个.pem文件。在Linux上可以直接使用SSH来连接,比如:

1
ssh -i 证书.pem ec2-user@Instance的IP地址

在Windows中,可以使用Putty工具来进行SSH连接,只不过Putty不能直接使用的.pem格式的证书,需要转换成.ppk才可以。这时就需要使用PuttyGen工具了(在同一个页面就有下载):

1. 打开PuttyGen工具

2. 点击Load加载.pem证书

3. 点击Save private key来保存.ppk证书

新生成的证书就可以在Putty里使用了。

大致的使用方法是在Putty的设置Connection->SSH->Auth里添加.ppk证书,如下图:

然后就可以使用Putty来连接EC2的Instance了,默认用户名是ec2-user。

十二 292011
 

几天不看邮件,就有几百封新邮件了,Gmail中分了很多页显示。其中多数是广告,也不是很高兴看,不过一直显示有N封未读邮件,看着不舒服。于是就想找出所有未读的邮件,一起标记成已读就好了。

貌似Gmail的界面中并没有提供按钮可以做到这件事,不过想想Google的搜索特长,应该可以通过搜索搞定。Google了一下,果然,在搜索框里输入ls:unread,再点搜索即可。简化版的指令是l:^u,效果是一样的。

还有一些类似的指令:

  • l:^u from:tim 找出所有来自tim的未读邮件;
  • l:^u l:^t 找出所有未读的加了星标的邮件;
  • l:^u l:^k subject:hi 找出所有垃圾箱中的标题包含“hi”的邮件。
十二 212011
 

用惯了盗版软件的人们,装软件之前,都会先确定这东西有没有被破解,或者有没有注册机。

iPhone也不例外。很多人没拿到机器之前,就焦急地询问,这东西是破解过的么,我需要破解版的。他们甚至不知道iPhone的解锁和越狱有什么区别……

先来说说解锁,解锁(Unlock)是指取消手机和运营商之间的绑定。美国的某些电信运营商很恶心,他们出售的手机只能用于自己的网络,如果SIM卡换成了其它的运营商,手机就无法使用了。联通为了防止iPhone客户换回移动的网络,也采取过类似的做法。这种做法可以保护运营商的利益,但是对用户造成了很大的限制。为了突破限制,解锁技术就应运而生了。iPhone经过解锁之后,就可以不限运营商地使用。当然这也给黄牛们带来了很大的利润……

然后是越狱。越狱(Jail Break)一词来源于苹果对iPhone软件的苛刻限制,很多有用的软件不得上架,比如输入法,于是就出现了第三方的应用商店(如著名的Cydia)。装上了第三方的应用商店,就可以不受苹果限制地安装应用了,相当于突破了苹果的束缚,这一行为就被称为越狱。越狱的本质是能过iPhone的漏洞(不论是软件的还是硬件的),获取iOS的root权限,然后使用root权限来为所欲为。

那么解锁和越狱是不是必需的呢?如果你在美国买了绑定运营商的iPhone,想拿回中国使用,就一定需要解锁;如果在联通买了手机想用移动的卡,就不用解锁(因为本来就没锁)。至于越狱,如果你对输入法没有过分的需求,不越狱的iPhone也能很好的满足你的日常使用了……

十二 192011
 

如果你还在用光盘装系统,你就OUT啦……从Windows Vista开始,U盘已经可以被用来启动机器并安装系统了。

在制作可启动U盘之前,你需要:

  1. 一个U盘,最好是4G或更大的
  2. 一张Windows 7或者Vista的光盘
  3. 一台正在运行Windows 7或者Vista的电脑

然后按照下列步骤:

  1. 将U盘连上电脑
  2. 打开管理员模式的命令行(开始菜单->所有程序->附件->命令提示符,右键单击,选择“以管理员方式打开”)
  3. 在命令行中输入下列命令(粗体部分):
    1. diskpart (进入diskpart工具)
    2. list disk (列出所有的磁盘,其中可以看到U盘的信息,通常是最后一个)
    3. select disk 1 (选择磁盘1,其中数字’1′需要按实际情况更改)
    4. clean (清除磁盘上的分区信息)
    5. create partition primary (创建一个主分区)
    6. select partition 1 (选择刚才创建的分区)
    7. active (激活这个分区)
    8. format fs=NTFS quick (快速格式化磁盘)
    9. assign (给这个分区分配一个盘符)
    10. exit (退出diskpart工具)
  4. 现在在资源管理中就可以看到新的U盘的分驱了
  5. 把Windows 7/Vista的光盘塞进光驱
  6. 把光盘中的内容全部复制到U盘

大功告成。以后就可以把光盘抛弃,直接使用这个U盘来装系统了……

032011
 

在一个产品处于开发阶段的时候,工程人员通常使用一个开发代号来称呼它;而当这个产品即将发布时,销售人员会给它取一个容易接受的名字,即正式的产品名,以便把产品推销出去。有时候在产品发售之前,它的开发代号就泄露了出去,就会导致两个名字共存,给用户造成困惑。比如Windows Vista的开发代号是Longhorn(一种犄角很长的牛),如果你看到一种叫Windows Longhorn的产品,它实际上就是Windows Vista。

下面来看一下SQL Server各个版本的那些奇怪的开发代号:

SQL Server 6.5:Hydra,希腊神话中的九头蛇,被英雄赫拉克勒斯所杀。

SQL Server 7.0:Sphinx,斯芬克斯,希腊神话中狮身人面的怪物,就是那个问“是什么动物,早上四条腿走路,中午两条腿走路而晚上三条腿走路?”的家伙……

SQL Server 2000:Shiloh,希洛战役,又称匹兹堡登陆战,美国南北战争中的一场主要战役。(历史不好,没仔细研究)

SQL Server 2005:Yukon,育空河,位于加拿大的育空地区,在当地语言中有“大河”之意。

SQL Server 2008:Katmai,卡特迈火山,美国阿拉斯加南部的一座活火山,山顶海拔2047米。

SQL Server 2008 R2:Kilimanjaro,乞力马扎罗山,位于坦桑尼亚境内,非洲第一高山,海拔5895米。

SQL Server “Denali”(未正式发布):Denali,德纳利山,也在美国阿拉斯加境内,北美第一高山,海拔6194米。

从最近几个版本的命名来看,SQL Server有“越来越高”的趋势,不知道什么时候能到达喜马拉雅呀:P

022011
 

之前提到过,Open()方法的第三个参数Async指定了XmlHttpRequest的通信模式是同步的,还是异步的。当使用异步模式通信的时候,Send()方法会立即返回,而不会等到加载完所有服务器发回的数据才返回。在异步模式下,我们可以通过注册XmlHttpRequest的OnReadyStateChange回调函数来获取它状态的变化,从而做出相应的操作。

来看下面的代码:

1
2
3
4
5
6
7
8
var xhr = NewXmlHttpRequest();
xhr.open("GET", "http://leonax.net", true);
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        alert("Status = " + xhr.status + ", ResponseText = " + xhr.responseText);
    }
}
xhr.send();

这段代码中,当xhr对象的readyState有变化时,xhr会自动调用它的onreadystatechange所对应的方法,也就是那个匿名方法。readyState的值从0到4,分别代表了XmlHttpRequest的5种状态:

  1. 未初始化(Open方法未被调用)
  2. 设置中(Open方法已调用,Send方法未调用)
  3. 设置完毕(Send方法已调用)
  4. 交互中(XmlHttpRequest正在和服务器通信)
  5. 完成(XmlHttpRequest已加载所有数据)

使用异步模式,我们就可以在加载服务器数据的同时,做一些其它的事情,比如显示一个进度条什么的,来提高用户体验。