Archive

Archive for the ‘IT’ Category

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: ,

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: , , , , , ,

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: , ,

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: , , , ,

Words Before the Release of Chrome OS

November 17th, 2009 Iron_Feet 8 comments
分享家:Addthis中国

自从今年7月的时候,Google宣布将会进军操作系统市场,Chrome OS这个词在各大网站的新闻列表中就一直没消停过,也吸引了很多很多人的关注。
诸如,图片泄漏啊,Chrome浏览器源代码中发现Chrome OS源代码啊之类的八卦新闻层出不穷。

无论是在Google.com(不是Google.cn)还是在Baidu.com,搜索“Chrome”,出现的第一个候选条目也瞬间都变成了“Chrome OS”了。

Chrome Google
Chrome Baidu

通过这两张图片,包括下面这张Google Trends对于“Chrome OS”这个关键词的2009年的趋势表现,Chrome OS如今的高受关注度可见一斑。
Chrome OS Trends

不过这个也是可以理解的呀,Google嘛!作为一个IT人,我也同样很期待这个操作系统的出生。
前期对“Chrome OS”太过关注似乎导致很多人已经对此形成了关注疲劳,关于“Chrome OS”的新闻也渐渐少了。

一个新闻再一次很是时候的横空出世——Chrome OS将于美国时间11月18日发布。
当然这个消息无论是真是假,无疑是给那群疲劳的谷迷注射了一剂高浓度大剂量的强心针!

对于Chrome OS我和很多人一样非常之期待,操作系统领域又要多一个选择了,而且还是Google的产品。
我相信Chrome OS会是一个好产品,好操作系统,但是Chrome OS在大陆的发展前景我觉得很不乐观。

根据Google官方的说明

Google Chrome OS is an open source, lightweight operating system that will initially be targeted at netbooks.

Chrome OS作为一个开源的轻量级操作系统,因此很多的应用都是基于Web的。

We’re designing the OS to be fast and lightweight, to start up and get you onto the web in a few seconds. The user interface is minimal to stay out of your way, and most of the user experience takes place on the web.

既然是基于Web的,它就必然会引起一些问题。

  1. 带宽问题:
    当然这个目前看来可能是可以忽略的小问题。由于Chrome OS是服务于上网本的。现在一般上网本也就局限于,单纯的看看网页、聊聊天之类的,或者稍微耗费点带宽的就是看看优酷、土豆之类的低分辨率在线视频。对于大陆现在的带宽同样不在话下。
    但是需要注意的是,目前HTML5已经成为了下一代的标准了。随着Video等标签的慢慢普遍,上网本做所得事情也不再是低带宽的小事情了。Chrome OS基于Web功能和Google的服务同样也会与时俱进。
    就如,最近正处于Preview阶段的Google Wave就是个典型的例子。Wave的标题就是“Communicate and collaborate in real time”,在最近的短暂使用后,wave成员在讨论中,一旦插入很多Widget、图片或者视频,对于网络带宽也就渐渐形成了一种考验。而他所体现的“Real time”同样是对网络带宽的一个严峻考验。
    当然HTML5在慢慢流行,网络服务也在进化,同时大陆的网络带宽也在拓展,可能是我杞人忧天了。但是我觉得接下来的一个问题,却是不得不让我们深思的
  2. 网络的通畅性:
    这个通畅性并不是,通常意义上所指的,网络稳定性,即不老是掉线。而是我们祖国大陆的G F W。
    (为了防止我这篇仅仅是对一个IT产品进行猜测的日志因为某些词被墙,我将部分词进行了中间分割,请见谅)
    随着T witter、You tube、Picas a等等国外服务,以及饭 否等国内服务相继被墙或者是关闭,在大陆有些服务必然是不能做成基于web的。
    而Google的服务并不能保证可以完全符合中国国情,或者说也没法保证Google服务的所有使用者的言论可以完全符合中国国情,所以Chrome OS的服务很可能因为某些原因在祖国大陆并不能正常使用。这个是非常有可能的。对于一个基于Web的轻量级操作系统,当它的很多Web功能不再可用,那这个操作系统就等同于了废物,将不再被用户所青睐。
    当然T witter向我们强硬地证明了,即使被墙,祖国大陆依然有很多人在使用它。但是一个操作系统的很多基本功能都需要翻墙来使用,我并不认为,用户会有这么好的心情去折腾。

以上都是我无聊时对Chrome OS的一些猜测,具体Chrome OS在中国的路怎么走,谁都不知道。
明天就是18号了,关于“知情人士”透露的“明天Chrome OS会发布”的消息,也不知道是真是假。当然我多半认为是假的

总之四个字——静观其变!


以下更新于2009/11/20 8:39AM

根据最新消息,谷歌已公布了Chrome OS的源代码
早前Google的浏览器Google Chrome的Linux版未发布之前,很多Chromium的Linux版纷纷出现。
同样我们也可以很肯定的认为,Chrome OS在发布之前,势必会有高人弄出一个Chromium OS的雏形!

Categories: IT Tags: , , ,

Sougou Cloud Pinyin Input

November 2nd, 2009 Iron_Feet 6 comments
分享家:Addthis中国

今天在cnbeta上看到了一篇关于“搜狗云输入法”的报道,试用了一下,感觉还凑活。

但是我觉得还是一些不太方便的地方

  1. 它是通过利用Javascript来实现加载的,这个方式和Dict.cn的划词翻译是如出一辙的。
    dict.cn在其划词翻译的功能上,有这么一句声明

    注意:如果原网页上有javascript错误或者原网页带frame结构时点击该链接可能不工作,遇到这种情况您就只好手动打开本网站的地址来查询了。

    因此有一点同样是显而易见的,如果原网页中有有javascript错误或者原网页带frame结构时,同样会失效的。

  2. 根据目前看到,该输入法是基于B/S的,因此词库必然是源于该输入法的词库服务器。所以我认为该输入法在离线状态下是会失效的>_<
    刚开始写这篇文章的时候,我是用的搜狗云输入法来输入的,但是现在换用了最喜欢的谷歌中文输入法。由于词库并非本地的,加之目前所处的网络环境不是很高,我在输入拼音后,候选中文的呈现有了明显的延迟,这个是让我非常不能忍的。
  3. 该插件是通过Javascript调用一个PHP来最终实现加载的,因此可以肯定的是,目前该输入法必定只支持浏览器,或者调用浏览器的其他软件(我想CHM这种web表现形式的应该也可以的,只要你能有法子在里面调用这个javascript,嚯嚯!)
    如果换到别的程序上,如Notepad,VIM或者Word等等,必然是无能的。

由此可见,该输入法通常情况下,也就是个暂时可以解决燃眉之急的东西
以下情况可能可以考虑:

  1. 电脑的中文输入法突然挂了,然后想去下一个中文输入法的安装包,可以通过这个来对搜索引擎输入中文关键字。
  2. 可能某些搜狗输入法的狂热粉丝非搜狗不用。当他碰到我的这种不安装搜狗输入法电脑,他为了捍卫自己的信仰而可以毅然选择搜狗云输入法。
  3. 对于一些初安装的非中文系统,偶尔要输入一下中文,可以利用该输入法,在浏览器里面输入后,复制粘贴到本地文本编辑器里面
  4. ……废话说多了,就不再举例了

总之呢,这个搜狗云输入法还是挺有用的,但是暂时他不能用来做长期使用

PS:官方提到

提示:已经在IE、搜狗浏览器、世界之窗,Firefox等浏览器下测试通过,部分浏览器在操作中可能给出不安全的警告,请点击允许通过。

我在Chrome 4下使用也正常,Chrome 4用户可以放心试试看,嚯嚯

Habits

September 24th, 2009 Iron_Feet 2 comments
分享家:Addthis中国

就在过去的一个小时,遇到了一个巨无语了事情:突然之间风云阁的所有的日志和页面全部没了,即wp_posts数据表被无缘无故的清空了。
幸亏得Solrex发现了及时提醒。我用备份的数据文件及时恢复了,但是最新的那篇关于“臼井仪人”死讯的日志没有备份到,因此我用从Google Reader上抓取了原文,重新发送了一篇。如果各位的订阅器重复受到这篇日志的通知,不要见怪,非常之抱歉。

华丽无敌的分割线


“忙碌”真是个恐怖的东西,一旦它缠上了你,你就很难再摆脱它了。即使偶尔你侥幸摆脱了它,你也总是会惴惴不安地觉得它好像在你周围的某处窥探着你,然后你一个不小心又被它缠住了。
而我最近的生活就是天天和“忙碌”为伴,感觉每天一睁开眼睛就开始忙了,一直忙到晚上睡觉。
从我最近的blog的更新频率也能看出我的忙碌程度了,本来我至少一周一篇日志嘛。不过还好,我再忙也不会把这里荒废掉的!

华丽无敌的分割线


最近正值找工作的时期,我那个给我服役了两年的i718偏偏在这个节骨眼上向我申请“退役”,真是让我无比抓狂。“退役”的申请主要表现在:1、手机信号显示满格,但是外界给我的短信和电话,我的i718一律不予理睬,完全没反应;2、我打电话给别人,经常告诉我对方不在服务器,汗一个。

正在我囊中羞涩的时候,Cricket很仗义的把他一个旧黑莓借给我了,真是雪中送炭啊。
在拿到Cricket的这款黑莓7130的时候,我对黑莓的了解仅限于“Black Berry”和奥巴马,一直想研究研究地说。因此初拿到的时候,我还很high的把它把玩了好久。
但是黑莓的操作方式,让我极其不能适应

  1. 黑莓的键盘排布是和IBM兼容PC的键盘排布,但是我以前用的手机全部是三星的,导致我打字的时候完全习惯于三星的键盘映射,习惯性的盲打就打错了。
  2. 黑莓的操作除了打字机会全部可以用对右侧滚轮的滚和按来完成。我刚拿到手的时候,完全不知道那个滚轮是可以按下去的。第一次把短信编辑完了,按遍了所有按钮都没找到发送选项,都快崩溃的时候不小心按到了滚轮。无比汗,菜单是通过按滚轮出来的
  3. 黑莓没有官方的中文输入法,导致我非得花13元注册一个第三方的黑莓超越中文输入法。不过还好,手机的软件比PC的还是便宜得多了

总之,这些天用下来也算是慢慢习惯了黑莓的操作了。
在熟练了黑莓的操作后,我更加发现,原来还有比“忙碌”更恐怖的东西,那就是“习惯”。
前段时间,网上看到一则报道,说到

What we found was that it takes 66 days on average for people in our study to acquire a habit.

从这句话可见,66天只是个平均值。至于一个习惯到底要花多久形成,这个很难用数字来衡量的。

我个人认为,一种行为无论是好还是坏,它能否快速地被一个生物形成为习惯,分为两个方面:

  1. 外在的:别人的逼迫,这个起次要决定作用,但是也是一个重要原因。外在的逼迫越大,习惯形成的越快。
    就拿学钢琴举例吧:很多小孩很小的时候就被爸妈逼着学习钢琴了。他们心中未必愿意学习钢琴,但是在父母的“淫威”之下,他们不得不学,慢慢地把学习钢琴当成了一种习惯。很明显的一点是父母压迫的越强烈,这个习惯形成的越快!
  2. 内在的:兴趣和爱好,这个必然起绝对的决定作用。继续拿练钢琴举例吧:当一个被逼着练钢琴的孩子长大了,慢慢敢于反驳父母的言论时,事情就出现了转变。这个时候无论父母如何的逼迫,他会很快的将不练钢琴变成一种习惯,甚至会因为逆反心理形成另外一种习惯——对长辈看着横竖不顺眼

黑莓的操作方式,其实并不是很好。滚轮有它的好处——方便,也有他很不好的地方:按下去的时候很容易按歪,然后高亮处滚到下一个选项,直接导致选错,这也是我自从用了黑莓过后经常会不小心送出空白信息给别人的原因。
而我的确是很不到一个星期的时候将黑莓的操作成为了习惯,很短时间就把我好几年积累的三星手机的习惯颠覆了(其实我现在依然觉得三星手机无论是性能还是操作都是很棒的)
我想导致我很快形成习惯的愿意,应该就是兴趣吧。在被周围人灌输了太多关于黑莓的消息之后,我在完全不知道黑莓操作好还是不好的情况下,很high的把玩了黑莓好久,以至于,很迅速的形成了习惯。

那天和实习单位的一个同事聊天,得到了一个共识:其实一个广为人用的手机,还是一个广为人用的软件,其实都有它要抓住别人的地方。而这抓住别人的地方有很多方面,首先是广告。好的广告能让你在没见过一个产品之前就对一个东西产生极大的兴趣~让人们一旦能接触到这个产品会有强烈地向一窥究竟的愿望;然后就是独特性,在通过广告抓住用户兴趣的时候,让用户在很短的时间内将独特的操作形成为习惯。而当用户将这个形成为习惯之后,这个产品开发者的目的就达到了。因为这种独特的操作一旦形成了就很难适应于别的产品了,即使它的操作方式并不是最好的,但只要不是差的就没问题了。就手机而言,苹果的iPhone和黑莓的Black Berry在这方面是做的最佳的,这两款手机的操作都很别具一格。而Nokia、Samsung或者是很多很多别的手机,键位和操作基本上是千篇一律的,很难让人真正对其操作产生依赖感!

而我最关注的IT软件行业,这种现象也是非常的明显。而这种我认为不必要的争辩的东西,往往会引起一群人的舌战~

  • JVM VS .Net Framework
    作为一个老牌的产品Java虚拟机和新生代.Net平台(其实后者也不新了,但是相比前者算是个小孩子了),这两个都属于managed code的平台一直都是很多程序员舌战的对象。
    对于两者的比较:

    1. 运行效率:我一直很讨厌Java的原因就是Java的运行效率实在是太低了,低的让我无语。数一下目前基于JVM的稍微大型一点的软件,每一个不是启动的时候慢慢吞吞的。同样是managed code,Java怎么比.Net的慢了这么多,实在是很无语。
    2. 跨平台:原来跨平台的特性一直是Java的一个王牌之一,可惜的是,MONO的出现让这个王牌变得一文不值了。顺便提一下

      Mono is a cross platform, open source .NET development framework.

    3. 运行库的问题:很多人都说.Net很麻烦,需要安装运行库。我一直很纳闷为什么这个能成为别人不习惯.Net的原因之一。如果无论是Flash需要安装Flash插件、Java需要安装JVM、基于Air的程序需要安装Adobe Air,为什么.Net的运行库就变成了他的一个错误呢?
      曾经有一位朋友和我说过:要运行.Net程序就要装好大的一个包,还是web安装不能设置代理,你就觉得烦吗?首先这句话就有问题:问题1、.Net的SDK是挺大的,但是仅仅是为了运行.Net程序不需要开发,只要安装运行库就行了,那个并不是很大。问题2、那个安装包是可以设置代理的,微软的很多基于Windows Installer的安装包都是用的IE代理的,你在IE里面设置好代理就OK了。

    别的比较我也不多说了,要不然这篇日志太长了,目前已经很长了!以上除了运行效率而言,我没有提到Java比.Net差的话语,希望不会引来Java爱好者的谩骂,我不想同人舌战。舌战伤神啊。
    想来想去,无论是Java开发者还是.Net开发者,还不是一个习惯问题。很多人都说汇编编程麻烦,那不是有不少人在用汇编开发吵得你死我活的没意思啊

  • Windows VS Linux
    通常只要一提到这个话题,无论在哪个IT或者杂烩论坛都会成为一个大坑,无数的人前赴后继的往里面跳。那个英勇啊。
    又是一个习惯问题引发的舌战。
    对于这个话题,我已经厌倦了。我是一个Linux和Windows的双系统用户。Windows很棒,那个无可厚非的。Linux很出色,后来者势头非常猛,这个也是显而易见的。两个都有优点也有缺点,何必要争出个好坏了。
    如果因为微软拿Windows赚钱而骂他,那骂他们的人也就太缺心眼了。一个软件开发者把他开发的好软件免费给别人用,只能说明是一种恩赐;Windows这么好的系统收费,也不是微软的错。用别人的东西给钱,那个应该的。
    一定要把好的免费软件看作是恩赐,而不能把软件免费用看作是应该的,人不能做的这么贱。
    我不会鄙视用盗版的人,这是别人的自由。但是我会鄙视那些用着盗版windows还骂微软的家伙、同样包括其他用盗版软件还骂开发者的人群。(在此我不想让太难听的词出现在我的博文里,省下若干难听的对他们鄙视的话)
  • Flash VS Silverlight
    和第一个对比,基本是差不多性质的,一个老牌产品和新生代的对决。
    对于两者的比较也和刚刚的插补都:

    1. 运行效率:在我刚接触Flash的时候,我觉得Flash非常棒。效率高,而且多样化。但是自从Flash 8开始,Flash就越来越臃肿越来越慢了。Macromedia被Adobe收购后,这个现象就更加的明显了,慢地不可理喻。
    2. 跨平台:原来跨平台的特性一直也是Flash的一个王牌之一,可惜的是,Moonlight的出现也让这个王牌变得一文不值了。
    3. 运行库的问题就不说了。两个都需要安装运行库
    4. 安全性:Flash随着版本的提升,安全性也是越来越高。其实这个本来压根不是什么坏事,大家应该对此赞赏有加。可是偏偏这个安全性给Flash埋下了一个很大的祸根。
      由于安全性的提升,Flash的很多不太安全的库函数被作废了,直接后果就是高版本的Flash运行库不能兼容部分低版本的Flash作品。我个人觉得不兼容是个大忌。(说到不向前兼容,让我想起来Python2.X和Python3.X的大幅度改革,不知道是祸是福啊)

一下子写了这么多,忙了好多天没时间写,别了很多想谈谈的。就一个习惯问题,竟然让我唧唧歪歪的这么多。废话不少,不过看法我也说清楚,虽然比较隐晦。
每个人都会自己的习惯,有些习惯称不上坏习惯就不要逼着别人改;有些习惯也不是绝对的好习惯,就不要非让别人跟着你走。俗话说嘛,强扭的瓜不甜,自己做好自己就行了。别人有错提醒他一个,做个善人。别人的不是坏习惯,就好像软件的使用啊~手机品牌的选择啊~甚至输入法的选择啊~地铁或者是公交的选择啊等等。你用你的就是了,不要引起没必要的舌战,甚至于也不要强制的逼别人改习惯,或者移除别人需要的东西。

唠叨完了,现在就业难啊,再次祝愿GUCAS 701班的07级硕士都能顺利找到理想工作!

Categories: Essay, IT, Life in GUCAS Tags: ,

Information Pollution

September 1st, 2009 Iron_Feet 9 comments
分享家:Addthis中国

记得上个月和一个同学聊天,无意中聊到了“信息污染”这个话题。当时其实并没有怎么深聊这个话题,因为我总觉得这种话题总会引起一些不必要的争论,但是从那天开始这四个字不知为何就一直在我脑中回旋,似乎在告诉我,我也许需要就这个话题发泄一下。

信息的传播必然脱离不了媒介:从一群长满毛的类人猿口中的“哼哼哈哈”和他们在墙上和石头做的画(姑且算是象形文字吧),到现如今网络上铺天盖地的网页、周围环境中无意中所听到的别人的唧唧歪歪,又或者是地铁站免费发的报纸。
以上种种,深深地提醒着我们

在现在这个信息爆炸的社会,如何获取对自己更有用的信息、知识和智慧?

回头想想,每天在攫取信息的时候,你最花时间的哪个部分???是吸收有用信息的时候?是剔除垃圾信息的时候?是不小心看了垃圾信息的时候?又或者是在你抱怨新闻越来越扯的时候,时光匆匆溜走?

面对信息,首先必要的事情就是取其精华、去其糟粕!

  • 当我还是小屁孩的时候,拿起一张报纸,就会以飞快地速度搜寻到笑话版面,然后津津有味地品尝的里面深奥或者不太深奥的幽默。对于那个年纪的我而言,笑话是最有用的信息。可以发现几个版面的报纸,这有限的信息量,寻找出自己有用的信息,几乎不会浪费多少时间
  • 进入小学后期及初高中时代,江苏省苏州市恐怖的教学压力让我深深地觉得我不能再“只喜欢笑话版面”了。书店成了我每学期期初都会去的地方。捏着那仅有的几张小面额人民币,我需要在书店泡上不短的时间从那堆“AB卷”啊、“百所高校精选”卷啊、“课前预习课后复习”读本中选出我比较心仪的学习材料,以免让我自己觉得我的零花钱扔阴沟了
  • 运气无比好的是,我竟然顺利步入了大学。刚进大学的时候,我最兴奋的事情就是,终于可以不用总是为高中图书馆的书太少而叹气>_<大一时候,幼稚的自己第一次跑进大学的图书馆,直接被那堆计算机技术书迷住了,哗哗哗地把借书量借满后才依依不舍地离开图书馆。背重重地一包书,心里想的不是肩膀好疼,而是书好多哈……
    接下来对大学教学方式的不适应,以及我的智商告诉了我,我连基本的科目都应付不来,更别说看课外书。于是那N本书被我束之高阁积灰。终于到了还书期,我抱着重重地几本书回了图书馆。但是我心不甘,傻乎乎的换了几本,把另外几本续借了,又牛X哄哄地把一包书背回了宿舍~事实证明,这几本书给我的唯一用途只有让我的肩酸了,我健身了。再一次还书期到了,我乖乖地把几乎没看的书送回了图书馆。图书馆馆员很有经验的对我说,孩子啊,别一下借那么多,一般来说,都是借得越多越不看。我那个时候真是想抱着他痛苦也因为那段经历,让我从此再也没有去图书馆借书的习惯了,喜欢自己买书看(说句难听的:花了钱的就不舍得浪费了-_-!)
  • 在大四的日子和目前读研的生活,网络成了我获取信息的主要途径。
    获取方式也演变了不少。从最早的收藏夹放了一堆网址,每隔一会就刷新一遍,看有没有新消息的更新。那个时候信息倒是没有获取多少,点击和F5倒是需要不少开销,真是悲惨。而且刷出来的消息是否是自己很需要的,都是个未知数。
    后来有个叫“Feed”的东西让我告别了不停的点击和F5了。订阅器定时间隔的自动获取更新,让我轻松多了。每次将为数不多的几个未读条目一个一个看一遍,真是惬意啊!然而在我轻松的同时灾难也同时到来了。慢慢地我的订阅器中的Feed越来越多,每次几百几千条的未读条目,让我无从下手。我也很无奈地从原先的每条必看,变成了根据标题选择几条,剩下来的全部“Mark as read”。
    前段时间,我订阅了一个不错的Mail list,也理解到了曾经一个朋友和我说过的一句话“我的G级邮箱竟然被撑爆了!”

如今信息越来越多,好的还是坏的,都是越来越多。然而我却发现我是越来越力不从心。每天吸取有用信息的时间并不见长,剔除垃圾信息的时间却占得比例越来越大。为了不遗漏任何一个有用的信息,却适得其反,浪费的时间更多;又为了不浪费时间,却不小心遗漏了非常有用的信息。多么矛盾的抉择~

闭上眼睛,想想每天你的Mail中有多少是spam;每天你的订阅器中有多少是被你直接看都不看就“Mark as read”的;每天你会听到多少无关紧要的八卦;每天你在清理身体大内存时候,抱着张报纸看,却因为报纸上的几个八卦新闻而让你在卫浴上坐了蹲了好久好久;甚至你每天看到的新闻有多少你自己都在怀疑这个是真的还是假的!
也许你会觉得你能很好的筛选出有用的信息,可是你却没有想到,你筛选的这个过程会流失多少青春呢。
也许在读的各位,有部分人现在就在咒骂,怎么花时间看了这篇烂文,而这个时候,你已经在体验信息污染了。

知识是不能离弃的,所以信息依然要不断的获取。而我仍然会继续面对着信息污染,抱着这份矛盾的心情来学习生活和奋斗!

Categories: IT Tags: