笑 (转)

林徽因

笑的是她的眼睛、口唇,
和唇边浑园的酒窝。
艳丽如同露珠,
朵朵的笑向贝齿的闪光里躲。
那是笑——神的笑,美的笑;
水的映影,风的轻歌。

笑的是她惺松的头发
散乱地挨着她的耳朵。
轻歌如同花影,
痒痒的甜蜜
涌进了你的心窝。
那是笑——诗的笑,画的笑;
云的留痕,浪的柔波。

朵朵和奶奶回家了

因为媳妇到呼和浩特开差,我妈不大会普通话,又带着朵朵,第一次坐飞机,我是比较担心。媳妇离开前,她跟我妈讲了一遍坐飞机的流程。小吴送她们去机场,又跟她们讲了一遍。我也很详细的讲了一遍,听到最后我妈说她都可以背下来了。

美国东部时间今天早上我给妈打电话,说已经顺得到家。还夸了一下朵朵,说找登机口的时候,是朵朵帮找到的,飞机上系安全带,我妈一下子还不会,是朵朵帮她系上的,还得意洋洋问奶奶说,你知道怎么解开吗?结果这么一掰就解开,我妈说她还真不知道。

我让朵朵接电话,本想夸她几句,结果接上问,是妈妈吗?我说是爸爸。她居然不接了,将电话又还她奶奶了。不过听说回家已经跟我弟的儿子玩到一起了,玩的很高兴。这就好。

原来我们是吃兴奋剂长大的

看到腾讯的新闻,

“奥运期间被禁止销售常用药名单”——奥运将至,根据国家食品药品监督管理局的规定,在全国范围内规范含兴奋剂生物和中药制剂的生产、经营和销售,在零售药店除胰岛素以外的蛋白同化制剂和肽类激素,一律停止销售。这意味着,皮炎平、派瑞松、咳喘宁、大活络丸等百姓常用药被禁止销售。……

“药监局规定奥运期间停售部分药品”——包括了平常用于止咳的急支糖浆、复方川贝止咳糖浆,都被列入被禁售的药品名录里了,就连几毛钱一板用于感冒的感冒胶囊,这次也被停止销售,而恰恰这些药里都含有能够兴奋中枢神经的麻黄碱。

怪不得国人都自信满满的,不少年轻同志还立志解救美国人民于万恶资本主义的水深火热之中,原来是因为我们都是吃兴奋剂长大的。我比较担心的一点是,奥运过后,这些兴奋剂药就回到药店正常销售了。

北京朋友都在感叹这段时间北京变化真大,变得漂亮、安全或者说“和谐”,这是真心话,不是在讽刺,尽管奥运的严格管制带来一些不便,但明显的总体上讲对北京看到的好处更多。我感叹于原来一些事情不是说就没有法子做好,而是平时根本没认真去做。中国很多事情都一样道理。

大量时间序列快照文件到时间序列文件相互转化的一个思路

南卓铜([email protected])

想像这样一种情境,我们有一个空间网格文件,分辨率为30×30 m,空间范围为30x30km^2,每个格子一个数据的话,也就是说有1,000,000个数据(假设是double类型)。每个网格文件可被认为是研究区域时间序列的一个快照。整个时间序列为11年(1997-2007)逐小时,即多达96,408个网格文件。我们要做的是,将全部的时间序列快照文件转换成每网格上的时间序列文件(将形成1M个文件)。类似的,我们还要做的是全部网格的时间序列文件时间序列快照文件的转换。

全部保持文件打开是不可能的,因为文件句柄是很宝贵的资源,每个进程都只允许有限个打开的文件(比如512个)。通常的迭代思路是,打开一个时间序列快照文件(网格文件),取其中一个网格上的数据,打开此网格的时间序列文件,写入时间和对应的数据,关闭两文件。这意味着需要打开和关闭文件1Mx96,408次。大家知道磁盘I/O的开支是十分昂贵的。此迭代方法将需要极长的时间来完成(一周甚至几周,取决于硬盘读取数据)。而内存却没有得到有效的利用。

对于内存十分大(比如64G内存)的服务器,也许可以将全部的待转换文件一次性装载到内存,每个在内存内分析,组合成输出格式,再一次性格式化输出。对于一般的个人机器此方法不通。

为了优化速度,我们采用这样的解决方案。针对时间序列文件时间序列快照文件(网格文件)的转换,

在内存生成n个时间序列快照文件,每个网格上用Missing data来填充 (内存主要消耗在这里)
打开一个时间序列文件
    从时间序列文件读n行(每行包括时间和对应的double值)
    将读取的n个数据,写入对应的n个快照文件的对应位置
关闭此时间序列文件,迭代
将内存内的n个快照文件写出
从n+1的位置开始再迭代以上过程,一直到结果。(关键)

最后一次可能不正好等于n,需要程序作相应控制。n的取值需根据运行的内存情况进行高速。对2G内存的工作站,n取为5000-10000。内存越大,n值可以取越大,可以有更好的执行效果。

当然,也可以同时打开多个时间序列文件,以最大化优化性能,但带来的是迭代控制上的复杂。而且据我的有限测试,同时打开多个时间序列文件,性能并没有得到明显改善(可以理解,因为磁盘I/O的存取本质上讲是磁头的顺序读取,由同一个磁头臂来控制)。

其中需要注意的是地方,是如何控制下一次准确快速定位到n+1的位置上。时间序列文件是文本文件,顺序读取在性能上很受影响。比如在最后一个循环时,将先遍历前面的全部行,然后才到达需要的起始行。我们需要以二进制形式打开,并自行控制每个时间序列文件的起始读取位置(各文件位置可能不一样,由于每行数据长度不等)。在c#里,以StreamReader打开,无法通过base stream取得当前准确的位置(position)。我们构造了TimeSeriesDataFile类。初始化需要给定文件名和起始读取的位置。ReadLines函数可以返回给定数目的数据行,通过CurrentPosition属性取得下一次读取的起始位置。

using System;
using System.Collections.Generic;
using System.Text;

namespace nzt.TimeSeries2Spatial
{
    /// <summary>
    /// Access time series data text file as binary.
    /// </summary>
    class TimeSeriesDataFile
    {

        private string _filepath;
        private System.IO.FileStream _fs;
        private long _lastpos;
        private long _startpos;
        private const int MAXLINELENGTH=50; //bytes, ensure it larger than max length of each line.

        public TimeSeriesDataFile(string filename, long startposition)
        {
            _filepath = filename;
            _startpos = startposition;
            Open();

        }

        private void Open()
        {
            _fs = new System.IO.FileStream(_filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            _lastpos=_fs.Seek(_startpos, System.IO.SeekOrigin.Begin);
        }

        /// <summary>
        /// Read a number of lines from stream beginning at startposition.
        /// </summary>
        /// <param name="count">Number of lines to be expected to return</param>
        /// <returns></returns>
        public string[] ReadLines(int count)
        {
            if (_fs == null) return null;

            byte[] buffer = new byte[MAXLINELENGTH * count];

            int bytesRead=_fs.Read(buffer, 0, buffer.Length);

            if (bytesRead == 0) return null;

            //we have data in buffer now.
            List<String> sb_list = new List<String>();
            int c = count;
            StringBuilder sb = new StringBuilder();
            int i;
            for (i = 0; i < bytesRead; i++)
            {
                if (buffer[i] != ‘r’ && buffer[i] != ‘n’)
                    sb.Append((char)buffer[i]);
                else if (buffer[i] == ‘n’)
                {
                    sb_list.Add(sb.ToString());
                    if (–c<=0) break;
                    sb = new StringBuilder();
                }
            }
            if (c>0 && sb.Length>0) sb_list.Add(sb.ToString());

            _lastpos += i+1;

            return sb_list.ToArray();
        }

        public long CurrentPosition
        {
            get { return _lastpos; }
        }

        public void Close()
        {
            _fs.Close();
        }

        ~TimeSeriesDataFile()
        {
            Close();
        }

    }
}

对于时间序列快照文件(网格文件)时间序列文件的转换,应用同样的思路。但由于时间序列快照文件(网格文件)一般较小,比如几百KB(相对,11年的逐小时时间序列文件则到2MB以上),则无须对StreamReader进行改造,可以一次性load到内存,在内存进行定位分析。

如果大家还有好的解决方案,也请分享。

荒唐,荒唐

下午去钓鱼,虽然因为水库放水,鱼不很多,但很高兴。回来晚上11点了,洗了个澡,很爽。然后在新浪看到一个新闻,让我一天的好心情全没了,又有类似前面坐车呕吐的感觉。

新闻标题是“卫生部要求部分手术酌情暂缓,保血液供给奥运”。第一反应是不敢相信。第二反应是荒唐!明白了,奉劝各位千万千万不要在奥运期间动手术,不能用血,否则等死吧。这便是全民奥运。老百姓的命比不上高贵的洋大人的命值钱。真是一切的一切要为奥运让路,包括献出大家的生命。什么酌情,这些模糊的概念,看谁不舒服,看谁没钱就不给血呗。没有规定出来的时候尚且都这样,何况现在又多了“酌情”的规定呢。新闻正文的4条说明,我的感觉是当婊子还要立牌坊,又怕被人骂,又要出规定。外国人中国人如果真在平等的位置上,谁更需要用血谁用去,没这规定就这么做来着,何必又来这么一个规定。所以它的重点在手术暂缓,真当大家是傻子?所以这绝对不是咱们党干的,党是人民的党,首先会保证人民的利益,绝对是少数隐藏在党内的别有用心的人想出来的试图败坏党声誉的人干的。

有时候是恨铁不成钢呀。

贵州628新闻发布会

下载了贵州628事件的省府新闻发布会录像,是贵州省电视台的现场直播。没有全部看完,几点个人感受:

1) 新闻发布会象搞笑演出,省府发言人讲着找不到稿子了,停顿了半分钟,下面的记者面面相嘘;
2) 是不是因为小县城的领导们没经历过这么多记者的新闻发布会,一个个讲话嗑嗑碰碰的,在害怕紧张什么?
3) 记者提问好搞笑,问的没有稿子,答的照着稿子原原本本的念;最后点名让某单位记者提问,总算座上全部领导都轮着念了一翻稿子;
4) 内容是中国一贯特色,“打不还手,骂不还口”,我记忆最深了,莫非提前进入共产主义了?我印象里咱们的可爱的公安警察城管好像没有受过这么优良的教育吧?估计只有领导训他们的时候才能做到“打不还手,骂不还口”。
5) 案件本身我不置评,相信政府还是有良心的吧,但对案件的描述也搞笑,小男孩在桥上做俯卧撑? 这细节很重要吗?是为了回应有人目击小男孩的类似动作吗(强奸好像也会有类似的动作)?说是自杀,大家都知道动机很重要,为什么自杀?没有说明。案件的说明好像那几个同伴是救人,这相差大了,政府现在这样遮遮掩掩,也是对他们的不公平。
6) 一家农民有多大的能量,能一下子召集300人?莫非死者家属本身就是黑社会头头?好像也不能自圆其说。
7) 这匆忙赶出来的发布会,好像跟“深入细致的调查”之类还有差距,前面没调查好,导致这么大的事,一天时间就“细致”调查好了?
8) 贵州省政府估计受的来自上面的压力也不少。好多官员可能因为这事仕途无望,理解理解。不过做秀也要做的好一点,怎么样也要代表省级水平。
9) 说真话,看起来真是很难,尤其要让当官的透明公正的办事。还有很长的路要走。

5460同学录信息让骗子有机可乘

我们辛同学在6月23发布消息说:

“23日晚,我接到一个电话,13410673900,自称翁计传,还没有开始骗我,就被我识破了.
建议网管将所有陌生人踢出班级.”

安同学在6月24日说:


事件经历:

23日上午9时一个自称翁计传的人给我打了电话,问我是否还记得他,说他人在济南出差,要过来找我玩。
24日上午8点半,此人打电话告诉我已从济南出发,问我到东营大概需要多长时间。
9点半,又打电话告诉我说在某一红绿灯处发生交通事故,不慎撞伤一行人,说不能来了。
约10时,气喘吁吁的在电话中说情况不妙,需要手术费用大约三万多,让我帮忙支付一万多,并告诉我帐户。在我询问下告知我他现在济南人民医院。

……

整件事情就像场电影,23日接电话的那一时刻以为老同学将至而兴奋,然而这种兴奋立刻被疑虑所代替。一是因他的话语中带着较浓的广东口音,让我尤感陌生,二是他对我们大学时期的同学经历避而不谈。虽然如此,但仍还是憧憬着老同学的到来,即告知家人准备迎接。

23日晚仍然回想通电话时的每一细节,愈发觉得事情蹊跷。网上查询了一下手机号码归属地,显示是深圳移动全球通卡,并非中山市。

24日8点查到翁计传的电话,通话后方知他正在单位,显然被人冒充。于是我等待好戏的开场,感觉每步都在预料之中,像导演了一场电影。只是这种电影未见到骗子落入法网的结局,而最后以我的一个短信结尾“李小鬼,你的戏演完了?”。

我们陈同学回复说:

“此人也给我打过电话,我正好要出差,所以回绝了。”

同志们要提高警惕,接到陌生自称是同学的电话时,不妨先聊聊大学时大家都知道的事情,一听不大对劲,设置个陷阱确认一下,比如“你知道了吗,前两天我们班长同志和老公一起从美国回来了?”事实上,我们班长同志首先是个男性,也没有到美国去。证明是假,不妨戏弄一下骗子了,调节一下平凡沉闷的生活也不错。

高考志愿

高考、填志愿迁到千万国人的心,它的能量也辐射到美国了。今年我堂弟还有三个侄女都高考。成绩都不好。堂弟家底好,会自己找关系,几个姐姐也都是大学生,他们自己可以搞定。我向他提议了一个高校,嫌太差,说他爸要拿钱买一本,不知道能否成功。管不上,祝愿他吧。另两个侄女其实跟我不熟,只是听说他们也高考。我打电话礼貌上问了一下,也不想给自己找事。实际关心的是在江苏的侄女。打了无数个电话,帮找关系建议高校和专业。

今天江苏的高考制度很变态。考语数外三门必考的,还有两门选考的,比如理科要考物理化学。语数外分数加起来叫什么特征分,数学还有什么附加分。选考两门的分ABCD等级。高考投档是按特征分和选考课目等级来的,比如江苏的一本特征分要求330,同时要求选考课目必须2个B。而高校在录取考生时,还会考虑学生的附加分等。总之不一般的复杂,佩服江苏的那班官员,拍屁股可以想出这样折腾人的方案。在全国其余省份都是以总分高低决定上线与否的情况下,江苏考生就很吃亏,因为除了特征分上线外,还要求理科生的物理化学必须要到2B以上才能上本科。一些名校(只是国内的名校了,放到全世界范围三流学校都排不上)还要求物理化学2A以上。偏科学生这样就很吃亏,即使总分再高,物理化学没有2B甚至都上不了本科。据说江苏文科状元政治没有A,导致没法子上清华北大甚至南大也不要他(她)。此其一。

其二,如果总分很高,但偏科,比如物理化学只有1B1C(我侄女就这种情况),那么理论上讲不能上一二本。但江苏又规定,高校有自主招生的权力,考生可以自己与高校联系,如果高校同意招收,学生还是有可能上二本的。苦了没权没钱的学生,他们要如何自己跟高校联系呢?拍屁股想出这方案的江苏官员大概认为每个学生家长都是江苏省长,高校校长在外面排队等着家长召见——只有这样家长才能与高校联系上。拍屁股想出来的方案为高考腐败明目张胆敞开大门。

其三,江苏一直是高考大省,每年很多适龄考生。如今总分被压成300多分的空间,同样的分数都会有很多考生。如果85分是B,84分就是C,可怜的84分众多的学生,只有排除去挤专科吧。这是一个极端的例子,只是84分的学生一定就比85分的能力差吗?事实上,由于总分空间的减少,使得分数不能很好的表达学生的实力,从而导致整个程序的不公平。

能看着的正面的东西是这个方案能选拔各课均衡的考分。我同时也要问,均衡真有这么重要吗?这个问题怕谁也不能回答。我有无数的例子可以表明很多后来证明很优秀的人当初都是很偏科的。碰到现在这种制度,他们只有到民办高校或者专科里泡三四年妞玩三四年游戏了。

所以碰到这种烂方案,我侄女也只有认命了。江苏一向是高考的改革先锋,每年高考方案都变化,让我们期盼明年出来个更有才的方案吧。

Bill Gates v. 中国富豪

日前Gates宣布其500亿美元的资产全部捐到Gates Foundation。对比月前汶川大地震中一些中国富豪不愿捐款的行为,除了叹息摇头,能做的就是承认差距。

有看到天涯论坛上也有一些人怀疑Gates的动机,说是为了合理避税。美国是要征收很多的遗产税,这是事实。然而,布什政府在逐步消除征收遗产税,而Gates、巴菲特等人是公开反对政府这一行为的,指责这一行为将不利于美国的穷人得到公平竞争的机会。

也有人说将钱放到基金会,他子孙后代就可以一直管理着它并从中获利,不比遗产一下子被政府吃掉一半更好么。持这种怀疑观点的人是太不了解国外的对慈善基金会的监管力度了,可能是联想到此前汶川地震后救灾工作中出现的中国红十字会的一系列监管、审计和透明用款问题,从而认为这是国际上的一种常态。然而美国的慈善基金管理是很严格透明的,作为管理人只有权决定基金如何投资以及处理援助,却无权将钱作为私人用途,更甭说从中支付维护豪宅的开支。为了维护慈善基金的地位,美国法律也规定每年必须有不少于总基金的5%用于慈善支出。因此可以相信,Gates捐到基金会的钱是再不属于他个人或他家庭了。

其实Gates Foundation为了减少基金会未来可能产生的问题,宣布过在三位主要trustees死后50年将关闭这个基金会,他们相信,任何一个好事都应该有个结束的时候。

Gates基金会受益者遍布全球,我知道的西北水资源问题是受到世界银行和Gates基金会的资助,我们单位也有在执行此项目,以解决西北水资源短缺问题和提高西北贫困人口的生活水平。

所以基本上不需要怀疑Gates的动机。Gates也是不最伟大的,美国富豪一向有财富回馈社会的历史,由来已久。比如Carnegie在美国各个地方建了很多的图书馆、博物馆等社会公益项目,在死前将全部的财富返回给社会,他的名言是人如果在财富中死去是可耻的。美国各个城市到处是以富豪名字命名的街道、公园,到处可以见证富豪为社会作出的贡献。所以美国平民百姓好像没有象国内这样仇视富人。

不是说美国百姓素质高所以不仇视富人,而是因为国内富人素质偏低。据说数十位天津房地产老总汇集某高级宾馆,给汶川地震捐款,结果捐款下来一结算才几万,而给宾馆的场地费却要上万。我看着的富豪经常是灯红酒绿、名车美女、以权势和财富欺人,或者纵容子女横行霸道,为害百姓。说得可能有点过,也有好的富豪,但总体讲没有形成一种财富取之于社会、还之于社会的风气。贫富差距的拉大,使得整个社会有很强烈的仇富心理。这不是一件好事。

有研究人员归结国产党在大陆败退的原因为腐败和悬殊的贫富差距。好在有报道指出,现在执政党也很重视这些问题,比如将腐败问题列为未来几年严厉查处的工作重点。无论如何,意识到了总还有是希望的。