2008-03-23

钱包历险记

自从上次钱包丢了之后,就写了电话号码放在了钱包里。
中午出去吃饭,整天吃盖饭也吃腻了,想换换口味,于是就去了一家山西面馆,老板在那边忙着接订餐电话,好久才摆我。要了一碗牛肉面,吃完结帐走人,回到家呆了一会儿,接到一个陌生的电话,幸好接了,一开口就问“你中午在哪儿吃的饭?”搞的我丈二和尚摸不着头脑,就反问“你是谁啊?”“你是不是叫XXX?”“是啊,怎么了?”“你中午在哪儿吃的饭?”就这么几个来回,彼此都没有说清楚,那边说“你先挂了吧”。弄的我很不爽,有我手机号就罢了,连我的名字都知道,这些卖个人信息的垃圾,315晚会刚曝光了,还这么猖狂。

下午到了吃饭时间,一摸口袋,钱包不见了,翻了翻床上,也没有,这才猛然醒悟是不是把钱包落在中午的面馆里了?于是回拨中午的电话,那边问“要定什么餐啊?”我赶忙问有没有捡到一个钱包,老板说有空过来拿吧。于是飞奔过去,老板娘问我钱包里有什么东西,我说有身份证,老板年走到里屋里把钱包拿了出来,让我核实一下看有没有少什么东西,我说不用了,感谢一番,说以后一定多多光顾之类的话,竟忘了拿出点钱来意思意思。还是好人多啊,感谢山西人。晋商果然名不虚传,虽然小了点。

2008-03-20

Google chart API for map

Google去年推出了google chart api,可以用它生成各种图标,非常方便。有人就用C#进行了封装,以生成图表的url,我就把这个url用在了我自己的财务管理工具中了(其实我今天之前的使用也仅限于此,所以对其也不甚了解)。有人还把开发人员指南翻译成了中文版。Google 最近更新了google chart api,
1)取消了每天只能调用50000次的限制(平均大约两秒钟一次),但为防止dos攻击等滥用,对于每天请求超过250000次(平均每秒2.89次)的用户,仍保留封ip的权利。每天250000次,对于一般用户也足够了吧,如果不够,可以发信至chart-api-notifications@google.com
2)增加了雷达图表,这个暂时不知道在什么情况下使用,有时间研究一下

3)增加了地图,这个比较有意思,可以做出很多有意思的地图来。下面是世界上的社会主义国家地图(中国,朝鲜,越南,老挝,古巴),但目前最大只能是440*220,像下图就不是很清楚,或许今后google可以改进一下


Map of the World

第一幅的url是
http://chart.apis.google.com/chart?
cht=t
&chs=440x220
&chd=s:AAAAA
&chco=ffffff,cc0000,cc0000
&chld=CNCUKPLAVN
&chtm=world
&chf=bg,s,eAF7F0

每个参数的意思:
http://chart.apis.google.com/chart?
cht=t 指明使用地图
&chs=440x220 尺寸
&chd=s:AAAAA chld中每个国家对应的颜色值,使用简单编码
  • A = 0, B = 1 , Z = 25.
  • a = 26, b= 27 , z = 51.
  • 0(零) = 52 , 9 = 61

&chco=ffffff,cc0000,cc0000 颜色,三个颜色分别是未标注国家颜色,标注国家颜色起始值,标注国家颜色终止值。结合上面的颜色值,A=0,是简单编码中最小的,所以使用颜色的起始值。若是9,是简单编码的最大之,则使用颜色终止值。若是a,则按比例使用中间的颜色值。简单起见,上图都使用红色(颜色值相同,颜色起始值等于终止值)
&chld=CNCUKPLAVN 标注国家列表,使用iso代码.CN=中华人民共和国CU古巴=KP=朝鲜LA=老挝VN=越南
&chtm=world 地图呈现的区域,目前的可用值:
  • africa 非洲
  • asia亚洲
  • europe 欧洲
  • middle_east 中东
  • south_america 南美
  • usa 美国
  • world 世界
还没有大洋洲和中美洲,当然还有南极洲,不过这个基本上用不到吧
开发人员在group中承诺会增加更多的区域(比较起来,谷歌拼音的开发人员与用户的互动就差多了,不过终于有人出来说话了)



&chf=bg,s,eAF7F0 背景色,即海洋颜色,s表示实体填充

我目前了解的就这些,有时间再研究
期待c# 封装类库和中文翻译的更新。

另参考
阮一峰 Google Chart API
Blogscoped Google Charts API Update
Developer's Guide

2008-03-18

使用Subversion作为版本控制工具

1、架设服务器
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 下载最新的subverion 安装程序,最新版本为1.4.6
http://tortoisesvn.net/downloads 下载最新的TortoiseSVN,最新版本为1.4.8
安装svn,tsvn
创建版本库(如果单纯用作服务器的话,tsvn不是必须的,可以通过svnadmin create myreop 命令来创建版本库,详见svnbook)
设置访问权限
打开myrepo\conf\svnserve.conf,作相应的修改
[general]
anon-access = read
password-db = passwd

添加用户
打开myrepo\conf\password,添加用户,设置密码
[users]
zhangsan= 123
lisa= 12345

【update 20091224】一般可按照如下配置
svnserve.conf:
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

passwd:
[users]
harry = harryssecret

authz:
[groups]
#根目录下的所有资源
[/]
harry = rw

启动服务器
在命令行下输入
svnserve -d -r c:\myrepo
-d 后台模式
-r 服务器的根目录
方便起见,可保存为一个批处理文件

初始化版本库,两种方式
1导入方式
2签出空版本库,添加文件,签入
==================================
2、客户端
安装tsvn,重启(如果不需要命令行操作,不需要再另行安装svn)
在合适的(空)目录下右击,选择“svn checkout”
在“Url of repository” 中填写“svn://SeverName”,点击确定,即可得到一份拷贝

技巧、工具(不断添加):
优化TSVNCache.exe进程的I/O性能
tsvn的一个方便之处就是图标覆盖,可以随时在资源管理器里建设那些文件被修改了。但默认情况写TSVNCache进程会扫描整个硬盘,对于性能一般的电脑,这是很大的开销,一个办法是完全关闭tsvn的图标覆盖。另一个办法是只让tsvncache进程扫描WC 文件夹:
setting => Look and Feel => Icon Overlay
在Exclude Paths 里填入所有盘符,每行一个,例如
c:\*
d:\*
e:\*
f:\*
g:\*

在Include Path 里面填入 Working Copy 文件夹,例如
d:\myCopy\*
确定之后在任务管理器中杀死TSVNCache.exe进程,它会在需要的时候重新启动,之后电脑的性能就会有所提升了。
参见
Optimize Tortoise SVN Cache (TSVNCache.exe) Disk I/O

一个服务器,多个版本库
其实很简单,就是建立一个版本库文件夹,并把它作为服务器的根目录,所有的版本库建在此文件夹之下,例如,我们要在名为HAL9000的服务器上建立三个版本库:GreatDog, SmallCat, BraveGoat,,目录结构可以是这样:
D:\AllRepos\GreatDog
D:\AllRepos\SmallCat
D:\AllRepos\BraveGoat
启动服务器:
svnserve -d -r D:\AllRepos
GreatDog的地址:
svn://HAL9000/GreatDog
参见
One svnserve, multiple repositories

监视版本库的更新
如果是比较大的项目,可以修改hooks目录下的post-commit.tmpl,提交后发送邮件,具体参考这里,我还没有进行过此类设置,在此暂不详述
如果是比较小的项目,可以使用
SVN Notifier(项目主页)。这是个可以常驻通知区的简单但是很实用的小程序,可以监视版本库的变动也可以作为工作目录的快速入口,进行更新,提交等操作。如果有多个工作目录,可以把它们都添加进去,方便管理。需要安装svn,tsvn, .net framework 1.1

Update:
Coding Horror 上有一篇详尽的文章
Setting up Subversion on Windows
http://www.codinghorror.com/blog

Update 2008.4.22
Subversion visually explained in 30 sec
http://coding-time.blogspot.com/2008/04/subversion-visually-explained-in-30sec.html

2008-03-16

逻辑

我认为中文是世界上最容易学的语言之一,否则很难解释为什么有13亿人选择中文作为他们的母语 - 杨洁篪
然后老爷们就可以这么说
我认为中国是世界上最和谐的国家之一,否则很难解释为什么有13亿人选择中国作为他们的祖国
我认为中国是世界上最民主的国家之一,否则很难解释为什么有13亿人选择中国作为他们的祖国
我认为中国是世界上最有人权的国家之一,否则很难解释为什么有13亿人选择中国作为他们的祖国
我认为中国是世界上房价最低的国家之一,否则很难解释为什么有13亿人选择中国作为他们的祖国
我认为中国是世界上最安全的国家之一,否则很难解释为什么有13亿人选择中国作为他们的祖国
我认为中国是世界上最廉洁的国家之一,否则很难解释为什么有13亿人选择中国作为他们的祖国
。。。

2008-03-06

Crayon Physics Deluxe

Crayon Physics Deluxe

Phun

A fun 2D physics sandbox

四十年代的新华日报

作统治者的喉舌,看起来像自由了,但那自由也只限于豪奴、恶仆应得的“自由“,超出范围就是不行的。也就是说你尽可以有吆喝奴隶--人民大众的自由,但对主子则必需奉命唯谨的,毕恭毕敬,半点也 不敢自由。
    
    ---《新华日报》1946年9月1日
    
    ***要夺取政权,要建立***的“一党专政“。这是一种恶意的造谣与诬蔑。***反对国民党的“一党专政“,但并不要建立***的“一党专政“。
    ---《刘少奇选集》上卷第172-177页
    
    党对政府的领导,在形式上不是直接的管辖。党和政府是两种不同的组织系统,党不能对 政府下命令。
    
    ---《董必武选集》第54-55页
    
     法西斯的新闻“理论家“居然公开无耻地鼓吹“一个党、一个领袖、一个报纸“的主张。它们 对于“异己“的进步报纸,采取各色各样的限制、吞并和消灭的办法,如检查稿件、任意删削,威胁读者、阻碍推销 ,派遣特务打入报馆、逐 渐攘夺管理权,最后则强迫收买,勒令封闭。
    
    ---《解放日报》1943年9月1日
    
    而民 主与不民主的尺度,主要地要看人民的人权、政权、财权及其他自由权利是不是得到 切实的保障,不做到这点,根本就谈不到民主...保证一切抗日人民(地主、资本家、农民、工人等)的人权、政 权、财权及言论、出版、集会、结社、信仰、居住、迁移之自由权...中国***一向是忠实于它对人民的诺言的, 一向是言行一致的,因此它的纲领中的每一条文与每一句语,都是兑现的。我们决不空谈保障人权,而是要尊重人类 崇高的感 情与向上发展的愿望,
    
    ---《解放日报》1941年5月26日
    
     民主颂--献给美国的独立纪念日:从年幼的时候起,我们就觉得美国是个特别可亲的国家 。我们相信,这该不单因为她没有强占过中国的土地,她也没对中国发动过侵略性的战争;更基本地说,中国人对 美国的好感,是发源于从美国国民性中发散出来的民主的风度,博大的心怀...但是,在这一切之前,之上,美国 在民主政治上对落后的中国做了一个示范的先驱,教育了中国人学习华盛顿、学习林肯,学习杰弗逊,使我们懂得了 建立一个民主自由的中国 需要大胆、公正、诚实。
    
    ---《新华日报》1943年7月4日
    
    七月四日万岁!民主的美国万岁!中国的独立战争和民主运动万岁!打倒日本帝国主义!
    
    ---《新华日报》1944年7月4日
    
    杰斐逊的民主精神孕育了两个世纪以来的美国民主政治,杰斐逊的民主精神也推进和教育 了整个人类的历史行进。
    
    ---《新华日报》1945年4月13日
    
     如何使青年的思想和行动能有正当的发展...可分两种,一种是主张思想统制。这就是说 ,把一定范围以内的思想,灌输给青年,对于这种思想是没有怀疑和选择的余地的。...另一种主张是思想自由。... 只有自觉和自愿,才能产生心悦诚服的信仰,和惊天动地的创造活动。一般民众都是如此,青年尤其是这样。如果走相 反的道路,则结果都是十分可悲的。有许多事实说明在强迫注入的训练之下,青年感到很大的痛苦...这种办法是 必须改正的。我们主张思想 应当是自由的。
    
    ---《新华日报》1941年6月2日
    
     现在,官方豢养的论客们更公然地企图恐吓人民,说国民党是希望中国安定的,而*** 却希望天下大乱...中国共产党,不但“要变不要乱“,而且正是要“以变止乱“...(国民党反动派)也是希望某一种“ 安定“的,但那并不是全中国的安定,并不是全中国人民的安定,而仅仅是他们坐在压迫人民的宝座上的“安定“。他们 那个小集团可以统治全国、为所欲为的“安定“...他们的统治“安定“了,中国百分之九十五以上的老百姓就更会 没有饭吃、没有衣穿、没有事做、没有书读、没有说话的自由、没有走路的自由、没有住家的自由...废止国民党的一 党专政!
    
    ---《新华日报》1946年5月17日社论
    
    目前推行民主政治,主要关键在于结束一党治国。……因为此问题一日不解决,则国事势必包揽于一党之手;才智之士,无从引进;良好建议,不能实行。因而所谓民主,无论搬出何种花样,只是空有其名而已。
    ---《解放日报》1941年10月28日
    
     是要彻底地、充分地、有效地实行普选制,使人民能在实际上,享有“普通“、“平等“的选举权、被选举权,则必须如中山先生所说,在选举以前,“保障 各地方团体及人民有选举之自由,有提出议案及宣传、讨论之自由。“也就是“确定人民有集会、结社、言论、出版的完全自由权。“否则,所谓选举权,仍不过是 纸上的权利罢了。
    ---《新华日报》1944年2月2日
    
    愚民政策虽然造成了沙漠,却绝难征服民心。
    ---《解放日报》1942年4月23日
    
    可见民主和言论自由,实在是分不开的。我们应当把民主国先进的好例,作为我们实现民主的榜样。
    ---《新华日报》1944年4月19日
    
     像林肯总统和罗斯福总统那样的民主的政治生活中产生的领袖,是虽在战时也一点不害怕民主制度的巡行的。他们害怕民主的批评和指责,他们不害怕人民公 意的渲泄,他们也不害怕足以影响他们的地位的全民的选举。他们不仅不害怕这些民.主制度,而且他们坚决地维护支持这些民主制度。因此他们才被人民选中了是 大家所需要的人。
    ---《新华日报》1944年11月15日
    
    但是只有建立在言论出版集会结社的自由与民主选举政府的基础上面,才是有力的政治。(毛泽东答中外记者团)
    ---《解放日报》1944年6月13日
    
    要真正做到出版自由,必须彻底废除现行检查办法,
    
    ---《新华日报》1945年6月26日
    
     “五四“运动以来三十年的中国史,就是学生爱国运动与人民自主运动密切结合的历史,就 是学生运动充作人**动的先锋和辅助军的历史。在一代的时间内,中国学生用自己的血、泪和汗写下了中国民族 民主运动史上光辉的史页,也是世界革命史上特出的史页。事实证明:中国学生将一本过去传统的爱国精神,继 续为自己祖国的独立自主和民主自由而努力,也就是为世界和平而努力。
    
    ---《新华日报》1946年11月17日
    
    民主一日不实现,中国学生的爱国运动却是一天也不会停止的。
    
    ---《新华日报》1945年12月9日
    
     由于各个国家的历史发展、社会状况等具体条件的不同,他们各自所实行的民主政治,可能在形式和内容上,都存在着多少差异。但无论如何,它们之间有一 个基本点是相同的,那就是政权为人民所握有,为人民所运用,而且为着人民的幸福和利益而服务。这样的政权必然尊重和保障人民的自由权利;使失掉自由权利的 人民重新获得自由权利;没有失掉自由权利的充分享有自由权利;特别是言论、出版、机会、结社,这些作为实行民主政治的基本条件的人民的最低限度的自由权 利,是必须切实而充分地加以保障的。
    ---《新华日报》1943年9月15日社论
    
    二十年来,尤其是最近 几年,我们天天见的是“只许州官放火,不许百姓点灯。“政府所颁布的法令,其是否为人民着想,姑置不论。最使人愤慨的是连这样的法,政府并未遵守。政府天 天要人民守法,而政府自己却天天违法。这样的作风,和民主二字相距十万八千里!所以民主云云者是真是假,我们卑之无甚高论,第一步先看政府所发的那些空头 民主支票究竟兑现了百分之几?如果已经写在白纸上的黑字尚不能兑现,还有什么话可说?所以在政治协商会议开会以前,我们先要请把那些诺言来兑现,从这一点 起码应做的小事上,望政府示人民以大信。
    ---《新华日报》1946年2月1日
    
    中国人民为争取民主而努力,所要的自然是真货,不是代用品。把一党专政化一下妆,当做民主的代用品,方法虽然巧妙,然而和人民的愿望相去十万八千里。中国的人民都在睁着眼看:不要拿民主的代用品来欺骗我们啊!
    ---《新华日报》1945年1月28日
    
    他们以为中国实现民主政治,不是今天的事,而是若干年以后的事,他们希望中国人民知识与教育程度提高到欧美资产阶级民主国家那样,再来实现民主政治...正是在民主制度之下更容易教育和训练民众。
    ---《新华日报》1939年2月25日
    
    限制自由、镇压人民,完全是日德意法西斯的一脉真传,无论如何贴金绘彩,也没法让吃过自由果实的人士,尝出一点民主的甜味的。
    ---《新华日报》1944年3月5日
    
     他们说这一套都是外国人的东西,决不适用于中国...原来,科学为求真理,而真理是不分国界的...现在固然再也没有顽固派用国情特殊,来反对科学 -- 自然科学的真理了。只有在社会现象上,顽固派还在用八十年前顽固派用过的方法来反对真理...民主制度比不民主制度更好,这和机器工业比手工业生产更好一 样,在外国如此,在中国也如此。而且也只能有在某国发展起来的民主,却没有只适用于某国的民主。有人说:中国虽然要民主,但中国的民主有点特别,是不给人 民以自由的。这种说法的荒谬,也和说太阳历只适用外国、中国人只能用阴历一样。
    ---《新华日报》1944年5月17日
    
    中国要实行民主政治,必须“取资欧美“,但又要避免欧美民主政治的一些流弊,更驾而上之,这正是中山先生的伟大识见。
    --《新华日报》1942年11月12日
    
    这些一切,只有证明全国人民及各民主党派对实施纲领的意见,首先是对人民自由的主张,是切实的,迫切需要实现的,万万“撤销“不得的。
    ---《新华日报》1946年1月18日
    
     这说明英美在战时也还是尊重人民的言论出版等民主自由的。英美两大民主国家采取这些重大措置,正说明英美两国是尊重和重视***及其他党派,和他们 所代表的意见和力量的...同时,(他们)也有一些批评。他的批评对不对,是另外一回事。这种民主团结的精神,是值得赞扬和提倡效法的...全国各党派能 够融洽的为共同目标奋斗到底,这是 ......................
    
    “现在是非变不可了!““但如何变呢?““我们只要看看人家。换句话说我们一切要民主。我们一切制度、政策以及其他种种,都要向着能配合世界转变上去改造。
    
    ---《新华日报》1945年4月8日 
    
    这正如前天座谈会主席左舜生先生说的:“我们不去敦促,自由这一客人是永远不会进我们的门的“!
    
    ---《新华日报》1944年5月16日
    
    一个民主国家,主权应该在人民手中,这是天经地义的事;如果一个号称民主的国家,而 主权不在人民手中,这决 不是正轨,只能算是变态,就不是民主国家...不结束党治,不实行人民普选,如何能实 现民主?把人民的权利交给人 民!
    
    ---《新华日报》1945年9月27日社论
    
    我们认为最重要的先决条件有三个:一是保障人民的民主自由;二是开放党禁;三是实行地方自治。人民的自由和权利很多,但目前全国人民最迫切需要的自由,是人身居住的自由,是集会结社的自由,是言论出版的自由。
    
    ---《中共党史教学参考资料》 
    
    一切力量来自人民!一切光荣归于民主!
    
    ---《解放日报》1945年7月2日
    
    曾经有一种看法,以为民主可以等人家给与。以为天下有好心人把民主给人民,于是就有了等待这种“民主“,正如等待二百万元的头奖一样。但是中外古今的历史都证明了,民主是从人民的争取和斗争中 得到的成果,决不是一种可以幸得的礼物。
    
    ---《新华日报》1945年7月3日
    
     统制思想,以求安于一尊;箝制言论,以使莫敢予毒,这是中国过去专制时代的愚民政策 ,这是欧洲中古黑暗时代的现象,这是法西斯主义的办法,这是促使文化的倒退,决不适于今日民主的世界,尤不 适于必须力求进步的中国...言论出版的自由,是民主政治的基本要件,没有言论出版的自由便不可能有真正的 民主,不民主便不能团结统一,不能争取胜利,不能建国,也不能在战后的世界中享受永久和平的幸福...新闻自由 ,是民主的标帜;没有新闻自由,便没有真正的民主。反之,民主自由是新闻自由的基础,没有政治的民主而要得到 真正的新闻自由,决不可 能。
    
    ---《新华日报》1945年3月31日
    
    立即释放全国政治犯!严惩虐待犯人、毒杀犯人的凶手!未获释放的政治犯应切实保证他们 的生命安全,不准再有虐 待和私刑拷打犯人的非法行为。
    
    ---《新华日报》1946年2月18日
    
    维持一党专政的政策是建立在制造饥饿和灾荒上的,所以这些救灾的治本办法,只有国民 党确定的和各党派一道走 上和平、民主的道路时,才能完满解决。
    
    ---《新华日报》社论1946年3月30日
    
     而在重庆被打得头破血流的青年学生们的组织与行动也被当局宣布为“不合法组织……妨 害治安“,而加以取缔。反之,那些打人的暴徒,是合法的组织,是有益治安,而应力加保护。这就是合法政府的合 法措施。让我们在这个不合法的罪名下继续奋斗,一直到“人民的宪法“出现的一天吧!
    
    ---《新华日报》1947年2月22日

老百姓素质低,就不能民主吗?

《新华日报》社论 1946年1月24日


这是一个老问题:中国广大人民文化水准太低,致使有些人怀疑他们是否有运用选举权的能力;反对实行民主的人,更以此为借口,企图拖延民主的实行,并从而诬 蔑解放区的民主选举。如象去年十二月二十六日的《和平日报》社论就可作为代表,那社论里面说:"......拿‘普选'和‘不记名投票'来欺骗人民。谁不 知道,中国人民有百分之八十连自己的名字都写不出,他们既不能记自己的名,更不会记所指派的那一群大小官吏的名了。这种政府只能叫做‘魔术'政府,不能叫 做 ‘民主政府',但却掩耳盗铃,硬说‘魔术'就是‘民主',简直是对全国人民的一种侮辱"。

这种说法,不仅是诬蔑解放区的人民,而且推论下去就必然得出这样的结论:中国人民还无法运用民主选举,还应当由他们继续"训政"下去。居心何在,不问可知。

假若将来中国人民个个都能识字了,实行选举时一定便利得多,这是很明白的。现在中国人民文盲太多,进行选举时非常麻烦,这也是事实。但是,无论如何,选举 的能否进行和能否进行得好,主要关键在于人民有没有发表意见和反对他人意见的权利,在于人民能不能真正无拘束的拥护某个人和反对某个人,至于选举的技术问 题并不是无法解决的。解放区实行民主选举的经验便是明证。我们略举几个例子,看看解放区是怎样选举的吧:


首先要说明,候选人决不是指派的,而是由人民提出的,在乡选中每一个选民都可以单独提出一个候选人。在县选中每十个选民可以连合提出一个候选人。选举的方 法是分成两种:一种是识字的人,写选票;一种是不识字的人,则以投豆子代替写选票。这是很久以来就采用了的方法,在实践过程中又曾有过不断的改进和新的创 造。过去的办法是由候选人坐在晒场上,每人背后摆一个罐或碗,因事不能到会的候选人仍然给他们空出位子,位子后摆上碗,每只碗上都贴着候选人的名字,选民 每人按应选出的人数发豆子数粒,于是各人便把豆子投入自己所要选的那个人碗中,在投豆子之前,先由监选人向大家说明每一只碗所代表的候选人,一般说起来, 不识字的老百姓总是特别留意于记忆的,在这件他们看来很郑重的事情上,更是不致于弄错。这种方法还有缺点,那就是当每个选民投豆子时,到会的人都可以看得 见,实际上成了记名投票。后来就改变方法,把碗统统放到另外一个房子里,除监选人在选民万一记不清楚时从旁帮助说明外,其余的一概不准在场。但这种方法仍 有缺点,因为碗是仰着放的,那个碗里已有的豆子多,那个碗里已有的豆子少,都看得清楚,这样就可能使后来的投票受到先前投票者的影响,因而不自觉的失去了 自主性。补救这个缺点的方法,就是用纸把每一个碗都盖起来,而让投票者从碗边上把豆子投进去。最近陕甘宁边区的选举中又创造了一种新的方法,在候选人数不 多(乡的选举中候选人一般是不会太多的)的时候,依候选人的多少,发给选民几颗,颜色不同的豆子,比如:黑豆一颗代表张××;黄豆一颗,代表李××;玉米 一颗,代表赵××等,另外每个选民再发给小纸一张,如果想选谁,就把代表谁的豆子用纸包上,放在碗里,同时包几颗者作废。这种方法非常适合农村文盲的无记 名投票,在某些地方实行结果很好。

以上只是略略举几种方法作为例证而已,此外也还有其他的方法。这些方法的创造证明了只要有实行民主的决心,人民的文化水平低与不识字都不会变成不可克服的 障碍。那些信口诬蔑解放区选举,并企图以此来拖延民主选举之施行的谎言,完全没有事实根据。才真是"对全国人民的一种侮辱"!

2008-03-05

linq,对象初始化器,集合初始化器

很久很久以前,写了一篇介绍C#3.0新特性的文章,vs2008发布以后,也一直用,但一直搞不清楚一个地方,就是linq 的select new。对于这样一个类:
public class Car
{
public string Name { get; set; }
public string Brand { get; set; }
public Car(string name, string brand)
{
Name = name;
Brand = brand;
}
}
和其相应的集合
List lc = new List();
lc.Add(new Car("wee","fsfsa"));
lc.Add(new Car("wee","sds"));
lc.Add(new Car("weehd", "fsfsa"));
lc.Add(new Car("weed", "sds"));
查询一般可以这么写:
var cs = from c in lc
where c.Name.EndsWith("d")
select new { c.Name, c.Brand };
这里使用了匿名类型。
但是如果需要把查询单独放在一个方法中的时候,由于方法不能返回匿名类型,所以需要再创建另一个实体类,简单起见,和Car相同,命名为CopyCar
public class CopyCar
{
public string Name { get; set; }
public string Brand { get; set; }
public CopyCar(string name, string brand)
{
Name = name;
Brand = brand;
}
public CopyCar()
{ }
}
另一个方法中的查询
var cs = from c in lc
where c.Name.EndsWith("d")
select new CopyCar{Name= c.Name, Brand= c.Brand};
这里采用了对象初始化器,必须有默认的构造函数。
当然也可以使用构造函数:
var cs = from c in lc
where c.Name.EndsWith("d")
select new CopyCar(c.Name, c.Brand);
return cs;
但这样写是错误的
var cs = from c in lc
where c.Name.EndsWith("d")
select new CopyCar{c.Name, c.Brand};
return cs;
这实际上是集合初始化器的写法,编译会有如下错误
Cannot initialize type 'ConsoleApplication1.CopyCar' with a collection initializer because it does not implement 'System.Collections.IEnumerable'
这么简单的问题,真是后知后觉!

2008-03-03

SQL Server 2000启动1069错误

错误“由于登录失败而无法启动服务”
此错误是因为登录服务采用域帐号登录,一旦域帐号密码重设,系统重启后mssqlserver服务还是使用原来的旧密码登录,当然会失败
解决方法
我的电脑--控制面板--管理工具--服务--右键 MSSQLSERVER--属性--登陆--登陆身份--选择"此帐户"--密码和确认密码中输入新密码,通过sql server 服务管理器启动即可。