Archive for 二月, 2013

一次旷日持久的macbook pro恢复系统

星期四, 二月 28th, 2013

这篇文章不是攻略,只是自己的一点鸡毛蒜皮的琐事。当然最后一段也能算是攻略。

一、前记

我妹去年结婚,思虑着送他们个什么结婚礼物,最后考虑再三,决定送他们一个macbook air。在京东上看好了,然后发现亚马逊的更便宜,然后就下单了。货送到后才发现我买的是macbook pro而不是air,由于他们婚期已近,退货来不及了,再加上他们对pro也不排斥,最后将错就错把macbook pro给了他们。

给他们之前,必然要对系统改造:保留了macos, 另外加装了一个win7, 因为内存有8G,所以给他们安装了win7 x64,时间比较紧急,所以也没有帮他们把win7破解,从而留下了祸根。

这次安装比较简单,自己在移动一盘里下好了win7 x64的iso,然后用bootcamp 硬盘工具制作启动U盘(需要一个单独干净的优盘), 然后bootcamp会自动下载windows支持工具(这个要大概三四个小时)。重启安装即可。

 

二、生变

两个月后,我妹和妹夫反应每次启动windows都显示未激活,桌面黑色,非常丑陋。当时刚好去合肥参加一个好友的婚礼,回来时路过常州就去了他们家折腾系统。自以为是懂电脑的,激活个win7不是手到擒来吗,百度,下载了一个小马win7破解啥的,运行之,提示重启,然后就再也没有然后了。那个工具估计修改了部分启动信息,从而使得mac再也找不到了,也启动不起来了。还好上次下载好的win7.iso还在,还有时间重装一次windows系统,但是当天网络情况很糟糕,windows support下载了两个小时不见动静。所以放弃,直接安装裸windows7。重装完裸windows7后,因为没有windows下的bootcamp,触控板、键盘灯什么的都很难用,更糟糕的是我在整理硬盘时,”艺高人胆大“的乱搞,把mac os的盘也搞没了。然而这时已经半夜两点,只好灰溜溜的先暂时放弃了,还好他们能接着一个鼠标用win7系统。

 

三、完结

过年回家几天,有时间搞这事了,在回家前也做了一些前序准备。看到一些黑苹果的攻略,甚至下来个moutain_lion的dmg回来,并准备了两个移动硬盘。大年初三后,我妹他们回来,带了macbook,开始搞起。

1. 将他们现有系统内的有用数据一一备份,因为现有系统将格掉重装。

2. 在启动后,按住option键,进入系统选择后,设置wifi连接,使得系统能连上网络,我家网络是2M adsl。然后 command+R ,系统开始下载 一个叫recovery的系统, 大概要两个小时左右,下载完成后,进入recover界面在这里我自作主张的分了三个区,第一个是mac分区,第二三是ntfs系统。分好系统后,选择重新安装mac系统,然后就开始了漫长的下载时间,我是在一个夜间完成了这次下载(白天里要打麻将,一些小朋友会来我家看网络动画)。

3. mac系统最后终于装好了,然后再次进入bootcamp设置界面,制作windows安装盘,然后就是下载windows support软件,大概要四小时。

悲催的事情来了,重启加载windows安装盘后,windows提示我硬盘格式不对,分区分错了。。。前前后后十几个小时啊,白做了,瞬间有种欲哭无泪的感觉。

4. 在网上胡乱找攻略,有些讲安装黑苹果的攻略提醒了我。我按照网上攻略,将下好的moutain_lion.dmg在mac里制作成了启动硬盘(第二块移动硬盘),然后启动,发现进入的是recover,然后就是分区,发现这个recover居然无法分区,提示我无法卸载硬盘。之后又在我妹妹他们的充满期待的眼神中惭愧很久。继续搜索,终于找到了一个靠谱的解决方案,那个方案这么说的: 打苹果的客服支持电话。

5. 于是在晚上七点多,我拨通了苹果的支持电话,苹果的客服及其专业,态度极好,是我听过最专业的客服。有意思的是我描述我的窘境时提到了黑苹果,他很严肃的和我说,作为苹果客服,拒绝评论关于黑苹果的所有东西。

6. 推倒重来,按照客服的建议,重启后按住option,然后 commad+r 让系统重新下载一次recover( 此处消耗2小时),加载recover

7. 在recover里重新给硬盘分区,新分区策略是,只分一个区,就是mac分区,然后选择重新安装mac系统,在保证2M wifi稳定的情况下,会在6-8小时后,下载完毕,然后安装。

8. 安装好mac os后,用bootcamp工具,选择安装windows7,去除制作安装盘的选项,因为在上面步骤3里,已经制作好了windows安装盘,所以不用再制作了。选择下一步时,他会提示你mac和windows分区大小分布,在这里操作即可。

9.然后重启,安装windows7, 这次在安装后,我用oem7f7来破解windows7,这次破解没问题了,一颗小心算是放下了。  oem7f7百度第一个就对。

这十个步骤前后有四个月,而过年那次修正系统,前后花了我三天才搞定。

 

四、后记

此事告诉我们,别装二大爷,有麻烦时,还是得找客服。

跨域iframe通信的一次实践

星期四, 二月 28th, 2013

项目中需要在一个页面嵌入另外一个域名中的页面b,并在页面b中把数据传送回来。

跨域传输信息是很经典很老的一个问题了,网上的解决方案也不少。在网上找到了腾讯的同学分享出来的东西,总结的很好,也给了个几乎很好的成型库。遂用之,在本机测试没有问题。在发布前的测试时,发现问题了。在我的目标网页中无法生效,定位半天后,终于发现了问题。

腾讯的同学分享出来的东西,封装了一个叫Messenger的东东,他利用的原理是,主页面a, 嵌入的iframe为b,如果在b里面另外嵌入了一个iframe c,把c的src设置为 “about:blank”,  a和b都能访问和修改c的name。通过对c的name的修改来实现消息的传递。在ie6里面,他们的测试页面也能通过。但是在我的目标域名里,某域名做了一些安全设施(大汗,我也不知道是什么设置,该域名不为我所控制,也不便透露改这个域名),在该域名的页面里,js不能访问about:blank的ifram的name。所以这个库在这个域名下失效。后来再试了一下,在这个库的作者老家qq.com里,也有这样的安全策略。呵呵,略讽刺。

把现在,可以把这个模型简化一下,在一个页面,例如www.qq.com中,

第一步:添加一个iframe,

第二步:把这个iframe的src设置为 about:blank,

第三步:尝试访问这个iframe的name属性

在ie下,一般域名(例如baidu.com)在第三步时是可以访问iframe.name(上面结果里,是空)的,但是在某些域名(例如www.qq.com)里,第三步会提示你权限受限而有warning。

 

解决方案:

我是这么解决的,在iframe b里,在body最前面嵌入一个iframe, src是  a的url#resutl, 然后在页面a里面,访问ifr.contentWindow[0].location.hash 来的道result,这样只能传送字符串类型的数据而且大小也有限制,但于我而言,够了。

 

另外可能的解决方案: 在两个页面中各放入一个flash进行通信,略繁琐,有点大,不喜欢。

 

[附录]腾讯同学的库地址:  http://www.alloyteam.com/2012/08/lightweight-solution-for-an-iframe-cross-domain-communication/

居然是在美国的未备案主机,看来官方没给足够支持。