dawnh

 

ChinaJoy妹子展游戏展年年都去,今年也没落下。只是手头现在没相机,所以今年的照片只有手机拍的了,太多未整理,一股脑丢到Flickr上面去了,刚好试试最新的Flickr插件是否能显示完整。

Powered by Flickr Gallery

或者直接点这个链接看幻灯:http://www.flickr.com/photos/40857285@N03/sets/72157621852198360/show

 

有关部门折腾完Bing又去折腾Google,这样下去真的是永无宁日了。微软Bing这个名字起得够有远见,我都病了你还折腾个什么劲。发的T恤更嚣张,正面我有病,背面你有病,合起来就是大家都有病!

clip_image001

感谢Ricky同学贡献了一个后脑勺,想看帅哥正面请移步Ricky同学的Blog

 

今天无疑是黑暗开始降临的一天。IT人们,没有google你们还能正常工作吗?

 

今天晚上发现了一个极其诡异的现象,以前从大陆到海外的访问,只要一出大陆路由节点,必定平添180-200ms的延迟,然而今天却出现了这样的现象:

traceroute

从中国到北美竟然只有80ms的延迟, 这是从来没有的状况。谁说海底光缆一定会带来100ms以上的延迟的?这就是铁证,立存此照!

猜想:这两天网络极其不稳定,再加上政府部门的一些动作,怀疑骨干网上某神秘设备在开始新一轮进化,目前只是抽抽疯。

Update: 次日一切如常,果然只是抽抽疯。

 

由于众所周知的原因,本站从5月35日到6月6日关站维护。

 

这里的玩法指的不是内容,仅仅是指支撑起Blog的底层设施。

既然决定了独立Blog,一个独立的域名就是首要问题了。域名注册的选择有很多,但要注意有两个地雷尽量不要去碰:

  •   一个是请避免使用.cn域名。对于这个国家后缀的域名,有太多曲折的故事,但不幸得是没有任何一个故事是对网民有利的。再加上前几年CNNIC自作主张地将其调整为1元1年,同时对于域名管理不作为,导致.cn域名在世界范围的名声差到极点,以这个后缀的网站中充斥着很多垃圾站,病毒站,钓鱼站。所以在对Blog域名选择的过程中,请一定不要选用.cn域名。
  •   第二请尽量规避国内的域名注册商。国内域名商对于在其名下注册地域名有诸多限制,比如国内域名商大部分限制转入转出,即使允许也有额外附加条件。同时域名商本身的安全隐患却很大,以前就曾出现过号称国内最大的域名注册商域名被盗的事件,最近窃取域名的情况时有发生。然而,即使没有限制,安全性还凑合过得去,国内域名注册商还有一个非常致命的问题是,只要有钱或有背景,某些人或部门可以直接通知域名注册商在未经客户允许的情况下对其所有的域名做任何处理。例如前段时间的TGbus被停事件。
  • 域名解决,下面的问题就是选用哪一种Blog程序了,这个选择不难,因为可选范围比较小,首选自然是全世界使用最广泛的WordPress了,对于这套程序,相信大部分人的要求都可以满足。其次是一些老Blogger的钟爱MT,最大的特点是全文静态化。其他类型的Blog程序使用者较少,不过也有不少好东西,有兴趣的人可以慢慢挖。

接下来问题是运行这套程序的软硬件平台。Blog算是在线服务,因此至少需要有Web服务和存储服务,对于目前流行的Blog程序来说,存储大多是通过数据库实现。因此所需要的就是一个Web Server和Database Server。而这两项服务以及其所需的网络接入,普通用户自己来实现的成本太高,也非常困难,所以大部分人的选择,都是将其托管到专业的服务商,也就是Hosting Provider。传统的Provider有2种方案:Shared Hosting和Dedicated Hosting,在国内来说,就是虚拟主机和独立服务器。前者是多个客户共享Web Server和DataBase,服务商负责具体服务器的运维,提供给客户一个统一的控制面板来操作,客户通过FTP或web面板等手段来维护其服务。而后者则是客户使用独立的服务器来运行所需要的所有服务。显而易见,前者便宜且简单,后者复杂但功能强大,只要不是特别牛B的Blogger,选择前者就足够了。近年由于虚拟化的流行,出现了一种介于二者之间的产品-VPS(Virtual Private Server)。属于二者之间的折中选择。

下面说一下我的选择:

域名,注册于全世界最大的域名商Godaddy。价钱是8刀左右每年,比国内稍微贵一点,但域名本身花费并不高,这点开销完全可以接受,同时Godaddy经常会有优惠活动,有时能拿到非常低的折扣价。因此没有必要为了省几毛钱来降低域名品质。

空间服务商,早期其实是利用职务之便挂在以前任职公司的服务器上。而现在没有这个条件了。我首先选择的是Dreamhost,它提供了几乎让人用不完的空间以及流量,并且第一次注册时可以享受到近$80的优惠,我记得大约是只需要$21一年,而后第二年全价为$120。算起来每月只需10刀,一顿饭钱而已,对于大多数Blogger,都是比较有性价比的花费。

在去年的某个时候,因为比较无聊想折腾,将自己的Blog迁移到了国外某家VPS。自此间或折腾了1年多,时而自己编译Web Server架起来跑,时而装个Web Pannel来自己当Hosting Provider。VPS的优势在于灵活,几乎能做任何在真正服务器上想做的操作。慢慢下来,我的Blog平台又多了很多用处和玩法,比如VPN(用来跳墙),http proxy(同上,也用来加速国外网站访问),邮件服务器(做备份),各种软件测试平台(跑着玩),TeamSpeak(给朋友玩游戏),编译器(CPU闲着也是闲着),备份调度(做cronjob跑任务),甚至有一段时间跑了一个EQEmu,可惜只有我自己玩,后来VPS迁移给弄没了。

可见VPS是不想花费太多而又爱折腾的人的最好选择。我在一年的期间内换过近2位数的VPS厂商,倒并不是其服务不好,只是为了体验不同厂商的差别,因为VPS的迁移和域名指向转移都是很简单的事,所以搬起家来速度很快。对于VPS,个人可以说是比较有新的了,有机会以后会多写点东西出来介绍一下。

 

玩了也算不少时间Blog了,稍有心得,最近有一些人问我独立Blog有什么好处,就顺别喷点口水写些东西。

首先要明白什么是独立Blog。有些人把是否具有独立域名当做是独立Blog的标准,还有些人则认为应该取决于是否依托于BSP当做界限。其实这都只不过是独立程度而已。每个人对于独立的要求不一样,有些人看重有自己的域名,有些人看重可以自己设计Blog程序或主题,所以这里也没必要界定究竟满足什么条件才算独立,每个人根据自己的要求选择就成,在现在的Blog圈,基本上每种要求都有相应的解决方案。因此关键问题在于,要弄清楚自己究竟想要什么。

无废话,下面一条一条总结。

首先是独立域名的好处:

  1. 最基本的好处一看即知–拉风。用脚底板也能看出来xxx.com比起blog.sina.com.cn/xxx看起来有气势得多。
  2. 独立域名可以提高Blog在搜索引擎的权重,最直接的结果就是会有更多的人通过搜索引擎看到你的文章,如果你想要你写的东西得到更多关注,可以考虑一下独立域名。
  3. 可以用子域名来放其它你想要的东西,比如photos.xxx.com来放图片,还可以架设@xxx.com的邮局或者其它服务,这都是有域名所带来的额外好处。
  4. 有独立域名,即使以后换BSP或者换Hosting Provider,都可以平滑转移,你所需要的就是让更多的人记住你这个域名而已。

其次是脱离BSP架设自己Blog程序的好处,其实不使用BSP的原因都可以归结为BSP有诸多限制,国内尤甚:

  1. 使用BSP的话,内容可能没有自主权,这个是中国特色,因为国内大多BSP在他们的协议中都注明了文章的使用权归BSP。简单说你写文章都是在为BSP打工,赚来的流量都是他们的。
  2. 无法定制自己的blog,不过目前很多BSP也可以在有限的范围内定制,只是无法做到随心所欲罢了。同时大部分定制功能仅仅是外观上的小小变化,比起Blog程序的高度定制化差得还是很多。
  3. 数据无法有效保存。很多BSP不提供Blog导出功能,也就是说一旦你使用了他们的服务,基本上就只能是被绑架在那里了,要想保存下来是很困难的,更别说导出到其它服务。这里更可笑的是,大部分BSP声明不对客户数据负责,也就是说哪天BSP倒了可能网络上再也找不到你写的东西了。
  4. BSP为了维系自己的流量,会限制旗下Blog对外部的交流,经常会有一些很让人头大的东西,比如图片乱盖戳或限制外链,评论要注册等等,这个其实是违反了Web2.0本身的开放的要求。
  5. 同独立域名一样,使用BSP会导致在搜索引擎内权重的下降。这里有个问题,其实依托于BSP本身的权重,可能并没有太大区别,只是从某种意义上讲,你写的文章从搜索引擎来看,其实是BSP的文章,这样基于BSP的blogger的读者会被局限在BSP内,通过整个Internet来的交流会比较少。

其实写了上面几点,回头再看看,似乎对于普通网友没什么参考价值。对于一个想拥有自己blog的人来说,关键问题是,开Blog究竟是要来干什么的,想清楚这个问题,对于是否需要独立blog,应该也就有答案了。对于我自己来说,引用以前看到某位大牛的话–Blog就应该是一种表达自我和发现自我的方式。

 

Powershell的函数返回值与其他脚本语言存在较大差别,我也是在研究了好一阵子才明白是怎么回事。

第一要搞明白什么是“默认输出”,默认输出就是没有指定任何特定输出设备的语句所要输出到的地方。相当于传统编程语言或者shell的stdout,其实就叫标准输出也行。像如下语句:

PS C:\Users\Administrator> 1+1
2
PS C:\Users\Administrator>

1+1是个表达式,它的结果是2,我们并没有指定把结果输出到哪里,则系统就丢到“默认输出”或“标准输出”里,默认输出的行为就是简单地把它回显出来。

再如同:

PS C:\Users\Administrator> $x="Hello World!"
PS C:\Users\Administrator> $x
Hello World!
PS C:\Users\Administrator>

同样$x变量没有指定任何左值,所以也是把它丢到标准输出去,即显示变量的值。

明白了这个再来看Powershell中函数返回值的问题。Powershell的函数返回值是函数体里面所有输出的值,而并不是return语句指定的那个值。

也就是说,函数体里面任何到标准输出的值都是返回值的一部分。

比如这个函数:

function test1()
{
"abc"
}

如果按照传统编程或脚本的思路来看,这里没有任何return语句,理应没有返回值,但运行这个函数的结果却是:

PS C:\Users\Administrator> test1
abc
PS C:\Users\Administrator>

按照传统思路来看这样的搞法就很纠结了,而且似乎也没什么必要这么玩,玩起来也会有无数问题,咱们一个一个道来。

第一个问题:返回值应该只有1个才对,按照这样的方法来搞,岂不是我放几个变量里面,就会有几个返回值吗?这样混乱的函数返回,后续应该怎么处理啊?

答案:确实只有一个返回值,但也确实你输出什么他就返回什么,所以结果呢,就是返回值是一个大Array,Array里面包含了函数里所有的输出。不信看这个函数test2:

function test2()
{
"abc"
"def"
123
}

看这个函数执行的结果:

PS C:\Users\Administrator> test2
abc
def
123
PS C:\Users\Administrator>

我们还可以把执行结果保存到变量,并通过调用GetType()方法来得知返回的对象类型:

PS C:\Users\Administrator> $result=test2
PS C:\Users\Administrator> $result.GetType()

IsPublic IsSerial Name                                     BaseType
——– ——– —-                                     ——–
True     True     Object[]                                 System.Array

可以看到确实是返回了Array。

第二个问题:有办法指定返回值类型吗,我还指望通过返回来的数据继续处理呢,这么一个大包Array丢过来,后续工作岂不是很麻烦?

答案:一点都不麻烦,其实返回回来的数据,都完整的保存了原有的数据类型,处理起来没有任何障碍,请看刚才的test1和test2函数:

PS C:\Users\Administrator> $result=test1
PS C:\Users\Administrator> $result.GetType()

IsPublic IsSerial Name                                     BaseType
——– ——– —-                                     ——–
True     True     String                                   System.Object

PS C:\Users\Administrator> $result=test2
PS C:\Users\Administrator> $result | % { $_.GetType()}

IsPublic IsSerial Name                                     BaseType
——– ——– —-                                     ——–
True     True     String                                   System.Object
True     True     String                                   System.Object
True     True     Int32                                    System.ValueType

test1只有一个返回项,所以可以直接GetType(),可以看到String被传回来,而test2因为Array里面有3项,所以遍历整个Array,可以看到2个String和1个Int32也都完整保存下来了。其实这里可以传递任何.net类库中的object类型甚至是自定义的对象类型,完全没有问题。

第三个问题:有些输出我不想让它放到返回值怎么办?比如下面一个函数:

function test3()
{
$due=1000
Write-Output "您的预付款余额是:"
Write-Output $due
}

输出结果自然就是:

PS C:\Users\Administrator> test3
您的预付款余额是:
1000

如果想把1000从函数结果当初提取出来,非要解开Array取第二个值,那是在太麻烦了,还不如不用函数算了。就像必须这样来拿数据:

PS C:\Users\Administrator> $x=test3
PS C:\Users\Administrator> $x
您的预付款余额是:
1000
PS C:\Users\Administrator> $x[1]
1000

这么搞太挫了,我们要既允许函数输出信息,又要让最终返回只要我需要的值,去掉提示信息,那怎么办?

答案:函数这么写,把输出语句用Write-Host代替:

function test3()
{
$due=1000
Write-Host "您的预付款余额是:"
Write-Output $due
}

再来看函数输出:

PS C:\Users\Administrator> test3
您的预付款余额是:
1000
PS C:\Users\Administrator> $x=test3
您的预付款余额是:
PS C:\Users\Administrator> $x
1000
PS C:\Users\Administrator>

可以看到提示语句是函数运行时输出的,但并不包含在返回值当中。其实这里Write-Host指的就是在屏幕输出,而Write-Output指的是输出到标准输出,当然如果省略Write-Output也是输出到标准输出。

第四个问题:有些Cmdlet/Fuction/Method本身具有返回值,我们有时只是需要执行这个Cmdlet/Function/Method本身而已,并不需要它的返回值,此时返回值会自作聪明的被我们外层Function捕获到而又被返回上去,怎么办?比如有这么一个function test4,我希望取得当前目录,并列一下目录里面的文件,这个很简单:

 

function test4()
{
pwd
dir
}

可问题来了,pwd返回的是当前目录的Directory object,dir也返回当前目录的object,这样返回值就有了2个当前目录,而我们只要一个,怎么办?想当然的改成Write-Host dir,结果也很喜剧,直接输出三个字母"dir”给你看。

答案:稍微一想就有解决方案了:

function test4()
{
pwd
$temp=dir

Write-Host $temp
}

这都要临时变量,是不是太傻了点?而且如果这里不是dir而是一个耗时很长才能完成的一个调用,并有很长输出的调用,这里完全是用了一个一点用处都没有的变量,确实太傻了。

不过如果不是Cmdlet的话,像一些方法之类的东西,可以在方法调用时前面加上[void]强令其无返回值,也可以解决,其实大部分情况,碰到的应该都是这种类型。为了说明这个用法需要稍微复杂一点的例子,前面那些愚蠢的用法解释不了这个问题,我借用了Powershell Cookbook中关于performance counter调用的一个例子,如下:

Function getcounter()
{
    $arguments="System","System Up Time"
    $counter= New-Object System.Diagnostics.Performancecounter $arguments
    [void] $counter.NextValue()
    New-Object TimeSpan 0,0,0,$counter.NextValue()

}

 

根据.net类库,NextValue调用必须使用2次才能得到正确结果,所以我们可以在第一次调用前加一[void]来避免额外的返回值。

第五个问题:我强烈要求继续使用return关键字来限定返回值,有办法吗?

答案:很不幸这个没有解决方案,虽然Powershell支持return关键字,但函数的行为是不会受它影响的。比如:

function test5()
{
"abc"
$x="def"
return $x
}

test5的运行结果如下:

PS C:\Users\Administrator> test5
abc
def
PS C:\Users\Administrator>

还是将前面的abc以及return中的变量全部输出,其实这里的return跟Write-Oupput没有任何区别。

这就是Powershell中函数一个让人不怎么爽的特性,说实话,如果第一次接触函数,这么搞应该会挺舒服,但是对于有其他程序和脚本经验的人,这个特性就有些蹩脚了。

 

我承认我好久没看电视了。中央二套搞得这么个《倾国倾城》我是一集都没有看过。不过《倾国倾城》这首歌还是偶尔听过的,当时的感觉就是词的意境很美。今天偶尔发现竟然有齐豫齐秦姐弟俩演绎的版本,仔细听了下不由得十分喜欢起这首歌来,可惜能找到的只有晚会现场版,效果很差。不过听起来还是十分有味道,尤其喜欢这句“此刻鲜花满天幸福在身边”,想来如果有此体验的话,也算不虚此生了。

Continue reading »

 

这两天经常在某些新闻里看到“纵贯线”这个词。起初没注意,后来仔细看了一下才发现是四个许久没有消息的老男人竟然凑一块去了:罗大佑,李宗盛,周华健,张震岳4个人竟然租了个乐队。罗大佑键盘,李宗盛吉他,周华健贝斯,张震岳鼓手。

这四个人也算是功成名就了。他们的音乐基本上都可以当作是一个时代的经典而被记载入流行乐史了(当然最后一个还是有不小差距)。鄙以为,到了他们这年纪,老老实实在家享清福就行了。本来这三个即使是在娱乐圈也都算是模范好男人了,想不到这个时候又想不开跳出来跟小辈抢生意。别最后像那个蔡琴大娘一样非要在生意场把自己名声搭进去就不合算了。

简单找了一下资料看了看,据说这哥们一行4人(怎么听起来像西游记)自乐队组建起来就打算风风火火玩一年,台湾内地逛一圈就解散。如此这般的话,这4人的演出倒也算值得一看了,毕竟这么顶级的音乐教父级别的人物凑一块,玩票说不定也有好作品。只是希望不要因为突然生意好起来哥几个又为商业低头就好。音乐圈里仅有的人文气息基本上就剩在他们身上了,尤其是头两位。

刚好前两天台北小巨蛋的第一场演唱会刚完,找到了网上放出来的视频看了下,没想到还算挺有意思的。这4人本来就长得都歪瓜裂枣,吼出来的声音都没有他们写出来的词好听。不想让他们这样半跑调半改调地这么唱以往那些记忆里的歌曲,竟然还是那么有味道。看来等7月份他们来上海的时候,有必要再去现场捧捧场。

© 2012 Solo Estoy Suffusion theme by Sayontan Sinha