分类目录归档:个人杂碎

黑苹果折腾手记(一),准备阶段

早一个星期不知道为什么就很热血的折腾起黑苹果。之前觉得自己对于操作系统还算了解,包括linux,但是唯独没有试过Mac OS。之前自己一直比较偏向软件,然后偏向web方向研发,也去关注前端关注体验,也很想知道苹果系到底是以如何的体验得以吸引这么多用户。没有钱钱买白的苹果,就黑下吧……

废话完,介绍下我机器本身环境,笔记本,型号华硕A41e667id-sl,系列名字是K40ID,
CPU: Intel Core 2 Duo T6670
显卡: Nvidia Geforce GT320m
内存: 4G DDR3 1333Mhz  自己升级的
有线网卡 Realtek RTL8169
无线网卡 Atheros AR9285
声卡  Realtek ALC269

为什么要晒硬件呢,这是因为,折腾黑苹果这个“折腾”,很大一部分是在折腾硬件驱动,Intel系的东西弄黑苹果应该会比较顺利(至少教程是这么说的)。

对了忘了说一个纠结的问题,就是我那个已经非常满的320G的硬盘。除了win7,我的机器上还有装ubuntu(分区号12,还有分区号为13的swap分区),引导工具为grub,win7+ubuntu双启动菜单。我先是在ubuntu下虚拟机安装黑苹果成功,然后就迫不及待要在本机硬盘上装了。

为了腾出空间,我删了ubuntu下虚拟机中的xp和黑苹果,我还删了一堆东西,才有了大概25g左右的空间腾出来。有些人说黑苹果必须装在主分区,然而实践发现并不是这样的。另外,下面介绍一个分区相关工具gparted(http://gparted.org/),多语言,基于linux live-cd的方式启动使用。这个工具很有用,可以调整分区大小甚至移动位置(例如几个分区各能挤出一点空间,挤出来之后将这些已有分区移到一起,把挤出来的空间合并为连续的空间给新的分区,我就是这么干的),而且该工具号称是安全的,无损转换。(实际情况我调整过后,进入ubuntu和win7都要求扫描磁盘,win7下面的扫描还好像发现丢了几个目录)

关于黑苹果的安装来源,我是使用的经典的东皇2.2 雪豹10.6.3,而且我刻了盘。后面折腾过程中发现了一个工具叫做YUMI,这个工具可以用来制作启动u盘/移动硬盘等,他的亮点是可以引导各种iso镜像(我一度以为可以通过这个方式格了光驱/光盘的命),他利用了syslinux,对于linux系镜像可以自动解开文件并且引导内核,而对于一般的/未知的可启动iso则自动使用grub来做引导,有一个简单的gui程序方便的添加和删除iso镜像。

不过这个方式其实不能解决所有问题的,像是引导黑苹果的安装盘iso。安装黑苹果要求开启ACHI模式,不开的话会明显卡在安装盘的引导过程中(具体卡在那一句我没记,如果你也卡住了,上网查下就会看见说是ACHI的问题),很多主板bios默认ACHI设置是关闭的,显示的是兼容模式(compatible),对于我们现在笔记本电脑来说,硬盘光驱基本都是SATA串口连接,IDE基本绝迹。开启这个东西问题不大,对于windows,如果在安装系统之前没有开启ACHI,后面贸然开启,进系统就蓝屏。别紧张,先用兼容模式(关BIOS ACHI设置)进入win7后修改系统注册表,禁掉MsAchi驱动的启动就好了,具体方法自己搜索。Ubuntu到没有这个问题,开启ACHI一切正常,还解决了之前的一个问题。我之前Ubuntu重启的话不能断电,关机倒是正常,单单是重启会卡在机器完全停了,电源灯还亮着这个情况。

扯回去上面说的移动硬盘启动,直接引导ISO不能解决所有问题。这正是因为ACHI,usb接口的启动U盘/移动硬盘,我搜了很久都没发现他们跟ACHI能扯上关系,所以理所当然有出现了卡住的情况。对于一般的Bootable ISO,我还是推荐用移动硬盘启动引导这种方式,一来移动硬盘读写比较快,二来省了刻盘。

没想到这准备阶段都能写千把字,为了控制文章长度先打住,未完待续……

见识了电信流氓插iframe+分析解决方案

这两天回了家从感觉浏览器行为有些怪异,有些熟悉的网页无故出现了额外的竖直滚动条,有时候是两个,有时候甚至到了3个!我是用的是chrome浏览器,像现在wp后台添加文章的页面就是有3个竖直滚动条的。

首先毫无疑问wp后台是使用的iframe的结构,我们来把滚动条拉到末端,发现页面底部无故多出大片空白。最里边的滚动条拉到底部是正常的wp的最底部,另外两个滚动条到底部之后呈现的空白块又是什么呢?通过chrome右键的审查元素我们发现,我们的页面被嵌入了一个iframe之中,而正因为文章编辑这个页面本身有一层iframe(src:post-new.php),这里被挂了一次iframe,加上wp后台边栏这一层又被加了一次iframe,所以出现了3个滚动条。

进一步深入观察发现,被流氓过的页面大概呈现这样的结构<html><body><iframe><iframe><script></body></html>,其中第一个iframe的src正是你真正要访问的那个页面的地址,而第二个iframe的src是空白页,而重点就在于后面的js。完整的劫持页面模板可以看这里电信流氓(这是以虾米网为样本的,换成其他的网站只会变第一个iframe的src)。

通过我水水的前端水平,起码我可以看出:第一,这个js请求了某“logo.jpg”(不要被这寻常的名字和后缀名骗到了,后面给他传参数呢),并放在了第二个iframe中(也就是src是空白页的那个)。第二,在请求logo.jpg的时候传递了一些参数,分别是navigator.appMinorVersion(浏览器次级版本),screen.availHeight/Width(浏览器用户区高度宽度),screen.height/width(分辨率高度宽度),screen.colorDepth(屏幕色深)。剩余的代码有一部分是为了对这种iframe劫持做出的修正,包括form和连接的target为空时的修正,剩下的看不懂了。

从请求前面的这串http://202.105.165.211:4022/logo.jpg?p=,我们得到一个ip,经查这是中国电信的ip,而且是我所在地的地方电信,那么我就想问一句电信你想干嘛呢?收集用户数据?另外我联系到了电信另外一个很2b的东西叫做绿色上网。绿色上网可能是个好事但是能做成这么2b的我还第一次见,我也不知道为什么w3cschool你也要说是不良网页然后就跳转屏蔽了。

而且跳转到的这个页面的ip地址202.115.165.218和上面logo.jpg所在的202.105.165.211明显是一伙的哦。而且有一个很2b的证据是,这些被绿色上网拦截的页面都是载入到差不多才跳转的哦(不像撞墙那样子直接就挂了),所以综合判断这段js加载的logo.jpg应该和绿色上网有着莫大的关系,这样一说好像这货就正义了很多似的,“先加载判断是不良网页才屏蔽哦亲”,这个做法貌似比墙要人性化一些只不过手段比较拙劣,但是你怎么解释你收集我的显示器/浏览器的信息?莫非浏览器版本低或者屏幕太大了也算是不良网页的评判标准?我现在姑且把你定义为绿色上网的同时顺手牵羊收集用户的数据。

另外这个被插iframe造成的额外竖直滚动条的现象在页面刷新之后会消失,这个也符合绿色上网检测的要求。这个做法在外观上还导致了第一次网页加载时页面title无法正常显示(至少chrome下是这样),因为劫持后页面没有head区更加没有title段。那么对于这个这么流氓的东西我们该怎么办呢?

第一,我们让我们的网页跳出电信的iframe,其实就一句js就搞定,可以搜搜“防止 被iframe”,理论上设计上不需要被iframe的页面都应该加上一句跳出iframe的js以防止别人使用iframe非法引用你的页面。核心其实就是一句if (window.top != window.self) {window.top.location = window.self.location;}

第二,如果是绿色上网的问题,找电信去,表示你的强烈不满和严正干涉,这项业务应该是可以关的,当然了,也听说有很多人并不是绿色上网的问题也被电信插了iframe弹广告/劫持不存在域名跳转114之类的,搜索“流氓电信 logo.jpg”或者电信dns劫持之类的关键词立得。

新年就要到了没想到还有一件这么蛋疼的事情可以让我吐槽,阿黎在这里祝大家新年快乐撒~

#暨大离线# windows平台下面的静态文件web服务器选型

今天下午和晚上在做暨大离线的一些准备,主要测试了一些东西

离线下载,顾名思义你离线,服务器帮你下载,那么服务器下完之后还得给你传,这里采用什么传输方式呢?

一开始我有考虑使用ftp,但是发现相比起http下载,ftp还有很多人不会用,如果这个局域网过程仍然采用http下载,对于用户来说会不会比较无痛呢?

于是我开始测试服务器用的web服务器软件,服务器这边目前是win2k3环境(至于为什么,后面文章再有详细介绍)。

这个服务器承担让用户取回要下载的文件的这么一个角色,只需要对静态文件提供http下载即可,不需要脚本支持。

Nginx在windows——杯具!

一开始我测试了windows版本的nginx,nginx在linux上面是个很不错的服务器软件,有低资源占用,抗并发能力好等特点。但是到了windows平台上就坑爹啊~~这一点你还不能怪nginx的开发者,实际上C语言可以为Windows平台编写软件,linux也没有例外。程序本身的逻辑应该是跨平台的,而在具体与系统打交道(调用系统api)的时候才有差异,这个差异有很多方面,包括内存管理、进程管理、文件系统、网络控制等方面。而一个优秀的开源服务器软件,nginx,在windows下,是在这次测试中表现最渣的一个。对于同一个普通二进制静态文件,局域网内客户端开5线程下载平均速度在1mb/s左右,峰值可以达到1.5mb/s,速度很不稳定。

Apache在windows——仍旧杯具!

第二我测试了Apache,Apache作为市场占有率第一的服务器软件,在windows平台上也有比较完善的版本。我是从官方网站下载的2.2stable版安装的,还是跟上面一样的那个文件,一样的客户端一样的5线程,下载平均速度1.3mb/s,峰值能到1.5mb/s。速度比较稳定,不过Apache的个东西,性能不会是最好的,apache和nginx最大的不同是,apache使用了每个请求一个线程的阻塞I/O模型,nginx使用了单线程的非阻塞I/O模型,关于apache和nginx之间的讨论还有很多,我比较偏向于把apache和nginx组合来使用(明显是说在linux平台上),这样他们两个可以互相取长补短。

IIS不用说肯定是在windows——居然能跑这么快!坑爹啊

最后我尝试了IIS,IIS的配置过程看起来非常轻松方便。测试同一个文件,额,什么情况!这win2k3上面的iis6,居然让客户端的下载速度平均值达到了2mb/s,峰值能到2.3mb/s。搜了一下网上很多人都有说这个问题,在微软的windows上面就他自家的iis跑得最快了,别的都是渣渣。

就这样这个web服务器软件就暂时选定了IIS吧,是那个我之前相当鄙视的IIS,总的来说其实是自己对于IIS没有很多的认知。IIS怎么说市场份额也是排在第二的(Apache比它大几倍的稳居榜首),另外有一点,国内很多入门级虚拟主机都是windows+IIS+ISAPI来支持PHP的,他们也不会在windows上面弄apache,这一点也能说明一些问题。当然了,这是一片神奇的土地,国外又完全不是这么回事了,国外一般人不会用Windows做服务器的操作系统(是服务器不是pc),包括费用等方面的考虑(我觉得更大的原因是——用不着)。