Henkilön zdh profiili丁丁乐ValokuvatBlogiLuettelotLisää Työkalut Ohje
感谢访问!
Odota...
Kommenttisi on liian pitkä. Lyhennä sitä.
Et kirjoittanut mitään. Yritä uudelleen.
Emme voi lisätä kommenttiasi juuri nyt. Yritä myöhemmin uudelleen.
Tarvitset kommentin lisäämiseen luvan vanhemmiltasi. Pyydä lupaa
Vanhempasi on poistanut kommentit käytöstä.
Emme voi poistaa kommenttiasi juuri nyt. Yritä myöhemmin uudelleen.
Olet jo lähettänyt vuorokauden aikana suurimman sallitun määrän kommentteja. Yritä uudelleen 24 tunnin kuluttua.
Tilissäsi on voitu poistaa kommentit käytöstä, koska järjestelmämme mukaan olet saattanut lähettää roskapostia ja -viestejä muille käyttäjille. Jos tilisi on mielestäsi poistettu käytöstä virheellisesti, ota yhteyttä Windows Live -tukeen.
Tee alla oleva suojaustarkistus lähettääksesi kommenttisi.
Suojaustarkistukseen kirjoittamasi merkkien tulee vastata kuvan tai äänisisällön sisältämiä merkkejä.

丁丁乐

写给自己,同时也欢迎大家看
30.4.2009

岱庙夜景360

岱庙夜景360

        岱庙属全国重点文物保护单位,又称东岳庙或泰山庙。位于泰安市区北,泰山南麓。其南北长406米,东西宽237米,总面积9.6万平方米,是泰山最大、最完整的古建筑群,为道教神府,是历代帝王举行封禅大典和祭祀泰山神的地方。

 

F5.6, 1/2sec, iso400.

正阳门
        始建于宋,毁于二十世纪中叶,现在的正阳门是1985年按照宋代建筑风格重新修建的。古时候只有帝王才能从此门进入岱庙。正阳门高8.6米,上面的五凤楼高11米,共5间。

 

 

F4.8, 32sec, iso100

 岱庙坊
        又名玲珑坊,建于清代康熙十一年即公元1672年,为四柱三间三楼式牌坊,高低错落,通体浮雕,造型雄伟,精工细琢,为清代石雕建筑的珍品。

 

F5.6, 32sec, iso100

岱庙东南角楼

  

F2.8, 4sec, iso400

岱庙北门

29.3.2009

状态转换使用笔记

1. 绘制状态转换图,先把正常情况的图画出来,再补充特殊情况的Case。
2. 状态具有入口函数,即一进入这种状态就要执行的函数(Entry);还有出口函数,即通过此函数进入下一种状态(Exit or Transition)。有时没有入口函数,而是完成一个动作进入下一个状态,即只有出口。
3. 每种状态的必要条件:
    多于一个的入口,或者出口,且二者必须都有;
    在此状态下有一个或者多个action (条件判断或者动作作者设置下一个Timer) 要做,或者有多种输入要响应动作,action完成后会进入下一个状态;
4. 反复要调用的函数等,往往需要状态转换:例如 Timer,反复进入的消息处理等。
5. 状态转换函数是不需要check它的先前状态的,只需要关心它如何进入下一个状态。
6. 找到有意义的状态,建立对应的类。某些状态是无意义的,不需要建立相应的类。
7. 一个状态至少有自己特有的入口函数或者不同的出口函数,否则和别的状态重合。
8. 如果某种状态只有一个入口,一个出口,则是一种顺序流程,此状态也许是不需要的。
9. 在某种状态下,一般要持续一段时间,瞬间的状态往往意义不大。
10. 简单的分支可以使用if  else 来解决,从而合并一些状态。
11. 需要在简单清晰的状态转换和避免过多类似状态之间权衡。
12. 如果把所有的状态合并为一个,则是一种庞杂的分支结构,回到了面向过程的老路上。
13. 状态要权衡好粒度。
22.12.2008

世界顶级精英们的人生哲学!

1.别为你自己和别人下定论,你所看到听到的可能只是一面,为这个失去可能的朋友,很不值。
2.你可以有喝醉的时候,我们可以接受,但是你要明白和真正的朋友一醉才能让伤心事方休,否则,你只会是别人的谈资和笑柄。
3.如果你的个性让很多人对你敬而远之,那么你的个性是失败的,个性的成功在于能吸引,而不是能排斥。
4.别怕丢人,如果你实在不行就别怕丢人,行的话,建议你们-去追求丢人,那是一种成功的尝试,至于为此笑话你的人,你可以把他
们从你将来人生对手的名单中排除了,所以你也不要笑话那些上台丢人的人。
5.你的确要学得有心计,但是记住,永远记住,在社会上要胜利的唯一的方法永远只是一个,那就是实力,永远不用怀疑。
6.你可以看不惯一些东西,但是你应该学会接受,让自己去适应环境,因为环境永远不会来适应你,但要和同流合污划清界限。
7.好汉不吃眼前亏,但是在很多时候,要冷静下来,多收集一些数据材料,想更明白点再说,别去争论,可以回忆一下,你会发现,人
不可能赢得争论,可以说,争论所提级的话题都是不值得去争论的。
8.要有精英意识,没有不可能的事情,真的没有!莫过于梗直,莫过于圆滑,外圆内方即可。
9.遇到可相信的朋友时,要好好和他相处下去。因为在人的一生中,可遇到知己真的不易。
10.没有什么东西比围观者们更能提高你的保龄球的成绩了。所以,平常不要吝惜你的喝彩声。
11.把未出口的“不”改成:“这需要时间”、“我尽力”、“我不确定”、“当我决定后,会给你打电话”……
12.你在表演或者是讲演的时候,只要有一个人在听也要用心的继续下去,即使没有人喝采也要演,因为这是你成功的道路,是你成功
的摇篮,你不要看的人成功,而是要你成功。
13.不要期望所有人都喜欢你,那是不可能的,让大多数人喜欢就是成功的表现,不要把别人的好,视为理所当然,要知道感恩。
14.每个人都有孤独的时候,要学会忍受孤独,这样才会成熟起来。不要因为寂寞而乱了方寸,而去做无聊无益的事情,白白浪费了宝
贵的时间。
15.管住自己的嘴巴,不要谈论自己,更不要议论别人。谈论自己往往会自大虚伪,在名不副实中失去自己。议论别人往往陷入鸡毛蒜
皮的是非口舌中纠缠不清。
16.写出你一生要做的事情,人生要有目标,要有计划,要有提醒,要有紧迫感。一个又一个小目标串起来,就成了你一生的大目标。
生活富足了,环境改善了,不要忘了那张薄薄的单子。
17.有资格坐轿的人,争着抬轿的很多,你再凑热闹,别人也未必注意你,不妨扶一下旁边那个走得筋疲力尽的人,对于他,每一次帮
助都意味着一种人世的温暖。
18.不论你在什麽时候开始,重要的是开始之後就不要停止。不论你在什麽时候结束,重要的是结束之後就不要悔恨,有理想在的地方
,地狱就是天堂,有希望在的地方,痛苦也成欢乐,从绝望中寻找希望,人生终将辉煌。
19.当你能飞的时候就不要放弃飞。当你能梦的时候就不要放弃梦。当你能爱的时候就不要放弃爱。
20.如你想要拥有完美无暇的友谊,可能一辈子找不到朋友。
21.世上最累人的事,莫过於虚伪的过日子,活出真实的自己。
22.在有多个出席者的场合,主动介绍自己的朋友给其他人,或者主动在你认识的朋友之间穿针引线。
23.在受到别人对自己的相貌、事情、人品赞扬时,不要表现出理所当然的样子,也不要假意否认,合适的方式是表示感谢,尤其感谢
朋友的肯定与支持。
24.虽然在商言商,但是我们要尽量不谈回报地先为别人做点什么,这样就赢得了在心理上比别人优越的债权感。一个人的社会地位是
别人对他负有的社会债务感的总和。
25.不逃课的学生不是好学生。什么课都不逃,跟什么课都逃掉没什么两样。一定要掌握学习的主动性,不要像读中学一样被老师牵着
鼻子走。逃课没有错,但是不要逃错课。同时,既要逃课,又要让老师给高分。
26.做事不如做人,人脉决定成败。一个人有多少钱并不是指他拥有多少钱的所有权,而是指他拥有多少钱的使用权。一个人具备多少
能力,不只是说他一个人的时候能做什么,还包括他能通过别人做什么。
27.大学期间一定要多去图书馆多去自习室。很多书你现在不读,一辈子就再也没有机会去读了。虽然不是每本书看了都一定有用,但
是,因为你不知道究竟哪本书以后会有用,所以只好多看书,并且抛弃那些过于XXXXX.尽管每次网到鱼的不过是一个网眼,但要想捕
到鱼,就必须要编织一张网。
28.养成个人风格,找出你所喜欢的,不论是衣着或是爱好,哪怕是与众不同的小习惯也好。没有个性的人无法踏入社会的顶层。
29.学会授权他人,许多人不肯或不能这样做,因此始终被钉在从属的职位上。授权他人是成功的一半,一个事无巨细,不能将工作授
权别人的人,注定会遇到极大的障碍。
30.长相出众最好,如果长得不好,就让自己有才气,如果才气也没有,那就要经常微笑。气质是首要,你的形象价值100万美元。
32.远离搬弄是非、挑拨离间之人,手段高的,用小人以驱驰,能力高的,还小人以颜色,品德高的,待小人以宽容,血压高的,怕只
有被小人气死的份儿了,宁得罪十个君子,也不要得罪一个小人。对社会的简单形容就是:全是人、全是人、全是人——但社会肯定会
分出层次,只有一个办法,那就是竞争,你必须努力,必须使自己成为社会的强者,强者才能拥有一切,而不是金钱可以买到一切,否
则结局就是被压在社会的底层
9.12.2008

“数字签名”和“数字证书”

数据加密。
A利用B的公钥加密数据,B用自己的私钥解秘,从而保证只有B能看到A的信息。
 
内容认证,即“数字签名”。
A发出的信息包括:内容+加密摘要+公钥,其中加密摘要是从内容算出摘要,再用私钥加密得到的。
B根据内容算出摘要,在根据加密摘要和公钥还原摘要,二者一样验证通过。从而认为内容没有被第三方篡改。
 
发布者身份认证,即“数字证书”。
发布者在权威第三方(CA)申请帐号,CA则为此发布者保存一个私钥,发布者会得到:发布者信息+加密信息摘要,其中加密信息摘要是通过发布者信息算出摘要,再用私钥加密得到的。
应用使用者(用户)执行程序时,会利用预存在系统上的公钥来验证证书,从而验证程序发布者是CA认可的机构。
 
实际应用中,后二者往往合在一起,除了认证身份,还保证内容。
verisign应该就是把后二者合二为一,用私钥进行签名和添加数字证书。
SSL应该三者都可以保证。
18.11.2008

Python使用笔记

一、动态性
1. Python可以动态的增加(addattr())或者删除(delattr())一个自定义类或者其对象的属性(包括变量和函数),也可以用属性名来查到对于得属性(setattr())。甚至可以使用lamda把一个存在的函数动态绑定到一个类中成为其成员函数。
2. 任何一个变量,不管是自定义类型还是系统定义类型,都是对象。甚至函数也是对象,有自己的属性。
3. 一段代码实际也是一个Python对象,不管这段代码是函数,模块,还是类。
4. Python没有接口类,也没有变量类型(弱类型),调用函数时只需要对象具有此方法即可,不需要像C++那样是继承自同样的父类。
5. Python是与生俱来的彻底的动态绑定,具有动态判断类型属性的机制;而C++是一种语言机制,其面向对象是基于编译时类型识别的(强类型)。
 
二、继承性
1. 由于接口类已经没有必要,所以Python里类的继承概念已经没有C++那么意义重大了,只有以下两点意义:
   可以继承父类的所有函数和变量;
   在脚本语言中,类有利于程序的模块化和结构化。
 
三、一些语言机制
1. Python依靠缩进来确定分支,有一定的方便性,使程序更加清晰和美观。但是如果缩进有笔误,很难发现,尤其是分支比较多的情况下。
2. 如果一个变量不小心在某处赋予其他值,甚至不同类型的对象,后面会有奇怪的现象出现,而且不容易被发现。所以如果有一种静态代码分析软件,会非常有用。
3. Python没有引用,基本类型不能作为参数被传出,这一点比C++要不方便。
4. 如果想要传出参数,不能使用基本类型,而要使用自定义类型。就像C++的指针形参,对它直接赋值改变不了它的值,但是可以改动它所指向的内存位置。
5. 如下代码
   a={1:2,3:4}
   b=a
   则b是和a指向同一对象的变量,而不是新的一个对象。

使用Python开发网站笔记

一、界面部分
实际这部分和Python无关。
1. 凡是界面都是html实现的,凡是界面中的逻辑都是javascript实现的。
2. 网页的行为主要是:初始化,交互动作,提交处理。
3. 网页变化实现:
   Url实现整个网页的变化,可以传递参数。
   Javascript对现有的控件进行操作。
   Ajax实现局部的网页更新。
4. 下拉菜单,可以使用一个ajax动态网页实现。产生下拉菜单,实际就是调用了一个新的网页。

二、逻辑部分
1. python作为逻辑层,连接了db和ui
2. 尽量把逻辑放到Python中处理,而不是网页的JavaScript中。
   Python处理逻辑很方便,但是Python生成网页这种方式不是很方便。
   虽然python要同时动态生成html和javascript,但是如果需要动态生成JavaScript脚本,会大大增加复杂度。
3. 参数传递
   利用python动态生成可以协同工作的网页,通常使用?para=1来传参数,这也是不同网页的唯一传递参数的方式。
   Python是可以向网页传入参数的,但是网页不可能向Python直接传回参数,只能采用req的方式。
   只有调用新的网页的时候,才使用?para=1传参数,而调用新的python函数可以使用req来传递参数。
4. 先思考一下在界面层次怎么实现,再考虑python如何生成它们。
5. Python函数类型:除了库函数,Apache接口函数,生成html的函数,生成javascript的函数,访问数据库的函数...
6. check权限有两道关,一道是界面不出现用户做不了的操作,一道是如果偶然做了这种改动,在改数据库以前再一次check。
7. 网页的访问
   1). Python 截获访问,获得req所有参数,和db数据结合,生成网页,以及链接地址。
   2). 新的链接地址又被Python截获,同上获得req并与db结合,还有可能去更新db,最后生成网页返回。

三、数据部分
1. 数据存在形式
   同一数据可能有4种存在形式,并且在4种形式中转换,其中一些转换是单向的。
db库中数据<---(SQL)--->python数据类型---(python动态生成Javascript)--->Javascript数据类型
                                       /|\            |                                                             |
                                  (Form)   (python动态生成html)                                 (Javascript)
                                        |              |                                                             |
                                        |             \|/                                                          \|/
                                       html界面数据<-----------------------------------------------
2. 数据更新不成功,可能是SQL语句不对,也有可能是Table设定不对,比如约束条件或者unique等不对。
3.11.2008

Sender + Observer和Cosumer + Provider

Observer要处理Sender的要求,是Provider;Sender调用Observer的具体功能,是Cosumer。
实际上,Cosumer和Provider是更广义的概念,凡是制定接口者则是Consumer,凡是接口实现者则是Provider
这种概念可以套在大部分设计模式中。

1.11.2008

模型转换过程

当我们面对一个问题时,往往经过如下的转换过程来得到最终有效的代码:
现实问题-物理模型-数学模型-类模型(设计模式)-code
其中数学模型是关键,它反映了问题的本质,采用函数化问题是一个常用的方法。

以下是一个例子。

现实问题 & 物理模型:
从不同数据源得到first_name(fn), last_name(ln), display_name(dn)等。
有的数据源是只提供fn和ln(dn需要我们算出),有的只提供dn(fn和ln需要算出),有的则都提供(相
互转换方法需要我们算出)。

数学模型:
fn, ln和dn是可以相互转换的,他们的转换函数用F1()和F2()表示。
dn=F1(fn, ln)
(fn, ln)=F2(dn)
F1()和F2()是两个互为反向的函数,并且可以配对使用。
如果我们想得到它们所有的信息,并对它们进行一些操作,则需要如下两种操作函数:
Op1(fn, ln, F1)
Op2(dn, F2)
使用哪种操作函数,取决于数据源给我们提供了(fn, ln)还是dn。

类模型(设计模式):
不同的数据源的F1和F2是不同的,所以这里要采用策略模式来表达转换函数:
Class ConvertName1 {F1(); F2();}
Class ConvertName2 {F1(); F2();}
它们继承自一个基类ConvertName,提供F1()和F2()接口。
而两种操作函数则为:
Op1(fn, ln, ConvertName*)
Op2(dn, ConvertName*)

Code:
5.9.2008

14年

      今天是9月5日,看起来没有什么特别之处,却是我来天津14年的纪念日。
      14年前的今天,我和两位老乡和其中一位老乡的哥哥四人一块搭乘火车来到了天津,去天津大学报到。那种绿皮绿座的火车,现在已经很少见了。乘坐一夜的硬座,会让人十分的疲倦。下了火车,等待我的是从北京赶到天津接我的父亲,和天津大学的接送车。谁知道,真正等待我的,是在这里度过的接近一半的有生之年。
      14年纪念日,看起来也没有什么特别,但对我来说,是7+7的年头,7年上学,7年工作,算是个吉祥的年头。
      4年的大学,有身在外地的孤独,专业面前的彷徨,还有老乡会里的哥们,宿舍里的奇怪气氛,也有获得500美刀奖学金的喜悦,保送研究生的幸运。
      3年的研究生,经历的是考六级的艰难,课题的不确定,写论文的辛苦,编软件的兴奋,最后一切得以一一化解,以优秀论文顺利毕业,还收获了爱情。
      6年的ITC工作,体验了职场的打拼,走进了婚姻的殿堂,面对的还有生活的艰辛。
      1年的VST工作,依然的coding,和未知的未来。
      14年是不短的日子,转瞬即逝。19岁到33岁被压缩到了这一段时空之中,还是我,却不太清楚自己到底是什么岁数。当年一块来天津的四个人中已经有一位不在人世,恍恍惚惚不大敢相信这样的事实,但许许多多的事却一件件的映射到这一时刻的大脑当中。
      特写此文纪念一下这个特殊的日子。
20.7.2008

设计过程

需求->流程设计->从流程中抽取功能函数并罗列->子功能的拆分合并->子功能的系统化层次化和形式美化->功能的实现。(流程->功能)
UI的设计可以使用同样的流程。(流程->UI)
设计不只是从粗到细的,还有从零乱到有序。
 
Valokuva 1/4

zdh zh

Ammatti
Sijainti
Kiinnostuksen kohteet
现在上班族