程序 – DataTable的行复制与行删除.

January 5th, 2010 Arale No comments

刚刚遇到一个问题, 就是要保留DataTable中的指定行, 删除多余的. 写的时候脑子发热, 直接在循环的时候使用
DataTable.Row.RemoveAt()了, 由于测试的数据的DataTable是全部多余的, 并没有发现有问题.
后来想了想才发现, 这样的结果是完全不正确的. 因为行被删除了, 原来的Table的行数就改变了, 在已知要删除指定行的情况下,当然要失败. 于是乎, 添加了一个临时表. 将指定的行复制到临时表里面. 然后操作临时表就可以了.
这里面主要涉及到一个复制的问题, 当DataTable dtNew = dtOld的时候, 实际是地址引用, 任何对dtNew的修改都会影响到dtOld, 所以这里要用dtNew = dtOld.Copy(),
另外, 对于dtOld的行也不能直接dtNew.Row.Add(dtOld.Rows[i]),需要使用dtNew.Rows.Add(dtOld.Rows[i].ItemArray)

//初化dt表.
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(string));
for (int i = 0; i < 10; i++)
{
      DataRow dr = dt.NewRow();
      dr[0] = i.ToString();
      dt.Rows.Add(dr);
}
//得到dt表的一个Copy,令dtDuplicate操作的时候不会影响到dt表.并保持相同的行结构.
DataTable dtDuplicate = dt.Copy();
dtDuplicate.Rows.Clear();
dtDuplicate.AcceptChanges();
for (int i = 0; i < 10; i++)
{
     if (i % 2 == 0)
     {//将dt的行添加到dtDuplicate里面.
         dtDuplicate.Rows.Add(dt.Rows[i].ItemArray);
     }
}
//输出查看结果.
for (int i = 0; i < dtDuplicate.Rows.Count; i++)
{
        Console.WriteLine(dt.Rows[i][0].ToString());
}
Console.WriteLine(dtDuplicate.Rows.Count.ToString());
Console.ReadLine();

很小的一个代码, 却考验了一个人的基本编程功底.

Read more...

随笔 – To live free or die.

January 4th, 2010 Arale No comments

“The direction to Korean is paved by the silence of us.” -by a twitter

我并不想讨论这两句话的出处, 也不想针对GFW做过多的讨论. 只是在收到某封邮件的时候突然这两句话浮现在脑海.
最近要部署ISO27001, 本身,对于标准化的这些东西,并没有过多的意见, 虽然有的时候在国内,标准这个东西的确是浪费时间,但是一个合格的企业, 遵循一套标准这本没什么不对. 虽然这东西因为流程的关系, 可能会把本来2分钟解决的问题,拖到一天甚至2天才能解决. 又或者是给了某些人可以相互推诿的理由.

在保护员工隐私的大前提下, 当禁止使用外部的IM, 包括MSN, Skype, QQ,Gtalk…的同时却偷偷保留着员工的通信记录.扫描员工的机器,查看机器上的程式. 当在禁止其它人使用的时候, 自己却打着种种理由,大行其道的使用.与着CATV,TMSKYPO,企鹅IM某杀毒娱乐公司有着异曲同工之妙. 这又与流氓有何分别?

作为员工,遵守企业的规定无可厚非, 只是某些规定太死板, 太教条,甚至到了变态的地步.这样的制度会带给人一种压迫感,和一种被剥削感.某些时候,员工可能不得不在这里工作, 但是一旦有相同的选择,或者是根本不用等到更好的选择的时候. 他们肯定会毫不犹豫的选择离开. 原因只有一个, 工作不开心. 同样, 在这样不开心的前提下面,工作效率能不能得到提高是很难保证的. 过为苛刻的教条可能会带来适得其反的效果.员工的潜力在这种情况下很难得到开发, 并且没有工作的动力.
而反言之, 如果员工在企业中工作的很开心的话, 他们的忠诚度就会相对高一些, 受外界因素影响离开的概率就小一些.同时,可以将员工的潜力和动力得到最大化的发挥. 正如某美国某企业培训师讲过的.”I will forget what you did to me, what you said to me, but I will never forget what is the feel you brought to me.” 这里的You,可以指员工, 管理人员 甚至是企业本身给员工带来的感觉.

Anyway,其实,不论是外企,个人企业,还是whatever,在某些地方待久了, 难免会被同化.在完美的企业制度,也会变得流氓起来.就如同Policy这东西, 其实和某些地方的法律一样,只针对部份人有有效.你和他讲道理, 他和你流氓. 你和他流氓,他和你讲Policy.

题目出自:
“Live Free or Die” is the official motto of the U.S. state of New Hampshire, adopted by the state in 1945.[1] It is possibly the best-known of all state mottos, partly because it speaks to an assertive independence historically found in American political philosophy and partly because of its contrast to the milder sentiments found in other state mottos.

Read more...

程序 – SSRS中, 如何将Multi Value传递到SQL的in clause中.

January 4th, 2010 Arale No comments

SSRS中, 可以创建个可多选的参数, 该参数可以作为查询项传递给SQL语句.

我遇到的问题是这样的.
1. 我创建了一个可以多选的参数.
2. 将该参数传递到了SQL的一条Select中.
3. select中是这样写的”select * from table where column in (@CoverageID)”
问题就是, SSRS上面的Report只要该值为单一的时候有效, 只要和复选,就没有用了.

比如说,有值1,2,3,4,5在列表中, 如果选择2个以上, SQL就执行不出正确的结果.
看了一下, 原来问题出在参数项上.
如果选择一个值的话@CoverageID的值就是 ‘1′ 这样的话 查询语句为 select * from table where column in (‘1′) 这样结果是正确的.
如果选择二个或者2个以上的值@CoverageID的值就变成了’1,2,3,4′,等多个以逗号为分隔的字符串,
查询就是select * from table where column in (‘1,2,3,4′) 语法是正确的, 但是肯定不是我们想要的查询结果.
真正的查询是select * from table where column in(‘1′,’2′,’3′,’4′)
既然找到问题了, 解决就只是时间的问题.
这里利用一个现成的功能, 将以指定字符串, 用指定的分隔符分开, 存于一个只有一列的table变量中.

CREATE   FUNCTION   [dbo].[f_split](@c   varchar(2000),@split   varchar(2))  
  returns   @t   TABLE(col   varchar(20))  
  AS  
    begin  
      while(charindex(@split,@c)<>0)  
        begin  
          INSERT   @t(col)   VALUES   (substring(@c,1,charindex(@split,@c)-1))  
          SET   @c   =   stuff(@c,1,charindex(@split,@c),'')  
        end  
      INSERT   @t(col)   VALUES   (@c)  
      RETURN  
    end  
GO

当函数创建好之后,
上面的查询可以稍改一下, 改为 select * from table where column in (select * from dbo.f_split(@CoverageID,’,'))

就OK了, 我们的SSRS 从此可以支持in clause了~

Read more...

Lie to me 第一季知识点总结

January 4th, 2010 Arale 2 comments

第一集

  • 向对方询问某事时,对方一侧肩抖动表示对方对你的所言不自信
  • 身体和语言不一致,表示他在撒谎
  • 惊奇、害怕的表情在脸上超过一秒,表示是假装的
  • 对方对你的质问表示轻视,通常你的质问会是真的
  • 对方对你撒谎时,会有更多的眼神交流,来判断你是否相信他的谎言
  • 对你的问题生硬的重复是典型的撒谎方式 eg:“你去过他家吗?”“我没去过他家。”
  • 说话或思考时把手放在鼻子上是想要掩饰什么的举动
  • 说话时一直把手放在裤兜里或抵着大腿,是紧张的表现
  • 描述一连串发生的事情,如果事情是编造的,他可以按虚构好的顺序说,但是却无法倒叙重复
  • 人在害怕时,会做些事情来使情况维持现状,而不论这些事情会不会造成更坏的影响
  • 性兴奋会使人的瞳孔放大
  • 微笑的时候眨眼睛说明真的想到令人幸福的事
  • 人在害怕时会出现生理逃跑反应:血液从四肢回流回腿部,做好逃跑准备,手部会先变冰凉

第二集

  • 人说谎时,有时会下意识的退缩,不自信
  • 嘴角向下瘪,是经典的犯错表情
  • 人说谎的时候会摸脖子
  • 纵火和强奸,这两种犯罪通常都是想证明自己的权力
  • 下巴用力,是生气的表现
  • 眉毛上挑,挤在一起,是恐惧的表情
  • 没有表情也是一种表情!!
  • 说话很急,将物品放在胸前形成一种障碍:刻意与对话者保持距离,焦虑
  • 眉毛上扬,下颚下垂:惊讶
  • 摸脖子:说谎,除非他脖子疼
  • 重读音过高:说谎 但是人耳难以分辨
  • 纵火和强奸高度相关,都是权利欲的表现
  • 说话时手腕甩动:说谎 这个动作可以发生在手臂放在桌面,站立时双手指尖交叉或者自然下垂,同时带着小臂的自然摆动
  • 说话时下巴很用力/说完话抬下巴:生气
  • 五官向面部中心聚拢:暗暗反感

第三集

  • 皱眉并且嘴唇紧闭伴随上翘,劲部以上有后移表示厌恶
  • 话语重复,声音上扬 说谎
  • 越受欢迎的孩子,越会撒谎
  • 当人的脸部表情,两边及其部对称时有可能表现的感情不真实
  • 说话缓慢,轻柔表明内心极度悲伤和焦虑
  • 双手紧握并有摩擦 一种典型的自我安慰的姿态 表明自己不相信自己在说什么的时候 使自己自我安慰
  • 真假发怒,突然大声说话并伴随强烈的肢体语言 如果2者有时间差,则有伪装
  • 真正的凶手看到受害人的照片时 表现 恶心 轻蔑 以致于害怕

第四集

  • 眉毛往下皱在一起,眼见上扬,眼袋紧绷:说明进行有计划的行动,带有攻击倾向。
  • 眉毛上扬,挤在一起,表示恐惧,担忧,忧虑。
  • 在过去40年里,亚洲有超过1000起自杀抗议的例子。而在越南,印度,韩国尤甚。
  • 90%的持枪凶手是男性,大多在17~49之间
  • 连带的心理活动,频繁地眨眼:表明在隐藏什么。
  • 犹豫和重复,说话的时候结结巴巴:表明在说谎。
  • 眼睛朝一个方向,而手指(或其他肢体)指向另一个方向,说明在说谎。因为你的大脑在努力的编造故事时,你的肢体并不可能同步。
  • 说话声音更高,频率更快:说明情绪高涨。
  • 无意的竖中指是一个象征性的,无意识的,有特殊含义的手势—有敌意。
  • 在韩国,鞠躬的程度可以表明两人的关系。
  • 耸肩表明在隐藏什么。
  • 动物受惊后的反应是惊呆,眼睛、嘴巴紧闭。当回过神来会保护重要的东西

第五集

  • 每100个美国人 就会有一个人入狱。
  • 咬嘴唇,摸耳朵 说明控制欲在增长 也是焦虑的表现
  • 反应潜伏期是指问答之间的时间差。
  • 鼻孔外翻,嘴唇紧闭 说明在生气。
  • 下巴上扬,嘴角下垂 说明在自责。
  • 两手交叉紧握,食指对齐竖直紧贴着嘴唇说明很矛盾该不该说。
  • 下巴往下,眼皮上扬 说明这个人很好斗。
  • 当我们在说谎“是”时,头会无意识的微微摇动。
  • 眉毛上扬拉紧 代表恐惧。
  • 生气时心跳加速,血压升高。

第六集
None

第七集

  • “我只说一次”是典型的限制性陈述。
  • 声音的高低表明说话人的重视程度。
  • 咬嘴唇表明焦虑
  • 当我们想表现的更有权势是都会尽力探头挺胸(还有猩猩,海豚。。。。。。)
  • 对话时把目光转向地板可能表明惭愧。

第八集

  • 维特效应(即自杀消防现象):自杀会造成自杀效仿:如玛丽莲梦露,科特柯本。
  • 说话时也学会不停地转换时态。
  • 说话使用大量的小鸡词汇,说明心里有愧。
  • 有25%的低收入妇女会患产后忧郁症。
  • 咬下嘴唇说明在说谎。
  • 眉毛上挑说明说话人知道事实的真相。

第九集

  • 当人们内心感到愧疚,通常会往下看或看向旁边。
  • 瘾君子通常只能识别厌恶着一种情绪。因为可能经常从家里人那里看到这种表情
  • 憋嘴 眼睑内缩,表明恐惧,是隐藏的恐惧。
  • 当一个人说话时示例动作减少而小动作(如搔痒,舔嘴唇,摸首饰…)增多时,这就是说谎的迹象
  • 当罪犯看到别人因自己所犯罪行而被指控时会松一口气

第十一集

  • 当你对自己所说的话没有信心时,音量就会下降
  • 对别人撒谎时,问题别回答得太快,反应时间过短是致命的的泄漏点之一,另外,有说错的地方要纠正过来,别一直盯着对方眼睛看,加入不大相关的细节
  • 有的时候卧底警察会有人格分裂症状,装扮成另外一个人会造成焦虑和多疑的问题,这使他们即使在说实话看起来也像在说谎话

第十二集

  • 太专心于撒谎的对象可能会放慢手上正在做的事情的动作(Lightman 在 Jenkins走过来的时候放慢了叠衣服的速度)
  • 真正的愤怒会慢慢开始,逐渐形成,而假装的愤怒会是突然爆发
  • 感激并没有普遍性的标志

第十三集

  • 在恐怖分子眼里的世界,非黑即白(当Torres把头巾摘下来时,很多人反映的是震惊,好奇,少数人反映出愤怒)
  • 袭击者或和他共事的人脸上会显出憎恶
  • 恐怖分子通常害怕被监控拍到会一直低着头,避免与人目光接触
  • 调情: 典型的歪头动作,臀部绷紧,面对对方微微倾斜
  • 紧张: 眉毛扬起,堆在一起
  • 声音的震颤可能是反感或厌恶
Read more...

犯罪心理-每一集后面的警句

January 3rd, 2010 Arale No comments

Season 1
◎Episode 1: Extreme Aggressor(2005.09.22)
●The belief in a supernatural source of evil is not necessary. Men alone are quite capable of every wickedness.——Joseph Conrad
【约瑟夫·康拉德(波兰出生的英国作家):将邪恶的产生归结于超自然的因素是没有必要的,人类自身就足以实施每一种恶行。】
●Try again. Fail again. Fail better.——Samuel Beckett
【Samuel Beckett(当代最著名的荒诞剧作家):再试,再失败,更好地失败。】(Gideon片中台词)
●Try not. Do or do not.——Yoda
【尤达大师(『星球大战』中的主角):别试。做或者不做。】(Morgan片中台词)
●All is riddle, and the key to a riddle…is another riddle.——Emerson
【爱默生(美国诗人、散文家、哲学家):所有的事物都是谜团,而解开一个谜的钥匙……是另一个谜。】
●The farther backward you can look, the farther forward you will see.——Winston Churchill
【温斯顿·邱吉尔:你回首看得越远,你向前也会看得越远。】
●When you look long into an abyss, the abyss looks into you.——Nietzsche
【尼采:当你凝视深渊时,深渊也在凝视你。】

◎Episode 2: Compulsion(2005.09.28)
●There are certain clues at a crime scene which, by their very nature, do not lend themselves to being collected or examined. How does one collect love, rage, hatred, fear?——Dr. James T. Reese
【詹姆斯·瑞斯博士(美国精神创伤压力处理方面的专家):犯罪现场中的某些线索根据它们自己本身的性质,是不容易收集起来检测的。一个人又怎么能收集起爱情、愤怒、憎恨和害怕?】
●Imagination is more important than knowledge. Knowledge is limited. Imagination encircles the world.—— Einstein
【爱因斯坦:想象力比知识更为重要。知识是有限的,而想象力则包围着整个世界。】
●Don’t bother just to be better than your contemporaries or predecessors. Try to be better than yourself.——William Faulkner
【威廉姆斯·福克纳(美国作家):别自寻烦恼的只想比你同时代的人或是先辈们出色,试着比你自己更出色吧。】◎Episode 3: Won’t Get Fooled Again(2005.10.05)
●Almost all absurdity of conduct arises from the imitation of those whom we cannot resemble.——Samuel Johnson
【赛缪尔·约翰森(英国文豪):几乎所有荒谬的行为均源自于模仿那些我们不可能雷同的人。】
(本集片尾没有出现名言)

◎Episode 4: Plain Sight(2005.10.12)
●Don’t forget that I cannot see myself that my role is limited to being the one who looks in the mirror.——Jacques Rigaut
【Jacques Rigaut(法国诗人):别忘了我看不到我自己,我的角色仅限于看向镜子里的那个人。】
●Birds sing after a storm. Why shouldn’t people feel as free to delight in whatever sunlight remains to them?——Rose Kennedy
【罗丝·肯尼迪(肯尼迪总统的母亲):鸟儿在暴风雨后歌唱,人们为什么在仍是阳光普照的时候还不尽情感受快乐呢?】

◎Episode 5: Broken Mirror(2005.10.19)
●When a good man is hurt, all who would be called good must suffer with him.——Euripides
【Euripides(希腊悲剧诗人):当一个好人受到伤害,所有的好人定将与其同历磨难。】
●When love is in excess, it brings a man no honor nor worthiness.——Euripides
【Euripides:爱得太深,会失去所有荣耀和价值。】

◎Episode 6: L.D.S.K.(2005.11.02)
●The irrationality of a thing is not an argument against it’s existence, rather, a condition of it.——Nietzsche
【尼采:一件事的荒谬,不能成为驳斥它存在的论据。相反,这恰恰是它存在的条件。】
●Nothing is so common as the wish to be remarkable.——Shakespeare
【莎士比亚:没有什么比希望不平凡而更平凡的了。】(Hotch)

◎Episode 7: The Fox(2005.11.09)
●With foxes, we must play the fox.——Dr. Thomas Fuller
【Dr. Thomas Fuller:遇到狐狸时,我们一定要学会狡猾。】
●When you have eliminated the impossible whatever remains, however improbable,must be the truth.——Sherlock Holmes
【歇洛克·福尔摩斯(柯南道尔笔下的名侦探):当你排除了所有的不可能,无论剩下的是什么,即使是不可能也一定是真相。】(Gideon剧中台词)
(本集片尾没有出现名言)

◎Episode 8: Natural Born Killer(2005.11.16)
●There is no hunting like the hunting of man.And those who have hunted armed men long enough and liked it never really care for anything else.——Hemingway
【海明威:没有哪种狩猎像人类的狩猎,那些武装的狩猎者一直乐此不疲,却从来也不在乎其他的事。】
●The healthy man does not torture others.Generally it is the tortured who turn into torturers.——Carl Jung
【荣格:健康的人不会折磨他人,往往是那些曾受折磨的人转而成为折磨他人者。】

◎Episode 9: Derailed(2005.11.23)
●A belief is not merely an idea that mind possesses.It is an idea that possesses the mind.——Robert Oxton Bolton
【Robert Oxton Bolton(作家):信仰不只是一种受头脑支配的思想,它也是一种可以支配头脑的思想。】
●A question that sometimes drives me hazy–am I or the others crazy?——Einstein
【爱因斯坦:有时我会迷惑,是我疯了还是其他人疯了?】(Reid)

◎Episode 10: The Popular Kids(2005.11.30)
●Unfortunately a super-abundance of dreams is paid for by a growing potential for nightmares.——Sir Peter Ustinov
【彼得·乌斯蒂诺夫爵士(文化界名人、谐星、英国老牌演员、剧作家、 表演艺术家、小说家、社会活动家、歌剧导演):不幸的是,多梦的代价就是噩梦也将随之增多。】
●Ideologies separate us, dreams and anguish bring us together.——Eugene Ionesco
【尤金·艾里斯柯(罗马尼亚荒谬剧剧作家):意识形态分离了我们,而梦想和痛苦使我们走到了一起。】

◎Episode 11: Blood Hungry(2005.12.14)
(本集片头没有出现名言)
●The bitterest tears shed over graves are for words left unsaid and deeds left undone.——Harriet Beecher Stowe
【哈里耶持·比彻·斯托(新英格兰女小说家、反奴隶制度作家,代表作是『汤姆叔叔的小屋』):最痛苦的泪水从坟墓里流出,为了还没有说出口的话和还没有做过的事。】

◎Episode 12: What Fresh Hell?(2006.01.11)
●Evil is unspectacular and always human.And shares our bed… and eats at our table.——W.H. Auden
【W. H. 奥顿(英国诗人):恶魔通常只是凡人并且毫不起眼,他们与我们同床,与我们同桌共餐。】
●Measure not the work until the day’s out and the labor done.——Elizabeth Barrett Browning.
【伊丽莎白·巴瑞特·勃朗宁(十九世纪英国著名女诗人):在没尽全力之前不作评价。】

◎Episode 13: Poison(2006.01.18)
●What is food to one, is to others bitter poison.——Titus Lucretius Carus
【卢克莱修(古罗马诗人、唯物主义哲学家):吾之美食,汝之鸩毒。】
●Before you embark on a journey of revenge, dig two graves.——Confucius
【孔子:在开始你的复仇之旅前,先挖两个坟墓。(意译,非原句。拜求原句!)】

◎Episode 14: Riding the Lightning(2006.01.25)
●Whoso sheddeth man’s blood, by man shall his blood be shed.——Genesis 9:6
【旧约 创世纪 第九章:凡流人血的,他的血也必被人所流。】
●What we do for ourselves dies with us.What we do for others and the world remains and is immortal.——Albert Pine
【Albert Pine(英国作家):为自己做的都会随着死去而消逝,为他人和世界所做的将会延续而不朽。】

◎Episode 15: Unfinished Business(2006.03.01)
●It is those we live with and love and should know who elude us(but we can still love them).——Norman Maclean
【诺曼· 麦考连(芝加哥大学英国文学教授,他的自传被改编成电影『大河恋』):总是那些我们相处、相爱、本该相知的人在蒙蔽我们。(即便这样,我们仍然爱着他们。)】
●In the end, it’s not the years in your life that count.It’s the life in your years.——Abraham Lincoln
【亚伯拉罕· 林肯:到头来,你活了多少岁不算什么。重要的是你是如何度过这些岁月的。】

◎Episode 16: The Tribe(2006.03.08)
●The individual has always had to struggle to keep from being overwhmed by the tribe.——Nietzsche
【尼采:个体必须始终在社会中挣扎求生,才能使自己不至幻灭。】(Hotch)
●You can take many paths to get to the same place.——An Old Apache Saying
【Apache部落谚语: 条条大路通罗马。】(Hotch片尾台词)

◎Episode 17: A Real Rain(2006.03.22)
●Murder is unique in that it abolishes the party it injures.So that society must take the place of the victim,and on his behalf,demand atonement or grant forgiveness.——W.H. Auden
【W. H. 奥顿:谋杀是独特的,因为它完全破坏了受害人。所以社会必须为死者说话,而且应以死者的名义来要求补偿或行使赦免】
●It is better to be violent if there’s violence in our hearts than to put on the cloak of non-violence to cover impotence.——Gandhi
【甘地:如果我们心里有暴力,把暴力发泄出来。这要胜过披上一层非暴力的外衣来掩盖虚弱。】
●I object to violence because when it appears to do good,the good is only temporary.The evil it does is permanent.——Gandhi
【甘地:我反对暴力,因为当暴力被用来做善事时,善事也仅仅是暂时的。】(Hotch)

◎Episode 18: Somebody’s Watching(2006.03.29)
●A photograph is a secret about a secret. The more it tells you the less you know.——Diane Arbus
【黛安·阿勃丝(犹太籍女摄影师):照片是关于秘密的秘密,它揭示的越多,你知道的就越少。】
●An American has no sense of privacy.He does not know what it means.There is no such thing in the country.——Bernard Shaw
【肖伯纳:美国人没有对隐私的认识,他不知道那是什么意思。在这个国家中没有隐私这样的事情。】

◎Episode 19: Machismo(2006.04.12)
●Other things may change us, but we start and end with family.——Anthony Brandt
【Anthony Brandt:其他的事情可能会改变我们,但我们开始并终结于家庭。】(Hotch)
●The house does not rest upon the ground, but upon a woman.——Mexican Proverb
【墨西哥谚语:家不是建立在土地之上,而是建立在女性之上。】(Hotch)

◎Episode 20: Charm and Harm(2006.04.19)
●There are some that only employ words for the purpose of disguising their thoughts.——Voltaire
【伏尔泰:有些人只会用文字来掩饰他们的思想。】
●We are so accustomed to disguise ourselves to others that in the end we become disguised to ourselves.——Francois de La
【Francois de La(作家):在人前我们总是习惯于伪装自己,但最终也蒙骗了自己。】

◎Episode 21: Secrets and Lies(2006.05.03)
●Whoever undertakes to set himself up as judge in the field of truth and knowledge is shipwrecked by the laughter of the gods.——Albert Einstein
【爱因斯坦:当一个人把自己当成真理和知识的法官时,他将被上帝的嘲笑毁灭。】
●In a time of universal deceit, telling the truth is a revolutionary act.——George Orwell
【乔治·奥威尔(英国作家):在大欺骗的时代,说出真相才是革命性的举动。】

◎Episode 22: The Fisher King (1)(2006.05.10)
●No man needs a vacation much as the man who has just had one.——Elbert Hubbard
【埃尔伯特·哈伯特(英国作家,代表作是『致加西亚的信』):没有比刚刚度过假的人更需要假期的了。】
(本集片尾没有名言)

=========================================

Read more...

《编程之道》全文

January 3rd, 2010 Arale No comments

在几年前读过这篇文章, 转载自己之前的部落格上, 由于一些原因. 部落格挂掉了, 相对应的文章也没有了.
这篇文章算是比较有禅意的文章, 每一次读,感觉都不一样. 特别转载到自己的新部落格上面.
第一篇 静寂的空宇

编程大师如是说: “当你有本事夺走我手中的这块水晶石时,就是你出师的时侯了。”

1.1 在静寂的空宇里,一种神奇的物质形成并诞生了。它立刻便静止了,独自守侯着,豪无动静,然而又处于永恒的运动之中。它是所有程序的源头,我不知道它的名字,所以我将称它为编程之道。如果此道是完美的,那些操作系统就是完美的,如果操作系统是完美的,那么编译程序就是完美的,如果编译程序是完美的,那么应用程序就是完美的。用户满意之至--和谐便应运而生。编程之道流逝远去,又乘着晨风而归。

1.2 此道产生了机器语言,机器语言又产生了汇编语言,汇编语言产生了编译程序,如今有了上万种的语言。每一种语言都有其各自的卑微用途。每一种语言都表达出软件的阴和阳。每一种语言都在此道之中有其一席之地。但是,应尽量避免用COBOL语言编写程序。

1.3 宇宙之初有道,道产生了空间和时间。空间和时间便是程序设计之阴阳。不能领悟此道的编程者总是耗尽他们所要编写的程序的时间和空间;而领悟了此道的编程者却总有足够的时间和空间来达到他们的目标。除此之外,难道还有其它的情形吗? 1.4 精明的编程者听说了此道,并遵循它;平庸的编程者听说了此道,并寻觅它;愚蠢的编程者听说了此道,却嘲笑它。要不是因为有嘲笑,道也就不复存在了。最高的声音最难被听见。前进也是一种倒退。大器晚成。即使是一个完美的程序也仍然会有隐患。道深藏不露,难于理解。

第二篇 古代的大师

编程大师如是说: “倘若三天不编程,生活将变得毫无意义。”

2.1 老一辈的程序员是神秘的、深奥的。我们没法揣摩他们的想法,我们所能做的只是描述一下他们的表象。他们是清醒的,就像一只游过水面的狐狸;他们是警惕的,就像一位战场上的将军;他们是友善的,就像一位招待客人的女主人;他们是简单的,就像未经刻凿的木头;他们还是难以琢磨的,就像黑暗的洞穴中漆黑的池水。谁能说出他们心中的秘密?答案只存在于道中。

2.2 计算机科学巨擘图灵曾经梦到他是一台机器。当他醒来时,他惊叹道: “我不知道--我是梦到了自己是台机器的图灵,还是一台梦到了自己是图灵的机器?”

2.3 一家大电脑公司的一名程序员参加了一次软件研讨会。他回来后向经理汇报说:“为其它公司工作的那些程序员都是些什么的人啊?他们行为拙劣,不顾及自己的仪表。他们的头发又长又乱,衣服又皱又旧。他们闯进我们的会客组,还在我演讲时发生粗鲁的喧闹。” 经理说:“我本不应该让你去参加这个会议。那些程序员是生活在物质世界之外的。他们认为生活是荒唐的,一种意外的巧合。他们来去自如。他们只为他们的程序而活着,无忧无虑地活着。为什么要用社会习俗来约束他们呢?他们活在此道之中。”

2.4 一个礼堂者问大师:“有位程序员,从不构思、编写文档或测试他的程序,然而所有知道他的人都认为他是世界上最棒的程序员。这是为什么呢?” 大师回答说:“那个人掌握了道。他不需要事先进行构思,当系统崩溃时,他不会因此而闷闷不乐,而是心平气和地接受整个事实。他还从编写程序说明文档的需要之中超脱了出来,不在意是否有人看他的编码。他也不需要进行测试。他的每个程序都完美无缺。宁静而优雅,程序的用途也显而易见。的的确确,他已经进入了道的神奇境界。”

第三篇 设计

编程大师如是说: “当程序被测试时,再修改设计方案就太迟了。”

3.1 曾经有个人去参加一次电脑展示会,每天当他进入展馆时,都对门卫说: “我是个大盗,我偷盗的本领是出了名的。事先警告你,这次展示会也在劫难逃。” 这番话让门卫坐立不安,因为里面有价值数百万美元的电脑设备,所以他紧紧地盯住这个人。但这个人只是从一个展摊逛到另一个展摊,嘴里轻轻地哼着小曲。当这个人出门时,门卫把他拉到一边,搜查他的衣服,但一无所获。第二天,这个人又来了,并对着门卫嚣张地嚷着:“昨天我满载而归,但今天的收获会更大。”于是,门卫盯他盯得更紧了,但仍一无所获。在展示会的最后一天,门卫再也抑制不住自己的好奇心了。“大盗先生,”门卫说,“我被你搞糊涂了,实在想不明白。请告诉我,你究竟在偷什么?” 这个人笑了。“我在偷想法。”他说。

3.2 曾经有位编程大师,喜欢编写非结构化的编程。一位初学者试图模仿他,也开始编写非结构化的程序。当这位徒弟请师父评价他的进展时,师父批评了他的做法。他说:“对一位编程高手适合的,对初学者来说并不一定适合。在超越结构化之前,你必须先领悟道。”

3.3 曾经有位程序员被派到IBM的军机大臣手下工作。军机大臣问程序员:“设计一个财务软件包,和设计一个操作系统,哪一个更容易?” “操作系统。”程序员回答说。军机大臣立刻发生一种不信任的惊叹,“与一个复杂的操作系统,一个财务软件包简直是小巫见大巫。”他说。 “并非如此,”程序员说,“在设计一个财务软件包时,编程人员是作为一个中介者在观念各异的人们之间起作用的:这个软件必须如何操作,它的报表必须是什么形式,它必须如何与税法一致,等等,一个操作系统则不为其外观所限制。当设计一个操作系统时,编程人员只要在机器与人的思维之间寻找一种最简单的和谐就可以了。这就是为什么操作系统更容易设计。” 军机大臣点点头,笑了。“说来也是。但要想检测和纠正其中的错误,哪个更容易呢?” 程序员没有回答。

3.4 一位经理到编程大师那里,交给他一份有关一个新应用程序的需求说明。经理问编程大师:“如果我分配五个程序员给你,你需要多久能设计好这个系统?” “那将花费一年的时间。”大师立刻回答。 “但我们马上就需要这个系统,甚至要求更快!如果我分配十个程序员给你,你需要多长时间?” 大师皱了皱眉头,“那样的话,需要两年。” “如果我分配一百个程序员给你怎么样?” 大师耸了耸肩膀,“那么这项设计将永远无法完成。”他说。

Read more...

WPF – Expander 的使用方法

January 3rd, 2010 Arale No comments
<Expander Background="LightBlue">
      <Expander.Header>
           <StackPanel Orientation="Horizontal">
               <!--这里就是自定义Expander的Header的区域了,可以放Panel, TextDock之类的控件.-->
               <TextBox Text="Your message here" ></TextBox>
           </StackPanel>
       </Expander.Header>
        <!--这里就是自定义Expander的内容的区域了,可以自己随意的布局..-->
        <Border Background="White" Padding="5" Margin="3">
                 <TextBlock Text="{Binding Path=Content}" TextWrapping="Wrap"></TextBlock>
         </Border>
</Expander>

如果希望将Expand嵌套在ListView中,可以参考 WPF-ListView的数据绑定

Read more...

WPF-ListView的数据绑定

January 3rd, 2010 Arale No comments

下面讲一下关于ListView的数据绑定. 首先先定义一个用户的类.User,成员Username, Password, API. 前台的xml可以将ListView与List的成员绑定. 详细看代码.

 public class User
 {
        private string _username;
        private string _password;
        private string _api;
        public string Username
        {
            set { this._username = value; }
            get { return this._username; }
        }
        public string Password
        {
            set { this._password = value; }
            get { return this._password; }
        }
        public string API
        {
            set { this._api = value; }
            get { return this._api; }
        }
 }
 public class Users : List<User> { }

前台的代码相对简单一些.

<Window: 
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:NameSpace" 
<!--上面两行是一定要加的,NameSpace换成自己的命名空间-->
<!--上面local是为了下面windows.resources中使用的.-->
...
<!--这里的resource就是根据server端的User来定义的.-->
<Window.Resources>
        <local:Users x:Key="MyUser">
        <local:User Username="User1" Password="Password" API="API1" ></local:User>
        <local:User Username="User2" Password="Password" API="API2" ></local:User>
        </local:Users>
</Window.Resources>
 
<!--这里的父容器要指定DataContext,即User的组合Users,类型为List. 这样容器里面的内容才可以绑定成员-->
<Grid DataContext="{StaticResource MyUser}">
<ListBox Name="lstRecords" ItemsSource="{Binding}">
<!--这里是用来自定义ListView模板的.-->
<ListBox.ItemTemplate>
                <DataTemplate>
                     <TextBox Text="{Binding Path=Username}" ></TextBox>
                     <TextBox Text="{Binding Path=Password}" ></TextBox>
                     <TextBox Text="{Binding Path=API}" ></TextBox>
                </DataTemplate>
</ListBox.ItemTemplate>
<ListBox Name="lstRecords" ItemsSource="{Binding}">
</Grid>

到此, ListView就可以显示出用户的列表了. 其中DataTemplate中的格式可以随意更改.
P.S.
如果不喜欢使用前端来控制的话,前台XML可以变成后端的代码.

User usr = new User("username","password","api");
Users users = new Users();
Users.Add(usr);
lstName.ItemsSource = users;
Read more...

十九八七六十六亿人同时狂欢,五四三二一个人倒数孤单

January 2nd, 2010 Arale 1 comment

晨风带来希望,就像阳光送来温暖。
繁星带走陈迹,如同黑夜带走记忆。
漠然的忙碌,混沌的思索,遮挡不住闪耀的光辉,我们无比骄傲,我们完整的走过,
由古老迈向现代。
从幼稚成为经典,一个时代的变迁。
我们背叛了生活,背叛了信仰,
却无法背叛童年,
无法背叛曾经的纯真,
我是怀旧的一代的一员,
只因那日新月异,生机盎然,色彩缤纷的岁月。
只因那曾经蔚蓝的天空,
有时候,停下脚步,
也是一种前进.

又有谁能体会我的孤寂~

count down 2010

Read more...

CSS Hack

January 1st, 2010 Arale No comments
selector{
property:value; /* 所有浏览器 */
property:value\9; /* 所有IE浏览器 */
+property:value; /* IE7 */
_property:value; /* IE6 */
}
Read more...