| jinmo's profile橙色接触PhotosBlogLists | Help |
橙色接触I wish, that I could turn back the time. 'cause now the guilt is all mine, can't live without the trust from those you love. |
||||||
|
June 22 看房子要搬家了,到处去看房子。周一在莘庄看了一套,九几年的老房子了,连个阳台都没有。厅很少。想找更新一点的房子,就先放下,一直没回复中介。中介还一直催我,你快点决定。这房子很好,很容易租,最多等2天。
然后趁周六又去看了三套,才发现第一套真的很好。这三套看下来简直是惨不忍睹。8几年的房子,地板都黑了。厕所浴室加起来不怀疑不到4平米,水泥的浴盆,边跟马桶一边高。墙上的马赛克都掉了,又阴又暗。还没有厅,没有厨房。一进门就是做饭的地方,排风扇的管子直接连到楼道里。有一套在顶楼,我看他们直接在楼道里放要木棍凉衣服。
这房子也实在是太挫了。住这种地方真委曲。我奶奶家也是8几年的房子,但是,至少浴盆不是水泥的。
最后让我感慨的是金沙江路那边的。两间屋子,一推门,每个屋子里面放了三个双层铁架床。有人光着膀子在看电视,有人拿个笔记本上网。一瞬间,仿佛回到了大学时代…… May 06 五一在苏州由于MSN的相册实在是太屎了,照片都放在picasa上了。 流水账记录一下。首先,去了朱鸿兴面馆。去这家是因为看了陆文夫的小说《美食家》。里面的主角叫朱自治,一大清早一睁眼就要去朱鸿兴吃头汤面。里面还说一碗面有各种吃法,宽面烂面,重青免青。我晚上去的,头汤面是肯定没了,什么吃法服务员也没问。忙都忙不过来。点了一碗,跟上海的纳米材料面好象没啥区别么。 第二天先去了寒山寺。这个有名就是因为小学语文“姑苏城外寒山寺”这么一句。里面很多地方都把那首诗翻来覆去地写着,后面还把它刻在一个超大的诗碑上,就怕你不知道。而且很多地方的名字都叫什么“清净”,“无上清凉”,寒山寺真是好寒。里面香火很旺。 寺里有一副对联:“意定天无云,心清水月现”。我觉得应该是“自现”才对仗起来。不过我照片看了好几遍都是“月现”。 看到很有意思的一块匾。上面写着“拈花微笑”。佛教的典故。最后还看到了估计是能夜半钟声到客船的巨大的钟。 最后发现它的出口放在解脱门。有深意。 然后逛了一下园林。苏州人民很幸福啊,自己家的东西就写在义务教育课本上,全国人民都得学习。留园纪念。他们拍照,我拍他们。 评弹 坐在二楼吃吃东西,看着外面下下雨,听听评弹,感觉是不错啊。有点苏州的意思了。 里面有两件很意思的事。一件是在一个专卖开过光的佛像的地方,看到一个佛像前面,竟然放着一个《面包一家亲》里类似的小面包。售货小姐说这是客人供奉给佛祖的。不知道佛祖看见这个能看不能吃的面包,脸上会不会出来一个囧字。想拍照被售货小姐制止了。还有一件事情是,碰上了免费的解签,就是试着算了一卦。算卦的说:“你做事不够果断,这是男人的大忌”。就这一句,彻底把我霹雳到了!因为前一天刚刚有人跟我说过这个问题,今天就又被这个第一次见面的道士点出来了。有那么一瞬间,我还真有点信他了。难道他真能算出来?但是后面停下来一想,他可能只是见的人多了,看人比较准。也许,他才是微表情的专家? 最后去逛了逛号称小周庄的地方。这才有江南水乡的感觉。只是没想到这个地方竟然在苏州市中心不远。 加工银器的人。 民俗味道很强的店 臭豆腐。一进店就后悔了,里面实在是太臭了。臭豆腐西施的无影手。不过这家的臭豆腐太咸了。辣酱也不是光咸不辣。 最后看做糖画的。 最后说一下苏州感觉最深的一点,就是出租车。苏州的出租车太牛了。完全是卖方市场啊。且不说打车难,而且司机本身也够拽。有个司机跟我们说,苏州人很懒惰。从来不坐公共汽车,出门就打车。人还没出来,手先伸出来了。像观前街这种地方,打不到车的。得走远点才行。坐了两天之后发现原因了。因为车费太便宜了。打了两天车一般都是10块,只有最后一次打车去汽车站,开了老半天了,20块。这么长的行车时间放上海感觉都至少得40了。 April 08 做梦听见猫叫昨天晚上睡着了做梦。听到了猫叫的声音。感觉是在窗户外面。
然后我一拉开窗帘,外面有一点橙黑相间的小猫,正在贴着我的落地窗外面打滚,一边喵喵叫。好想是想管我要吃的。
我看了一眼外面,发现外面是平地。远处好像还有小房子,感觉像是我家。我突然意识到,我家是3楼啊,现在住的是2楼,怎么跑到1楼去了?
随手把窗帘拉上,一扭头,看见床角趴着一只淡黄色的小黄猫。
我在正高兴呢,觉得小猫怎么都进屋了?然后正要过去碰碰它,它突然一个漂移,是漂移,一道白影,移到地上,消失了。
见鬼了!浑身发冷……
是不是被吓起来了,我忘了……
今天早上想到,梦里是不应该听到声音的呀。那那两声喵喵的,是从哪来的呢? April 07 Goodnight moon杀死比尔2 的片尾曲。可惜奥运一开完,youtube就又上不去了。这就是qin/gang说的我们充分开放的互联网。
1后面的The Lonely Shepherd也很好听。 March 30 SCIM的hotkey解决了 昨天说的SCIM的Hotkey问题解决了。 我是想把五笔设成Ctrl+Shift+2,结果怎么弄都不行。火大。 刚才在term下,发现我按了Ctrl+Shift+2之后,出来的是@。我突然想到,是不是得用Ctrl+@来表示Ctrl+Shift+2? 试了一个Ctrl+@,还是不能用。cena。只能再试试Ctrl+Shift+@,oh,yeah,这下问题解决了。 这个问题是有点脑筋急转弯的意思了。这算是,SCIM的bug么? 手工解决vmware的时间同步问题As you know,Windows做Host在vmware里装Linux的话,Linux的时间会比正常的时间走得要慢。“据vmware的官方解释,是由于vmware使用Time Stamp Counter (TSC,或译为时间戳计数器)来对guest记时,而由于linux kernel可以通过APM功能让处理器进入低功耗状态,这种状态对于某些处理器(如p III, centrino等)来说,会导致TSC变慢。”。怎么看都像是个vmware的bug。
网上找到的解决方案主要有两种(这里):1. 禁用APM,安装vmware-tool让它自动更新时间。2. 用ntpdate去更新时间。但是这两种方法都有问题。方案1,装了vmware-tool后可以更新时间,但是它是3分钟同步一次。对于一个跑3秒慢1秒的系统来讲,3分钟一次完全不够。对于方案2,经常会更新失败。总之,这两种方法我是从来都没有成功过。
今天实在受不了,决定自己解决。想的方案是在Windows上放个程序,不停地把时间发到Linux上。现在问题解决了。半个多小时,没有出问题。如果说缺点,就是Linux的负载稍微有点高。因为Linux端的程序是用Perl写的,设定时间的时候又直接用了date命令。在多的时候,大约会占用1.0%的CPU。看哪天抽空用C重写一个吧。
----------------------------------------------------Windows端----------------------------------------------------
using System;
using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; using System.Threading; using System.Net; using System.Net.Sockets; namespace StdClockService
{ class StdClockService { const int MAX_SERVEE = 1024; ParameterizedThreadStart _ServiceListener, _SendTimeThreadStart; Thread _ServeThread, _SendTimeThread; Socket ListenSocket; Socket[] ServeeSocket = new Socket[MAX_SERVEE]; int[] UseableServeeSocketIndex = new int[MAX_SERVEE];
int NextUseableServeeSocketIndex; bool ThreadContinue = true;
Mutex ServeeSocketMutex = new Mutex();
public void Run()
{ InitServee(); _ServiceListener = Serve;
_ServeThread = new Thread( _ServiceListener ); _ServeThread.Start(); _SendTimeThreadStart = SendTime;
_SendTimeThread = new Thread(_SendTimeThreadStart); _SendTimeThread.Start(); } void InitServee() { NextUseableServeeSocketIndex = 0; for (int i = 0; i < UseableServeeSocketIndex.Length - 1; i++) { UseableServeeSocketIndex[i] = NextUseableServeeSocketIndex + i + 1; } UseableServeeSocketIndex[UseableServeeSocketIndex.Length - 1] = -1; for (int i = 0; i < ServeeSocket.Length; i++) { ServeeSocket[i] = null; } } int AllocServeeSocket() { ServeeSocketMutex.WaitOne(); int re = NextUseableServeeSocketIndex; if (NextUseableServeeSocketIndex != -1) { NextUseableServeeSocketIndex = UseableServeeSocketIndex[NextUseableServeeSocketIndex]; } else { throw new Exception("no usable socket left"); } ServeeSocketMutex.ReleaseMutex(); return re; } void FreeServeeSocket(int SocketIndex) { ServeeSocketMutex.WaitOne(); UseableServeeSocketIndex[SocketIndex] = NextUseableServeeSocketIndex; NextUseableServeeSocketIndex = SocketIndex; ServeeSocket[ SocketIndex ] = null; ServeeSocketMutex.ReleaseMutex(); } public void Stop() { ThreadContinue = false; _ServeThread.Abort(); _SendTimeThread.Abort(); } void SendTime(Object obj) { while (ThreadContinue ) { Thread.Sleep(500); for (int i = 0; i < ServeeSocket.Length; i++) { if (ServeeSocket[i] != null) { try { String DateTimeStr = DateTime.Now.ToString("yyyyMMddHHmmss"); byte[] Buffer = System.Text.Encoding.ASCII.GetBytes(DateTimeStr); ServeeSocket[i].Send(Buffer); }catch( SocketException ){ FreeServeeSocket(i); } } } } } void Serve(Object obj) { ListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint ListenPoint = new IPEndPoint(IPAddress.Any, 19811); ListenSocket.Bind(ListenPoint); while (ThreadContinue) { try { ListenSocket.Listen(1); Socket NewSocket = ListenSocket.Accept(); int ServeeSocketIndex = AllocServeeSocket(); ServeeSocket[ServeeSocketIndex] = NewSocket; } catch (SocketException e) { } } } } } ----------------------------------------------------Linux端---------------------------------------------------- #!/usr/bin/perl
use strict; use warnings; use Socket; my $lock_fh = undef;
sub lock{
my $lock_file = '/var/lock/' . $0 . '.lock'; open $lock_fh, '>', $lock_file; my $re = flock( $lock_fh, 2 | 4 ); return $re; } sub connect_to_server{ my( $ip, $port ) = @_; my $proto = getprotobyname( 'tcp' ); my $addr = inet_aton( $ip ); my $sock_addr = sockaddr_in( $port, $addr ); socket my $s, PF_INET, SOCK_STREAM, $proto; my $con_ok = connect( $s, $sock_addr ) or die $!; return $s; } sub sync_time{ my ( $sock ) = @_; my $buf = undef; while( 1 ){ my $re = read( $sock, $buf, 14 ); return unless( $re ); my @d = split //, $buf; my $cmd = sprintf( 'date %d%d%d%d%d%d%d%d%d%d%d%d.%d%d > /dev/null', @d[ 4 ... 11, 0 ... 3, 12, 13 ]); system( $cmd ); } } sub main{ my( @param ) = @ARGV; if( 2 != scalar @param or $param[ 1 ] !~ /^\d+$/ ){ print "Usage : $0 SERVERIP PORT\n"; return; } my $re = &lock(); return unless( $re ); my $sock = &connect_to_server( @param ); &sync_time( $sock ); } &main(); Ubuntu今天一直在玩这个东西。起因是因为,vista太令人火大了。我要拷一个100G的文件到移动硬盘上,在大约拷到一半的时候,机器就死掉了。重复若干次都是这样。原因不明。可以用Alt+Tab切换窗口。但不是管换到哪个窗口全都不能动。白白一片。只能重启机器了。 Ubuntu这个东西很有意思。自带了SCIM,但是没有码表;带了播放器,却没有解码器。真囧啊。这就好像是买了汽车却不带轮子一样。而且还发现其它一堆问题。比如flash里的中文全是方框,SCIM里的hot key设置了后却没用,怎么都不能自由切换输入法。这些回头再研究。 March 29 三件衣服“三件衣服”拿英文该怎么说?
three clothes?不对。关于这个问题我们追着一个老外问了半天,我们甚至给他举了个例子:我问张三买了多少衣服,他说买了三件。最后他给逼急了:“不能问你买了多少衣服,只能问你买了什么衣服。我也只能说我买了什么什么什么”。- -
想起一个。有个岛上的土著没有“树”的概念,但却有什么树什么树的概念。所以他们不会说“那有很多树”,只能说“那有很多什么树,什么树,什么树”。把那的树挨个枚举一遍。然后有个结论。语言越高级,越有抽象的概念。上面英文的那个例子,虽然不能是抽象,但确实是没有这种简单的表达方式的。
我原来以为只有笑话、诗、对联是不能翻译成英文的。现在又多了一个:三件衣服。 March 14 兔子~,兔子~ |
|||||
|
|