Archive

Author Archive

The Trick for Accessing IPv6 Network via a Old Router

March 6th, 2010 Iron_Feet 19 comments
分享家:Addthis中国

由于本人在网络协议这方面学艺不精,因为本文很多结论并不能给出合理的解释。但是本人可以保证本文所有结论都是本人实验所得,毫无水分~
以下是实验环境,但是本人不能保证在别的硬件和软件环境下可以达到相同效果。

实验环境:

  1. 操作系统:Windows 7 旗舰版
  2. 计算机:Dell Inspiron 6400n
  3. 路由器:D-Link DI-624+A
  4. 其他:交换器或者集线器或者是小型分线器,和网线若干
  1. 起因:
    GUCAS宿舍上网时需要账号的,账号的收费形式是按月包流量的。由于现在我和舍友白天很少在宿舍,因此有很长一段时间都无法将账户流量用完,造成了不必要的浪费。

    于是我们决定两人合用一个账号。但是GUCAS账户在登陆后是会暂时与GUCAS宿舍的IP进行绑定。因此每次我登陆账号上网的话,我舍友只能通过我的PC所搭建的代理来访问网络。
    switcher
    考虑再三,我买了个路由器将我和舍友的PC通过一个宿舍IP连接GUCAS网络。
    router
    如今IPv6真是好流行的东西,在各大高校开始测试。最爽的是GUCAS的计费系统还不支持IPv6,在GUCAS访问IPv6网络资源是无需登录账户的。但是IPv6也是个新兴事物,目前除非最新系列的路由器,别的路由器都不能很好地支持IPv6。

    为了让我和舍友在使用路由器的情况下也能使用连接IPv6,看来一阵摸索是免不了的了。唉!

  2. 摸索:
    刚搭建好上图所展示的网络的时候,我就遇到了一个很奇怪的现象:IPv6网络其实是可以访问,只是IPv6的域名无法解析。比如说:我想访问我经常用来下载东西的IPv6 BT站——六维空间(此站只能通过IPv6访问),但是当我在hosts文件中添加此行

    2001:da8:9000::232 bt.neu6.edu.cn

    六维空间即可正常访问了。

    由此可见,导致连接路由器的PC无法正常访问IPv6站点的主要原因,并不是IPv6网络的无法访问,而是因为路由器没有对IPv6支持的不完美引起的PC无法正常获得IPv6 DNS。

    一个比较直接的解决方法,就是在PC的网络连接属性中设置静态IP,然后手动添加IPv6的DNS。但是设置静态IP毕竟是个麻烦事,万一哪天把本本带出去上网,拿回来又要重新设置。

    此时此刻一个新的问题出现于我的大脑,我如何才能方便的获取到IPv6的DNS。

    首先分析一下路由器
    routerport
    从上图可知:WAN口用来连接GUCAS网络的,这个端口使用GUCAS网络动态提供的公网IP,而LAN口用来连接局域网内的PC(即我和舍友的PC)。这些LAN使用的是由DHCP协议动态分配或者手动分配的私有IP。

    由于此路由器是支持IPv4的,对IPv6支持的不好。因此在分配IP的时候,LAN口的PC的IPv4网关和IPv4 DNS都指向了路由器的NAT技术的Inside Global IP address,即192.168.0.1。但是IPv6的没有定义。

    我们可以大胆的猜测:如果不考虑WAN口,剩下来的所有LAN口就相当于是一个交换机。所以我试试看地将连接GUCAS网络端口的网线插到了LAN口上,WAN口就置之不理。
    ipv6
    果然不出所料,由于交换机原理,我和舍友的PC都自动获取到了IPv6的网关和DNS。显然对IPv6的访问已经无障碍了。IPv6域名也可以被顺利解析了。

    虽然IPv6的访问问题解决了,取而代之的是IPv4的访问问题了。因为路由器对IPv4支持很完美,所有IPv4的连接都以NAT技术的Inside Global IP address为网关和DNS通过WAN口出去的。但是由于我将WAN口置之不理了,所以IPv4必然不可能正常访问了

  3. 解决方案:
    目前我唯一能想出来的比较好的解决方法是如下图所示:
    solution
    这样子IPv4和IPv6的网络都可以顺利访问了。

PS:
除了http://bt.neu6.edu.cn,您也可以用http://ipv6.google.com来测试您的机器是否能够正常访问IPv6。
当然在做上面实验的时候,请先确认您的系统已经安装了IPv6协议。


以下更新于 2010年3月7日16点47分
同时确认网络供应商提供IPv6的接入。

Categories: IT Tags: ,

Back to Beijing

February 21st, 2010 Iron_Feet 16 comments
分享家:Addthis中国

年初三就匆匆地回到了北京。这个春节应该是我在老家呆的时间最短的春节了。

以前的过年基本上都是见见老同学,然后宅在家里等着春节到了,看看春晚、走走亲戚,然后年就这么无聊的过去了。

今年由于 Dorothy 的同行,过得很不同。在室内的时间和在室外的时间比例如同颠倒了一下。
虽然饱受了20多小时该死的慢火车的煎熬,一到苏州我们并没有休息,当天就去了拙政园和狮子林。随后的几天,我们苏州的一些著名园林游览一遍,如留园、虎丘、寒山寺等等,同样也去了苏州周围城市玩了玩。

我一直是一个对园林不太感冒的人,这次也借亲爱 Dorothy 的光让我把家乡的园林走了一遭,嚯嚯

这年头园林景点的照片网上太多了,高手们各个比我拍的水平高。图就不上了,别没欣赏到啥美图,反而影响了朋友的浏览速度。

很显然,这篇不是技术文,那就再扯点春节的事情吧。

  1. 春晚
    虽然很多人都骂春晚烂。我个人是挺不能理解的。觉得它烂,那看它干嘛啊?既然知道它烂,那每年还看它,看了还继续骂它烂。这不是活该自虐吗?

    年年难办年年办。办一个晚会,本来就是个很难的事情,众口难调,更何况这还是一个面向全世界中国人以及华裔的节目,那更是难上加难了。

    我个人觉得今年春晚的节目(仅限节目,不谈论其他方面因素)还算不错。小虎队的出现,我的确是小小感动了一下。至于老赵的小品,和去年感觉一样:本山真是老了,越来越不行了,不过他的确带出了几个不错的。我觉得本山旁边那个相亲的光头表演得很不错!

    最让我觉得蛋疼的是那首叫《亚克西》的歌,其幽默之处,看官们自行品味。第一次听到这首歌是在韩寒的博客,很意外的是这首歌还真上了春晚,大跌眼镜!

    春晚一年一年办下来,越来越满意的肯定不是观众,应该是广告商。这活脱脱赤裸裸的广告,真让我不禁在怀疑:是我智商越来越高了,现在内嵌广告一眼就看出来了?还是广告做的越来越赤裸了,弱智都不用动脑筋就能明白。

    这份赤裸裸,在小沈阳那张口闭口的“搜狗”算是体现了淋漓尽致了!

    今年看春晚和往年的习惯,完全没有改变:戏曲类节目表演的时候通常就是我看春晚间隙用来上厕所的时间。

  2. 鞭炮
    小时候每年春节,年三十的夜晚基本上是很难入眠的。外面鞭炮声太响,根本没法睡。而如今年三十的鞭炮声越来越弱了,年初四的鞭炮声越来越嚣张了。

    看来在这个拜金的社会,财神越来越受欢迎了。年初四夜晚招财神的鞭炮对于老百姓们来说放着更有意义了。年三十大一岁就大一岁呗,没什么大不了的!

  3. 孩子
    拖春节的福,亲戚们聚了下,我又看到了我亲爱的小外甥女。看着她都会走路了,不禁觉得我原来也是舅舅了。不知道等再过些日子,她能自己张口叫我“舅舅”的时候,我作何感想-_-!

  4. 天气
    今年最让我不爽的就是天气了,我跑哪里,哪里就降温下雨又下雪,悲剧的很。我这排队买票折腾了出来的感冒一个春节都没有康复,还搭上了个嗓子疼加咳嗽。有时候又因为室外太冷室内太热,猛然上火,飙下鼻血。真是惨烈~

  5. 匆忙
    每年寒假都是如此,很晚回家,很早就走。今年走得更好,加上有几天的在外地,那就更是匆忙了。没法和一些老朋友聚聚,真是过意不去。尤其是兔姐生了孩子后,我一直没有时间去看看小兔子,唉~真想抱抱小兔子>_<

  6. 幸福
    去年过年回家,让我着实想念远在北方的 Dorothy ,今年不同了, Dorothy 一直在我身边,还是蛮开心蛮幸福。这些开心幸福可以把前面提到的不爽全部咔嚓掉,嚯嚯

别人都说,过了元宵才算是真正过完了年,看来现在拜年还不算太太迟。
在这里祝朋友们新年快乐,虎虎生威!

Categories: Essay Tags: ,

Can HTML5 Easily Be a Standard?

January 28th, 2010 Iron_Feet 11 comments
分享家:Addthis中国

前几天和lulu(曾经是一个Flash程序员)聊天,聊了不少关于Flash,几乎提到的都是Flash的倒退之势。

如今Flash已经出现了明显的疲态,无论是网络还是桌面,Flash的应用已经远远不如前几年那么火爆了。当年红遍网络界的“闪客”现在已经快销声匿迹了;虽然Adobe曾高调发布了Flex和Air,但是并没有在根本上扭转Flash的颓势!目前Flash最火热的Flv所占有的份额,也开始被同样炫却更易实现的Silverlight所蚕食。

当然在网络这种技术间的拉锯战是很平常的,因此在线视频技术的也一样平常。Flv和Silverlight所带来的在线视频,谁胜谁负都需要很久才会稍显端倪。毕竟都有其存在的必要,都不会那么容易被淘汰出历史舞台的。但是眼前有一样东西的出现正在撼动他们所存在的意义,那就是HTML5。

相信只要稍微关注一下IT新闻的朋友们,都会知道HTML5即将成为W3C的标准。针对于HTML5,被提到最多的就是其所支持的一个新标签——Video。

目前为止,我们如果希望在一个不支持HTML5的浏览器中呈现视频就需要通过一些第三方应用、扩展或者外挂来实现,例如:Internet Explorer的ActiveX、Firefox的Extension、Chrome的Extension等等。针对于不同的视频格式,Flv则需要浏览器具有对Flash的支持,WMV则需要浏览器获得Windows Media Video codec的支持,以及Real Media需要的H.264。而我们平时所接触到的视频格式远远不止我前面所列举的这些。

而Video似乎让事情变得简单了很多。我们只要几句HTML代码,无需要任何第三方就可以让支持HTML5的浏览器播放视频了。
拿Mozilla公司的一个页面的源码分析一下。
其中关于Video标签的代码如下(为了方便理解,我做了相应的精简):

<video> 
	<source src="http://videos.mozilla.org/firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL.ogv" type="video/ogg; codecs=&quot;theora, vorbis&quot;" /> 
	<source src="http://videos.mozilla.org/firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4" type="video/mp4" /> 
 
	<object type="application/x-shockwave-flash"
              style="width: 640px; height: 388px;"
		data="/includes/flash/playerWithControls.swf?flv=firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4&amp;autoplay=false&amp;msg=Play%20Video"> 
 
		<param name="movie" value="/includes/flash/playerWithControls.swf?flv=firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4&amp;autoplay=false&amp;msg=Play%20Video" /> 
		<param name="wmode" value="transparent" /> 
	</object> 
 
</video>

上面的代码其实不难理解。如果该浏览器支持HTML5的话,浏览器就会将该部分渲染出来

<video> 
	<source src="http://videos.mozilla.org/firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL.ogv" type="video/ogg; codecs=&quot;theora, vorbis&quot;" /> 
	<source src="http://videos.mozilla.org/firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4" type="video/mp4" /> 
</video>

来实现视频的播放。
如果浏览器不支持HTML5的,浏览器就会渲染此部分

	<object type="application/x-shockwave-flash"
              style="width: 640px; height: 388px;"
		data="/includes/flash/playerWithControls.swf?flv=firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4&amp;autoplay=false&amp;msg=Play%20Video"> 
 
		<param name="movie" value="/includes/flash/playerWithControls.swf?flv=firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4&amp;autoplay=false&amp;msg=Play%20Video" /> 
		<param name="wmode" value="transparent" /> 
	</object>

利用Flash来播放视频。
具体Video标签的细节还可以参见该页面

而目前为止,对于普通用户而言在网页体验上是没有什么本质区别的。同时让人们觉得随着HTML5逐渐被支持,在线视频军阀割据的局面就会从此终结,多么欣欣向荣的景象啊~

但是依我看,这些都只是一个假象。从很多方面表明,HTML5的道路并不是很好走的,也许我们甚至可以说,是非常难走的!

  • 浏览器的演变
    显而易见,Video标签的存在使得浏览器不需要任何第三方插件或者扩展的帮助就可以支持视频播放。所以浏览器必然需要自身集成必要的视频解码器。而这必然会引起一些问题。

    1. 安装文件的臃肿
      现在游戏、IDE等等大型软件的安装包已经是G级别了,我们已经习惯了。至少我们上网必备软件之一:浏览器的安装文件并不大。然后现在HTML5的标准化,却需要浏览器集成一些视频解码器,那势必会让浏览器的安装包变得更大。而且随着支持格式的不断增多,安装文件也会无限制的增长。通常我们可以将下好的安装文件保存下来,以便以后重装系统后可以快速的安装上浏览器。但是类似于Chrome安装文件,仅仅是一个很小的installer,每次安装它都需要在线将安装文件下下来,随着浏览器安装文件的越来越大,这对于用户来说真是个噩梦。当然Chrome的确是有离线安装包的,但并不是每个用户都能找到的!

    2. 运行效率
      本来交由第三方插件或者扩展的视频解码工作,现在被浏览器自身所取代了,这必然给浏览器增加了工作负担。如果不尽快出现一个更好的引擎的话,相信浏览器的性能会越来越低。

    3. 版权问题
      到目前为止,我们周围已经出现了很多浏览器了。这已经对网络前端开发人员构成了极大的麻烦。网络前端人员需要在各个浏览器之间的兼容方面浪费很多时间。我认为Video标签将会引起新一轮的兼容性问题。

      在浏览器需要集成各个视频解码器的时候,版权问题就成为了一个新的话题。各大浏览器开发商如果要集成视频解码器,购买是一个必须的流程。而且版权问题所关系到的并不仅仅是钱的问题,还有存在着IT企业之前的利益问题等等。最近关于Video标签引起的版权问题已经层出不穷了,如:Mozilla始终不支持H.264Ogg Theora无法成为标准

      所以本来服务端放一个视频文件,前端页面一个tag就能解决问题,再次变得复杂化了。前面介绍的代码就能看出一些端倪。

      	<source src="http://videos.mozilla.org/firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL.ogv" type="video/ogg; codecs=&quot;theora, vorbis&quot;" /> 
      	<source src="http://videos.mozilla.org/firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4" type="video/mp4" />

      这段代码中,相同的视频却用了两个源文件。那是因为Mozilla公司无法保证别的开发商开发的浏览器必然能支持ogv格式或者是mp4,所以他添加了两个源,以保证浏览器可以在这两个文件中选择自己能支持的进行播放。也许还会出现更悲剧的情况,就是当某个浏览器对这两种编码的解码器都没有集成,即使他支持HTML5,他也只能运行以下后备Flash来播放视频

      	<object type="application/x-shockwave-flash"
                    style="width: 640px; height: 388px;"
      		data="/includes/flash/playerWithControls.swf?flv=firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4&amp;autoplay=false&amp;msg=Play%20Video"> 
       
      		<param name="movie" value="/includes/flash/playerWithControls.swf?flv=firefox/3.6/meetfirefox/FF3.6_Screencast_FINAL_640.mp4&amp;autoplay=false&amp;msg=Play%20Video" /> 
      		<param name="wmode" value="transparent" /> 
      	</object>

      本日志写到这,问题已经开始慢慢浮出水面了:HTML5的Video标签真的就能成为在线视频的一种改革了。如果Video标签的格式支持迟迟不能有个标准,又或者各大浏览器开发商依然和过去一样不愿意支持标准。对于网站的搭建反而是有弊无利。

      也许各大网站并不会很积极的去支持HTML5,原因很简单:以Youku为例,不支持HTML5,他可以很自在的仅仅用FLV一种格式的视频,通过Flash调用就搞定了;而为了支持HTML5和该死的浏览器对Video标签(目前看并没有任何浏览器的Video标签支持FLV格式)的不同情况,他既要继续沿用FLV格式结合Flash的方法,还有准备一堆相同视频的ogv、mp4、avi、rmvb文件。何苦呢?HTML5即使W3C认定为标准了,如果他不够好,别人也未必会遵守,XHTML2的夭折都是一个很好的例子。

      也许有人会说,让浏览器使用用户安装在本地系统的解码器。我会反问“如果用户本地也没装相应的解码器呢?”,“就算用户安装了解码器,让浏览器调用本地解码器,那还要Video标签干嘛,直接和以前一样调用扩展或者插件不是更好?”

  • 站点的焦虑
    对于站点的焦虑基本上存在于两个方面一个是保密的问题,另外一个是技术上的问题。

    1. 保密性
      很明显很多视频网站的视频只允许看,并不允许下载的。虽然的确有很多方法可以达到下载这些视频的目的,但是毕竟这是采取方法而实现的。并不是想下就能下的。这就好比,一个windows系统,它有反盗版机制。即使现在盗版横飞这也是避免不了的事情,但至少它有反盗版机制。
      但是如果这些视频网站使用了Video标签之后呢,所以的保密就不存在了。用户只要很简单的右击浏览器,选择查看源代码,视频的地址就呈现出来了。这种对于一些很注重回头率的视频网站简直是当头一棒。这类视频站点怎么可能会傻乎乎地去支持HTML5?当然随着HTML5的进化,也许以后Video标签会支持隐藏路径,但至少现在隐藏不了。

    2. 技术问题
      HTML5现在无论是在定义上还是在技术上的不成熟都会给站点开发人员造成极大的困难。
      以流媒体站点为例,他们播放的视频并非是一个视频文件,而是基于MMS的流媒体。虽然MMS流式输出的还是ASF格式的文件流,但是他并没有一个确切的视频文件URL。以目前来看,Video标签并不能支持这类流媒体协议,这也表明了流媒体依然要依靠插件和扩展来实现!

写到这,又一个废话连篇的日志诞生了。就写到这吧,都是对HTML5的一些分析。随着HTML5的发展和更新,可能会走得更好。当然我也希望他能走得很好,也希望各大浏览器开发商能遵守一下标准,不要让太多的前端开发人员把时间都花在兼容性上了。

PS: 本文仅是对现阶段的HTML5进行了简单分析。HTML5正处于发展阶段,很可能明天本文的一些论断就不成立了!
本文目前的讨论也适用于HTML5另外一个Audio的新标签。

Categories: IT Tags: , ,

One Alternative Method to Surf

January 18th, 2010 Iron_Feet 8 comments
分享家:Addthis中国

不知是我心理敏感,还是事实如此。突然觉得最近我所处的网络世界老是出现道路故障,而且这一旦出了故障还没人来维修。这着实让我不能忍。

现实生活中,遇到交通故障,我们所做的要么就是不去目的地,或者就是绕道而行,费时费力费财。网络世界同样如此。而且从故障的缘由而言,也不指望有关部门会修复这个交通故障了。

我真是无奈和无语,为了能顺利到达我的目的地,我不能不考虑利用“Tunnel”绕道而行了。

通俗地说,网络隧道(Tunneling)就是:利用一种网络协议来传输另一种网络协议。
假设,我的PC因为一些原因无法通过http访问站点A;主机B可以无障碍的顺利通过http访问站点A;但是我拥有主机B的SSH权限。这样子SSH tunneling的使用就变得非常必要了。

Wiki提到:

An SSH tunnel consists of an encrypted tunnel created through an SSH protocol connection. Users may set up SSH tunnels to tunnel unencrypted traffic over a network through an encrypted channel.

SSH Tunneling就是将我的PC的http请求利用SSH借由主机B传输到站点A,然后站点A返回的信息在利用SSH借由主机B返回到我的PC。

我利用的是Hostmonster的SSH帐号来实现。有Hostmonster空间的朋友并不能马上使用其提供的SSH帐号,需要激活一下。
激活过程如下:

  1. 进入hostmonster的Cpanel后台,进入“SSH/Shell Access”,点击那个“Ticket”,内容写上“Please enable SSH for my account.”
  2. 你会在你填写的邮箱中收到一封邮件,大体内容就是希望你上传身份证的照片。你只要直接Reply这封邮件,附件中附上身份证照片就OK了。
    这里需要注意的是,很多朋友会因为hostmonster是英文网站而用自己的英文名填入注册信息,而这个名字和你的身份证名字是不匹配。因此您需要将您注册信息的姓名先修改为拼音的名字,再回复那个邮件并附上身份证照片。
    然后静待审核通过,会有个回复邮件,里面包含了域名、用户名和密码。这时,您可以再将您的注册信息改回您的英文名。
    此时,您再进入“SSH/Shell Access”,那个“Ticket”的按钮消失了,取而代之的是您的SSH帐号。

接下来就是如何使用SSH隧道了。其实很简单
假设Hostmonster给你的帐户如下:

Hostname: abc.com
Username: abcabcab
Password: Your Account Password

您可以通过该命令实现

ssh -N -v -D 8080 -l abcabcab abc.com

此时,您可以将您的浏览器Socket代理设置为 127.0.0.1:8080 。您就可以通过SSH隧道来浏览一下因为故障而不能访问的页面了。

经过我的实验,基本上很多站点都可以访问了,唯独Facebook非常诡异,依然不行。此站非常奇怪,好像对于一些IP段进行屏蔽或者是别的原因,我曾经尝试过用GAE也无法访问。但是现在大多数访问我也就满足了。

由于上面的命令是Shell命令,因此在Windows下的朋友需要借助于一些其他工具。我比较推荐Cygwin。虽然Cygwin经常不是很稳定,但是很幸运的Cygwin在SSH的表现上却极其的稳定!

如今网络因为一些原因频频故障了,不知道接下来是什么会故障呢?也许为了让我以后不会屡屡因为故障而受到打击,我应该天天在脑中想象一下以后所有电子产品都故障的场景。也许那个时候,我们可以回到小时候穿着开裆裤和一群孩子打打弹珠、玩玩洋画、拿瓦片打打水漂的日子了!但是同样是打打弹珠、玩玩洋画、拿拿瓦片打打水漂,真的是同样吗?我们还会像孩提时那么开心吗?或者说我们的孩子会像我们小时候玩这些东西时候那么快乐吗?

我突然发现我还是不去想象了,因为想象这些比我因为故障受到的打击要更大更大……

PS: 本文提到仅仅是另外一种访问网站的方法,并不是翻墙方法的介绍!
写该PS的原因有2:1、由于环境原因,周围的翻墙高手太多了,翻墙方法层出不穷,我不敢号称我这个是翻墙术。2、本站站长是合法公民,只介绍和交流技术,不介绍翻墙方法,嚯嚯~


以下更新于 2010年1月19日20点43分
受到Solrex启发,尝试了一下 Remote DNS Resolve。

很悲剧的是IE代理不支持Remote DNS Resolve,直接导致只要使用IE代理的浏览器都无法支持,我最爱用的Chrome也无法幸免。Opera没试过。Firefox倒是可以启动该功能,具体方法如下:

  1. 在地址栏输入“about:config”,回车
  2. 找到“network. proxy. socks_remote_dns”该项,将其修改为true即可。

以下更新于 2010年1月23日13点38分
前几天抱着试试看的心情,用了 Chrome 的 Proxy Switchy 插件。发现通过该插件,设置 Socket 5.0 的代理,可以支持 Remote DNS Resolve。太爽了!

Categories: IT Tags: , , , , , ,

Disney Buys Marvel

January 7th, 2010 Iron_Feet 10 comments
分享家:Addthis中国

从小我就是个动漫迷,同样我从小就喜欢绘画。越看动漫,我越喜欢绘画;越绘画,我就越喜欢看动漫。

时间久了,其实我现在都不知道我是先喜欢上动漫的,还是先喜欢上绘画的。

现在事情多,绘画的时间越来越少,甚至到现在的极少。但是我经常还是会拿着笔在白板上,可惜已经越画越丑了,真是印证了一个成语——用进废退!

想起小时候,国内的动漫最出名的还是上海美术电影制片厂的作品,如“三毛流浪记”、“孙悟空大闹天宫”、“阿凡提”等等,相信和我差不多年纪或者比我年长的朋友们应该都知道。当然也接触了不少很棒的国外动漫,如“猫和老鼠”、“米老鼠和唐老鸭”等等。这些天真可爱的动漫形象,伴随着我的童年。

而说起这些国外的卡通形象不得不提到迪斯尼(Disney)公司。时至今日,迪斯尼公司依然为我们奉献很多很多的值得一看的动漫。

早期的时候,迪斯尼奉献给我们的基本上都是很Q很夸张的或者拟人化的卡通形象。

Bolt

上面这张图就是典型:人类造型Q版夸张,狗狗被可爱的拟人化。

说到迪斯尼,就不得不提到另外一个动漫公司——惊奇(Marvel)公司,该公司和迪斯尼的路线恰恰相反。惊奇公司的动漫形象主要是以符合现实形象为主。

即使是拟人化形象也非常轮廓分明,比如说“变形金刚”;一系列的完全和人类同样形象的宇宙英雄和科幻英雄——超人、闪电侠、蜘蛛侠和金刚狼等等,都是出自Marvel公司的手笔。

marvel

两个公司的动漫之战的硝烟一直燃烧着。到了差不多我初中的时候,迪斯尼率先拓展动漫路线,开始涉足一些非Q版形象。比较有代表性的就是迪斯尼在98年出品的“花木兰”,在该片中里面的花木兰和李翔的形象就已经和早期的作品更像真人了(当然和Marvel的风格还是差很多的),至少证明迪斯尼开始改变了。

mulan

与此同时,惊奇公司一直做的就是不断地推出一个一个崭新的令人激动不已的科幻英雄。但是惊奇公司的辉煌就在于即使他麾下的超级英雄已经数不胜数了,但是新推出的超级英雄依然能刻在动漫迷心中,没有任何重复和多余的感觉。我承认我也是个科幻迷,每次这些科幻英雄的能力我都为之惊叹,而这所展现出来的惊奇公司的创意同样能让我为之惊奇!

迪斯尼动漫所展现梦幻和童趣,惊奇动漫所展示的正义和震撼,我一直伴随着他们成长着。
他们已经是我生活中重要的兴趣和娱乐!其实通常我并不太会将我从小围绕的东西拿出来作为聊资,但是最近的一个新闻让我平静的心起了波澜:迪斯尼以43亿美元收购惊奇漫画

说实话,这两个公司的风格实在是大相径庭。我无法想象他们的结合是好是坏。以人为例:性格非常不同的两人,要么就是因为性格差异天天吵架直至决裂;要么就是因为互补反而相互影响成为密友。
不知道这两个公司,是两种风格互相学习影响,出现更好的动漫;还是因为风格的迷失而从此一蹶不振呢?这个我们只能拭目以待的

PS:非常推荐朋友们看一下上文提到的“花木兰”以及“花木兰II”,都很棒。感觉一下国外公司是怎么通过动漫来诠释中国历史中的巾帼英雄的。

Change of Domain Name

December 29th, 2009 Iron_Feet 19 comments
分享家:Addthis中国

想起刚刚搭建“风云阁”时候,就有位老站长和我说过:建站要有耐心,要经得起折腾!这段时间我终于感受到了。

最近由于一些基本大家都能猜到的且不可抗拒的原因,我考虑良久决定,将风云阁域名从 iron-feet.cn 更换为 iron-feet.com 。
域名的更换给各位朋友们带来的不便真的是非常抱歉。但是为了能和朋友长久地一起交流技术和分享生活的喜怒哀乐,不得不出此下策。

目前通过 iron-feet.cn 访问风云阁,会自动跳转至 iron-feet.com。该跳转会一直保持到 iron-feet.cn 域名过期。但是还是劳烦各位朋友们做点更改。

  • 将本站作为友链以及加入收藏夹等等的朋友们,请各位更新一下您的地址。我在此不甚感激。
  • 利用订阅器订阅本站的朋友们,如果您是通过本站的Feedsky和Feedburner地址来订阅的,那就无须任何改动了。如果您是通过本站前域名 iron-feet.cn订阅的 ,那请更新一下订阅地址。您可在本站右侧侧边栏获得订阅地址,非常感谢!我会依然尽所能地认真的维护本博,和朋友们分享点滴和交流技术。

目前为止,我认识的部分站长和博主都纷纷开始更换域名了。因此我相信目前想更换域名的应该不占少数。接下来我会就更换域名一些注意事项列举一下(以下都是以本站为例 ):

  1. 域名的更换:
    进入Wordpress的后台,Setting->General,将WordPress address、Blog address里面的 http://www.iron-feet.cn 改为 http://www.iron-feet.com
  2. SEO问题的解决方法:
      你需要让搜索引擎知道你的站点更换域名了,

    1. 根据Google官方的说明:

      If you’ve moved your site to a new domain, you can use the change of address tool to tell Google about your new URL. We’ll update our index to reflect your new URL.

      如果您用的是主机是支持URL Rewrite的话,可以通过在.htaccess添加这么几行来实现(多谢Solrex的提供)

      RewriteEngine On
      RewriteCond %{HTTP_HOST} ^([^.:]+\.)*iron-feet\.cn\.?(:[0-9]*)?$ [NC]
      RewriteRule ^(.*)$ http://www.iron-feet.com/$1 [R=301,L]

      当然如果您的主机不支持URL Rewrite也不用着急,我们可以用PHP来实现。请在Wordpress根目录的index.php的一开始加上这段代码。

      $i= isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');
      switch ($i)
      {
      case "www.iron-feet.cn":
      	header("HTTP/1.1 301 Moved Permanently");
      	header("Location: http://www.iron-feet.com".$_SERVER["REQUEST_URI"]);
      	exit();
      	break;
      case "iron-feet.cn":
      	header("HTTP/1.1 301 Moved Permanently");
      	header("Location: http://www.iron-feet.com".$_SERVER["REQUEST_URI"]);
      	exit();
      	break;
      }

      当然以上的操作实现的另外一个前提是,您的旧域名近期依然指向该站点。其实301跳转不但是对搜索引擎收录有帮助,同样也能够及时告诉关注您网站的朋友们您已经更换域名了。

    2. 利用Google的Webmaster Tool
      具体操作就不再赘述,请参见Google的帮助文档
    3. Sitemap地址的修改
      由于通常Robots.txt中Sitemap的地址都是写的绝对地址,所以更改域名后,千万不要遗忘更新您的Sitemap地址,以便Google可以及时抓取您的更新日志。
      当然如果您是用Wordpress的Google SiteMap插件,并且勾选了“Add sitemap URL to the virtual robots.txt file.”,那您就可以安逸地不用担心Sitemap的地址问题了。
  3. Feed的更新:
    相信很多博主都喜欢用Feedsky和Feedburner来管理自己的Feed,因此修改域名后,你需要将Feedsky和Feedburner指向您新的Feed地址。这样就不会影响朋友们继续及时关注您的文章了,嚯嚯!
  4. 适当的代码修改:
    通常情况下,我们写代码都是能利用相对路径是最好的,因为这样子兼容性比较好。但是有时候遇到想Sitemap之类的需要用绝对地址的,或者个别朋友因为编程习惯有所欠缺而引起的一些域名更换的不兼容问题,那就需要稍微对代码进行修改一下。
  5. 工具的再配置:
    Google Analytics和Google Webmaster这类工具在我看来,是建站必不可少的工具。所以更换域名过后对这些工具的在配置也是必需的。他能让你很快的知道最近站点的状态等等。

具体只能想到的就是这些了,如果有什么遗漏的和错误的请大家提出,谢谢!

PS:元旦快到了,祝大家新年快乐,万事如意!


以下更新于2009/12/29 21:40
如果您使用了Mail to Commenter之类的邮件插件,记得将源代码中的邮箱地址更新为您的新域名。例如我的就是从noreply@iron-feet.cn改为noreply@iron-feet.com。同样记得在你的空间邮件服务器添加上该邮箱帐户。

Categories: IT Tags: , ,

Coldest Christmas

December 25th, 2009 Iron_Feet 7 comments
分享家:Addthis中国

我既不是基督徒,也不是欧美人士,也不是……总之我一直没有习惯将圣诞节视为一个我应该当回事的节日。因此圣诞节向来不会给我什么快乐感。

从过去的圣诞节经验看的话,我基本都是会窝在室内该干嘛干嘛。心情不会很开心,但是也不至于糟糕。
然而今天各种情况搞得我心情极其不爽,至少现在极其的不爽

  1. 早上的闹钟一响,我今天就极其不情愿地起床。实习这么久了,早起已经是很平常的事情。但是昨晚窗外那“呼呼咻咻”的刮风声让我实在是不能忍了,辗转反侧的睡不着。那持续的高分贝噪音以至于带着耳塞都无法入眠。到了凌晨,好不容易睡着了一会,又被几阵狂风吵醒。真是该死,自我早上逼着自己起床洗漱开始,气就不打一处来。
  2. 昨晚的刮风声就给了我一个警示:今天的风必然不能轻饶我。果不其然,从踏出公寓大门开始,脸就开始由热乎变清凉,随之转为麻木。我可以清楚感觉到我脸部的神经末梢都在挣扎痛苦,脸被风刮得生疼。耳朵即使包在帽子里依然有刺痛感。好容易走进了地铁,再次出地铁的时候脸部再次迅速的由热转冰。从地铁站到单位的那一路,原本每天都好多可以买早点的小摊,今天瞬间只剩两个了。周围还没看见有城管,我想城管也不至于这么冷出来配合狂风一起肆虐商贩。估计商贩都被冻得不出来做生意了,悲剧!一路上顶风吹得我都快寸步难行了,大伙都背过身倒着走。
  3. 开机后依然习惯性的打开会议主页看看我论文的情况,还没有结果,继续焦急地等待。然后是应届生网看看招聘信息,没什么好的更新。到目前为止没一个offer能让我彻底满意的,继续寻觅吧。现在越发明白:找工作这事急不来的~
  4. 今天估计是我这辈子经历过的最冷的圣诞节,想到晚上又要顶着风下班回去就心烦。罢了罢了,烦也没用。就先写到这吧

最后奉上今天的祝福:祝大家圣诞快乐!
以下是近期在富士通网站发现的新年祝福Flash,你也可以点击此处查看此Flash的英文版本
用订阅器关注此博的朋友们,可能会看不到下面的Flash


Updated at 22:30 on 12/16 2009:
晚上又因为堵车,在公交车站忍受寒风等了一个小时公交,悲剧死了!

Categories: Essay Tags: ,

The Relationship Between Co. and Gov.

December 13th, 2009 Iron_Feet 12 comments
分享家:Addthis中国

最近连着看到了两则关于百度和CCTV的新闻——CCTV报道低俗信息“入侵”百度少儿搜索百度少儿搜索悄然下线

最近一段时间CCTV一直兢兢业业地为祖国人民尤其是青少年们营造一个良好的网络环境。这一切一切都要从2009年6月18日央视对谷歌出现低俗信息开始。

首先是CCTV在“新闻联播”开始对谷歌的进行谴责,随后是CCTV的“焦点访谈”再次对谷歌的低俗信息进行了进一步的声讨。在这个声讨过程中,出现了好几位证人和受害者,最为引人注目的当然就是当时一鸣惊人的高也同学。

本博只是想就最近的事情进行一些叙述,顺便感慨一下CCTV为我们营造互联网环境的良苦用心,因此我就不进一步介绍高也同学了,当然各位如果好奇的话,可以猛击此处了解了解。

就在该声讨出现没多久,一个很诡异的事情发生了——Google.com无法访问 Gmail等服务无法使用。俗话说,做了“坏事”真能遭天谴啊。我们的搜索巨头谷歌,终于明白了,“心甘情愿”地接受了CCTV的洗礼。当然接受洗礼的还有很多,比方说Twitter、Facebook、Picasa等等。(CCTV毕竟是CCTV,目光之深远不是我们这种草民所能及的。这些被洗礼的网络服务里面,有几个,我这种短浅的目光实在是没法发现有什么低俗内容。当然我知道这绝对是因为我太不注意关注细节了。CCTV是火眼金睛!)

最近这些日子对谷歌来说,日子一定很不好过,刚忙乎完了“低俗搜索信息”,又开始忙乎版权问题。“中国文字著作权协会”希望为中国的版权讨回公道(-_-!终于谷歌最近的负面新闻能和低俗没关系了)。不过说真的,我从来没听说过“中国文字著作权协会”这个组织。我想就算我孤陋寡闻,作为作家的韩寒不会这么孤陋寡闻吧,据我所知,他好像也不知道诶。有可能那段时间,韩寒他太关注于ROC赛车比赛了,一时给忘了,理解理解啊!

其实呢,作为一个搜索引擎,稍微搜索出一点低俗信息,那也是很正常的。搜索嘛!打比方说,一个人想去旧书市场找本非常好的旧书。当他翻箱倒柜的找,也许翻出的第一本不是他要的旧书,而是一本很旧的《花花公子》杂志,那也是非常有可能的嘛。
也许这位仁兄翻到了《花花公子》杂志之后会翻上几页看看满足一下“好奇心”,但这并不会动摇他想找到那本好的旧书的决心啊。一个搜索引擎有没有低俗信息不重要,重要的是找的人有没有目标,同时搜索引擎有没有重要信息。

而且目前互联网中,是个搜索引擎必然能搜索到色情的信息,不仅仅是谷歌,如百度、搜狗、搜搜同样如此。互联网上也不乏有声音质疑:CCTV为什么只找谷歌的麻烦,而不管百度、搜狗和搜搜等等呢。

谈到这里突然想到李开复先生在他的《世界因你不同》中提到了——外国企业要在中国站稳脚跟一定要和政府搞好关系!

就在众人议论纷纷的时候,事实告诉我们,CCTV是公正的,是全心全意为人民服务的。是不会偏袒任何一方的。而这个事实就是本文开头的两个新闻——CCTV报道低俗信息“入侵”百度少儿搜索百度少儿搜索悄然下线,还有这条新闻

可怜的少儿们啊,你们竟然天天使用着这样的搜索引擎,真是让我们祖国儿女悲痛万分啊!不过百度也非常负责,第一时间将少儿搜索下线了。非常值得表扬一下,大家鼓掌

看到这两则新闻的时候,我的脑海中很不受控制的就蹦出了几个问题

  1. 同样在搜索的时候能搜索出低俗信息,为什么谷歌就追究其主搜索业务的责任,而百度只是被关照了一下少儿搜索?难道百度主搜索业务被默认允许出现低俗信息了?
  2. 少儿搜索毕竟是百度的一个业务,新闻出来没多久,百度马上就把少儿搜索撤下线了。百度的觉悟这么高?还是少儿搜索本来就是搁置很久的烂尾服务?这就不得而知了。
  3. 谁会拿少儿搜索搜索低俗信息呢?相信这个问题应该也是CCTV接到某人的举报才发现的吧。我在想举报的那个人是不是属于心理变态类型的人,竟然用少儿搜索搜索低俗信息。唉,这种人就算少儿搜索没有低俗信息,也是危险人群啊!!

说到这,最近的视频网站封杀事件也是炒的相当的火。所有的视频网站都是需要有“视听节目许可证”才能运营。

视频网站一个一个倒了,BT网站也受“牵连”了。

为什么我会用“牵连”这个词呢,“视听节目许可证”那就应该是处理视听节目问题啊,视频网站必然难辞其咎。那BT网站呢?它仅仅是提供的下载平台,又没搞视听节目,怎么就封了呢。

如果以版权问题为由的话,那和“视听节目许可证”扯上什么关系了,巨汗

我承认我土了。网页是用眼睛看的,网页背景音乐是用耳朵听得,这个就是视听节目了。那所有网页都是视听节目了。看来我这个搞风云阁的也算是个视听节目导演了,我升级啦,哇哈哈

俺是一介草民,思想太落后了,我不应该想出上面这么多疑问来怀疑CCTV,CCTV可伟大了,我们不应该怀疑他,不应该啊不应该啊。好好做个草民,眼不见为净,不要被东西迷糊了视野,我们要“坚信”CCTV!

Categories: IT Tags: , ,

Create XML from XSD by Using Dataset

November 27th, 2009 Iron_Feet 7 comments
分享家:Addthis中国

前几天实习单位的一个同事问我关于XSD和XML的关系和互转实现。帮他做了个Demo,也觉得这个话题值得一聊,因此整理此文和大家分享。

首先先说一下XML和XSD。
根据w3schools提到的对XML的定义:

XML stands for eXtensible Markup Language.
XML is designed to transport and store data.

根据w3schools提到的对XSD的定义:

An XML Schema describes the structure of an XML document.

通俗地说:XSD是定义结构的,XML是用来存储针对该XSD结构的数据。

举例说一下:
如果有个文件叫XMLSchema1.xsd,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="XMLSchema1" targetNamespace="http://tempuri.org/XMLSchema1.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema1.xsd" xmlns:mstns="http://tempuri.org/XMLSchema1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="person">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="id" type="xs:int" />
        <xs:element name="name" type="xs:string" />
        <xs:element name="address" type="xs:string" />
        <xs:element name="city" type="xs:string" />
        <xs:element name="country" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

对应生成的一个XML文件叫XMLFile1.xml,内容如下:

<?xml version="1.0" standalone="yes"?>
<XMLSchema1 xmlns="http://tempuri.org/XMLSchema1.xsd">
  <person>
    <id>1</id>
    <name>Bill</name>
    <address>GUCAS</address>
    <city>Beijing</city>
    <country>China</country>
  </person>
</XMLSchema1>

到此各位可能会发现,其实XSD文件本身也是个XML文件,他就是一个存储另外一个XML文件结构的XML文件。(嚯嚯,有点拗口!)

通常情况下,自从.Net有了Linq之后,我无论处理XML、XSD或者是数据库关系等等,我都喜欢用Linq,因为用它来操作很直接很方便很高效。
但是由于Linq需要较高版本的.Net Framework支持,高版本VS限制以及用Linq操作需要有比较好的结构思维,很多人更喜欢用比较直观的Dataset来处理。

注:本文针对于.Net Framework,以C#代码为例
将通过上述XSD文件来生成XML的代码如下:

DataSet ds = new DataSet();
ds.ReadXmlSchema(@"XMLSchema1.xsd");
DataRow dr = ds.Tables[0].NewRow();
dr[0] = "1";
dr[1] = "Bill";
dr[2] = "GUCAS";
dr[3] = "Beijing";
dr[4] = "China";
ds.Tables[0].Rows.Add(dr);
ds.WriteXml(@"XMLFile1.xml");

从上述代码显而易见,Dataset可以让用户直观的将一个XSD当作一个二维数据表来进行处理。
person表

id name address city country

接下来我想各位可能会有疑问,如果这个XSD所包含的结构不是简单的二维关系,那怎么通过Dataset处理呢?
这就是我想写本文的关键。那天我同事也是因为卡在这个问题上才来问我的。

我们可以在刚刚那个XSD的基础上稍微修改一下,得到这个新的XMLSchema1.xsd,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="XMLSchema1" targetNamespace="http://tempuri.org/XMLSchema1.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema1.xsd" xmlns:mstns="http://tempuri.org/XMLSchema1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="person">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="id" type="xs:int" />
        <xs:element name="name" type="xs:string" />
        <xs:element name="address" type="xs:string" />
        <xs:element name="city" type="xs:string" />
        <xs:element name="country" type="xs:string" />
        <xs:element name="pet">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="id" type="xs:int" />
              <xs:element name="name" type="xs:string" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

生成的一个叫XMLFile1.xml的XML文件,内容如下:

<?xml version="1.0" standalone="yes"?>
<XMLSchema1 xmlns="http://tempuri.org/XMLSchema1.xsd">
  <person>
    <id>1</id>
    <name>Bill</name>
    <address>GUCAS</address>
    <city>Beijing</city>
    <country>China</country>
    <pet>
      <id>1</id>
      <name>Cat</name>
    </pet>
    <pet>
      <id>2</id>
      <name>Mouse</name>
    </pet>
  </person>
</XMLSchema1>

.Net还是相当的智能,其实当用Dataset读取了XSD的结构时,Dataset会自动将非二维的结构转换成为等价的几个二维结构的表格来方便用户处理。

上面提到这个结构会被其分割为两个二维表:
person表

id name address city country person_id

和pet表

id name person_id

我想应该不难看出person_id是将这两个表连接的关键。
有了对上面Dataset分析XSD工作原理的介绍,我想接下来的代码就不难明白了。嚯嚯

DataSet ds = new DataSet();
ds.ReadXmlSchema(@"XMLSchema1.xsd");
DataRow dr = ds.Tables[0].NewRow();
dr[0] = "1";
dr[1] = "Bill";
dr[2] = "GUCAS";
dr[3] = "Beijing";
dr[4] = "China";
dr[5] = "1";
 
DataRow subdr1 = ds.Tables[1].NewRow();
 
subdr1[0] = "1";
subdr1[1] = "Cat";
subdr1[2] = "1";
 
DataRow subdr2 = ds.Tables[1].NewRow();
 
subdr2[0] = "2";
subdr2[1] = "Mouse";
subdr2[2] = "1";
 
ds.Tables[0].Rows.Add(dr);
ds.Tables[1].Rows.Add(subdr1);
ds.Tables[1].Rows.Add(subdr2);
 
ds.WriteXml(@"XMLFile1.xml");

本文简单的介绍.Net中利用Dataset处理XSD的方法,并不是非常详细,旨在抛砖引玉和帮助.Net新人的学习。
如有什么鄙陋之处,不吝赐教!

Categories: IT Tags: , , , ,

Rabbits & a Baby Rabbit!

November 19th, 2009 Iron_Feet 11 comments
分享家:Addthis中国

去年的五月一日,我从北京赶到苏州参加兔姐的婚礼~整整三天,赶来赶去,虽然很累,但是心里非常的开心!

兔姐她是我高二半年的邻座,也是我最知心和最关心的朋友之一。班级里面的人都叫她“兔子”,但是我总是喜欢叫她声“兔姐”。即使高中毕业很久了,我们依然联系,每每我回到了苏州,我们都会抽时间碰一下面。

去年的五月一日是她这辈子最美最幸福的日子;我同样能相信,昨天同样是她这辈子最累但是最开心的日子——下午刚刚收到兔姐的短信:

我昨天生了,一个男宝贝,呵呵

真是为她和兔姐夫高兴,也真希望能尽快抱抱这个兔宝宝,嚯嚯!

Categories: Sth. in My Heart Tags: , ,