Skip to content →

Daoyuan Li Posts

千里之行

用Qt写计算器,花了我一个晚上终于写出来一个能用的了,能赶上大二学Java时写计算器的速度了。

用Qt Designer设计界面比较方便,用熟之后效率会更高。把界面设计好之后可以通过继承的方式给自己的类添加逻辑。如果设计的界面保存为mycaculator.ui的话,uic将会自动将这个XML文件转换成ui_mycaculator.h,其中的namespace为Ui。

#include"ui_mycaculator.h"
class Caculator : public QMainWindow, public Ui::MyCaculator

另外,Qt对字符串的处理简直跟Java一样了:

QString s1 = expStr.split(QRegExp("[+-*/]"))[0]; 
QString s2 = expStr.split(QRegExp("[+-*/]"))[1];
double d1 = s1.toDouble();
double d2 =s2.toDouble();
resStr = QVariant(d1+d2).toString();
expStr.append(resStr);

总算是迈出了第一步,再接再厉。

更新:上面的正则表达式不对,因为’+’, ‘-‘和’*’在正则表达式中有特殊意义。应该为如下:

QString s1 = expStr.split(QRegExp("[\\+\\-\\*/]"))[0];
QString s2 =expStr.split(QRegExp("[\\+\\-\\*/]"))[1];
double d1 = s1.toDouble();
double d2 = s2.toDouble();
resStr = QVariant(d1+d2).toString();
expStr.append(resStr);
Leave a Comment

立志

毕业在即,前途未卜。不是没有动力,是实在不知道自己该干什么好。前几天连续看了几天的Android开发,从昨天开始又开始看Qt,自己已经迷茫的手足无措了。

但是不管做什么,只要能做好,就不会有任何问题。重要的不是做什么,而是我愿意花多少精力来做这件事情。

所以从今天起,给自己一个目标,然后矢志不渝的坚持下去。不再给自己任何借口,不要心存侥幸,不要有一丝恐慌。踏踏实实,一心一意的奋斗,不管前路如何艰险,我只顾走好眼前一步。

从今开始,用所有精力去完成一件事情:学习Qt。具体规划表:

25/10/2010–07/11/2010参考C++ GUI Programming with Qt 4
学习Qt,顺便复习C++语言。理解Qt各种类的使用方法,每天必须保证至少200行的代码量,中途不准间断。
07/11/2010–21/11/2010第一个Qt项目的详细规划,包括详细设计,严格按照软件工程方法做好前期工作。
21/11/2010–17/12/2010第一个Qt项目的编码和测试,以开源方式发布。严格按照计划进行,宁可考试挂科也不能放弃执行自己的项目。
20/12/2010–17/01/2011对上一个项目进行总结,给自己充电,阅读理解An
Introduction to Design Patterns in C++ with Qt 4。同时启动第二个Qt项目,做好详细规划。
18/01/2011–10/02/2011第二个Qt项目的编码和测试,以开源方式发布。严格按照计划进行,宁可不做毕业设计也不能放弃执行自己的项目。

铁了心去干一件事情,拿出破釜沉舟的勇气来,就像两年前一样。

Leave a Comment

满眼金黄

从来没有见过这么美的秋天,窗外的景色似乎一天变一个样子。窗前有一颗我叫不上名字的树,我眼看着树叶从翠绿转黄,最后变成黄灿灿的一片。旁边紧挨着的一颗雪松,昨天还是绿色的,今天就仿佛被感染了似地,给自己穿上了淡黄装束。偶尔一瞥,还能看见几片黄叶在秋风中转着圈悠闲地飘落,树下几个小朋友在玩把自己埋到落叶里面的游戏,咯咯的笑声让我也有加入他们的冲动。不远处更有一只大胆的松鼠,机灵的在树叶中闻闻嗅嗅,为马上就到来的冬季储备食物。几只鸟雀也不示弱,扇动着小翅膀落在柔软的落叶中,时而钻到树叶中,有时又突然从中扑腾而起,带起几片黄叶,惊得松鼠两脚站立,警惕的转头四顾。

前天我也在树下驻足,望着满眼的金黄激动不已。踩着地上厚厚的黄叶,柔软似海绵。虽然都是黄叶,每片树叶却各自与众不同,不论是大小形状,还是颜色深浅。轻轻拾起一片,闻一闻竟然还有清香飘来,可谓零落成泥碾作土,暗香亦如故。

这样的美景,这样的宁静,怎不让我想扎根于此。不为其他,只为能欣赏这一眼金黄。

Leave a Comment

Minun tavallinen päivä Suomessa

Minä opiskelen TKK:ssa, Suomessa. Työpäivänä aamulla herätyskello soi kello 7, ja minä herään. Minä nousen ja käyn suihkussa. Sitten minä juon maitoa ja joskus syön omenaa. Minä pyöräilen kurssille, koska minulla on uusi polkupyörä ja asun Otaniemessä. Päivällä minä olen kurssilla TKK:ssa. Lounasta minä syön ystävän kanssa Tietokonetalossa tai Päätalossa. Minä syön usein riisiä, leipää ja lihaa ja syön paljon. Iltapäivällä minä olen myös kurssilla tavallisesti. Minä en pidä kurssista, mutta minun täytyy mennä kurssille. Illalla minulla ei ole kurssia, mutta minun täytyy tehdä kotitehtävät. Minä menen kotiin noin kello 18 ja sitten teen illallisen. Minä osaan tehdä hyvää kiinalaista ruokaa, mutta en tykkää laittaa ruokaa. Kello 20 minä alan tehdä kotitehtävät. Minä en katso televisiota, koska minulla ei ole televisiota. Mutta joskus minä katson filmiä tietokoneella. Normaalisti minä nukun noin kello 24.

Viikonloppuna minä olen Solvallassa. Minä opiskelen suomea siellä. Minä opiskelen suomea, koska haluan olla työssä Suomessa. Perjantaina minä käyn Solvallassa ystävän kanssa. Me menemme taksilla. Me opiskelemme suomea noin kaksi tuntia, sitten me syömme illallisen ravintolassa. Siellä ruoka on aina hyvää ja minä syön usein paljon. Joskus me käymme saunassa kello 20. Minä pidän saunasta paljon! Minä uin usein järvessä siellä. Lauantaina ja sunnuntaina meillä on myös suomen kurssi. Opettaja on hyvä ja minä opiskelen hyvin paljon suomea siellä Solvallassa.

Me tulemme Otaniemeen iltapäivällä sunnuntaina. Sitten minä käyn kaupassa ja ostan ruokaa. Minä soitan kotiin Kiinaan tietokoneella joka viikko. Äiti ja isä ovat aina iloisia, kun soitan.

Minä tykkään Suomesta hyvin paljon ja haluan asua Suomessa ikuisesti!

Leave a Comment

Suomeksi

Daoyuan Li on opiskelija TKK:ssa, Espoossa, Suomessa. Hän opiskelee suomea nyt koska hän haluaa työtä täällä. Suomen kieli on vaikea, mutta hän aikoo puhua hyvin suomea. Hiljaa hyvä tulee!:)

 

Leave a Comment

月亮般孤独

又在电脑前坐了一天,就写了一页论文。到了晚上像被什么召唤似的,出去沿着海边转了一圈。寂静的树林里只有自己的脚步声,偶尔微风拂过,树叶也只轻轻喧闹一阵,然后又似婴儿睡觉一样没了声响。昏黄的路灯透过树叶,把斑驳的影子随意的洒在碎石路上。我踩着这些精灵似的影子,小心翼翼的往前走。前面除了树、灯光和影子之外什么都没有。不过在这个仲秋的夜里,我能对这片树林有什么期待呢?再说树林中昏暗的路灯已经给了我足够的惊喜了。

走出树林来到海边,在一个冰冷的长凳上坐下,满天找寻月亮的踪迹。可是天上只有一些星星,杂乱的点缀在天空那块黑幕上。这些星星也不像小时候的家乡的星星,它们总会像老相识一样对我眨眼睛。也许是远在他乡,那些幼时的玩伴已经认不出我了吧。

一大片云层后面似乎有什么在跳动,最后它终于挣脱了白云,露出了疲惫的面庞。

“你给我带来远方亲人的祝福了吗?”

但是它沉默不语,像睿智的老者一样,什么都不说,让我自己思考。我仔细端详它的脸庞,上面数不尽的沟壑述说着它的沧桑。它疲倦的眼睛,缓慢的步伐,无一不在向我无言的倾述。

“我知道,我跟你一样孤独寂寞。”

它脸色一亮,随即又黯淡了下去。我收回目光,朝远处望去。海上波光粼粼,偶尔也会有一些不一样的涟漪,在中间一点,然后迅速的散向四方。我呆呆的看着,脑袋中放映着小美人鱼的故事。那么在我去不了的海底,有没有一个美人鱼把我当做她的王子呢?

我自嘲的笑着,心突然揪成一团,我紧紧地抱住自己,蜷缩在长凳上。

“如果我向老天祈求,他会给我一个女朋友吗?”我继续异想天开,随后脑中浮现出一个人手拿三炷香,虔诚的跪在寺庙,一面磕头一面口中喃喃“我要女朋友,要好多女朋友”的奇景。

一抬头,发现月亮都笑了。

One Comment

Qt学习:简介和信号与槽机制

以前以为Qt比较麻烦,今天看了一下,发现它其实不比Java难。

首先Qt有非常详细的文档。这个对于开发者来说是十分重要的,纵览现在的流行开发平台,不管是Java,还是微软的平台,都有为开发人员提供详实的文档和指南。如果没有文档支持,开发过程会相当痛苦。这一点我深有体会,前段时间用libpcap写点儿小程序,这个库的所有文档就是一页man page,我甚至不知道某个函数的参数到底是什么类型。

其次,Qt的跨平台性能不输Java。Qt现在支持大多数桌面平台,Windows,Linux和Unix,Mac,手机平台上面的应用也已经成熟。开发者不用更改一行代码,就可以使自己的应用程序运行在每一个操作系统中。

还有,Qt被Nokia收购之后推出了配套的IDE,Qt Creator。这个IDE强大且美观,包含方便的图形界面设计工具,图形化调试工具,手机界面模拟器以及多样化的版本控制工具支持。

总体来说,Qt的易用性是不错的,易于上手,易于开发;但是至于性能,包括速度和安全性,我目前还没有一个清晰地认识。但我相信Nokia里面的那帮人会不断想方设法的提升Qt性能的,毕竟Nokia现在手里的王牌也只有这个了。

Qt之中提供了方便的消息传递机制:信号和槽机制(Signals and Slots),这也是Qt的核心机制,用于对象之间的通信。他的格式如下:

connect(Object1, SIGNAL(signal), Object2, SLOT(slot));

当Object1的信号被触发时,Object2的相应槽就会给以相应。当然,上面只是信号与槽的一种连接方式,其他方式还可能是:
一个信号与另外一个信号相连,即一个信号触发另外一个信号:

connect(Object1, SIGNAL(signal1), Object2,
SIGNAL(signal2));

一个信号与多个槽相连:

connect(Object1, SIGNAL(signal), Object2, SLOT(slot1));
connect(Object1, SIGNAL(signal), Object3, SLOT(slot2));

同样的,一个槽也可以响应多个信号:

connect(Object1, SIGNAL(signal1), Object2, SLOT(slot));
connect(Object3, SIGNAL(signal3), Object2, SLOT(slot));

简单的例子:

#include
#include

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton b("Quit");
    b.show();
    QObject::connect(&b, SIGNAL(clicked()), &app, SLOT(quit()));
    return app.exec();
}
Leave a Comment

UML Review

Input and output of different stages in software development:

StageInputsOutputs
Requirement AnalysisStackeholders, goals, existing bussiness processesBusiness models, use case models, prototypes
Systems
Analysis
 Business models, use case models, prototypes Use case definitions, object model, prototypes
Design Use case definitions, object model, prototypes Object model, data model, component model, architectural view, interface specifications
Implementation Object model, data model, component model, architectural view, interface
specifications
Source code, complied code, database, interfaces, deployment plan
Testing Business models, use case models, use case definitionsFault report, acceptance

Activity diagrams are used to describe flows in a variety of situations, they are flow diagrams and can be used in business modelling, requirements modelling, systems analysis and design.

Use case diagrams are used to show the presentation of functionality of a system and its interaction with the outside world. The diagrams show the boundaries of software systems but do not specify functionalities. They can be used in business modelling and requirements modelling.

Class diagrams show the static structure of a system, with classes and relationships between classes. They are used in business modelling, requirements modelling, systems analysis and design.

Statechart diagrams are used for modelling the internal state changes of and object and are a variant of activity diagrams with largely the same notation. They are used in business modelling, requirements modelling, systems analysis and design.

Sequence diagrams provide a time-ordered mapping of steps in the execution of a scenario into interactions between objects. They are one of the primary tools ofr elaborating use cases in analysis and design. They are used in systems analysis and design.

Collaboration diagrams provide a mapping of steps in the execution of a scenario into interactions between objects, drawn in two dimension in a similar way to class diagrams. They are used for similar purposes to sequence diagrams, but present the information in a different way.

Component diagrams show the implementation structure of the application and are used by the designer to indicate where the objects are implemented and how the components interact.

Reference: Ken Lunn, Software Development with UML, Palgrave Macmillan, New York, 2003, pp362-376

Leave a Comment

开学一周

感觉一周时间里什么都没干,一晃又是周末了。也许是第一周的缘故,TKK的课程给我的感觉并没有想象中的紧张,水课也不比KTH少。课表看起来吓人,各个科目排得密密麻麻,可是有些科目只有一两次课,剩下的都由自己课下完成。不过下周课会多起来,作业和deadline都会多起来,忙碌点也好,可以不用思考一些不着边际的问题。

今天做了中餐,估计是今年最后一次做了,因为做饭太浪费时间,虽然每天一个小时的做饭时间还是有的;而且本人对食物实在不挑剔,以前的目标是熟了就行,现在变成只要吃了不生病就行了;学校食堂也不贵,每天可以至少在食堂吃一顿,也许有时候一天吃两顿也是可以的。平时饿了可以吃点儿面包,煮点儿意大利面什么的,或者拿微波炉烤个披萨,不耗时而且吃起来还有滋有味……想不明白小时候那么挑食的我如今怎么这么好打发……

最近听班得瑞,对他们的恋爱专辑特别有爱,不知道为什么,也不想知道为什么。这几天睡觉一直做梦,这一点很反常,昨晚甚至梦见某个我认识的女生向我表白,可借一觉醒来就忘了那个女孩是谁了。唉,白天自作多情也就算了,连睡觉时也来这一套,自己都受不了了,鄙视。不过如果真有人要向我表白,我也真不会介意的。

好吧,我不做白日梦了,洗洗睡了……

Leave a Comment

开学

来芬兰将近一个月了,在这个月里除了成功的把自己摔伤当了一周的杨过之外,我也适应了这里的环境,特别是芬兰语环境。

今天从Solvalla回来时发现学校多了好多学生,看到成群结队的同学我又小小苦恼了一下,原来Espoo平时也没有我想象中的那么宁静,不过有幸一睹他安静时的样子,这也够了。在Solvalla呆了一周,它真是一个风景宜人的地方,置身那里可以远离喧嚣和烦恼,有机会我一定常去。

回家后发现校医院给我来了一封信,原来是护士当时没有问我最近有没有打破伤风疫苗的问题,于是写信给我让我去医院看一下。不知道这个细节能说明什么问题,是芬兰的医疗工作者业务不熟呢,还是他们对病人负责呢?

明天就是Orientation,下周一就开始上课了,希望这一学年是忙碌的一年;虽然对前途依旧迷茫,但如果原地不动也不会是个好主意,因为周围的一切无时不刻都在变化,所以最好能多行动,积攒经验,脚踏实地慢慢前行,不管是朝着哪个方向。

Leave a Comment

热心的芬兰人

今天骑车去Ikea时完全没有用GPS,因为之前在Tourist Center拿了一份非常详细的户外运动地图,而且沿路给骑行者的路标也十分详细。所以我就信心十足的出发了,骑到路口的时候再拿出地图来计划路线。

当我在一个十字路口看地图的时候,一个遛着狗的女士对我说了一句芬兰语,当她看到我脸上的茫然后马上换成英语问我是不是迷路了。我说有一点点,本来我只是想知道自己现在在什么地方的,她只给我看了之后又问我要去哪儿,我说去宜家,然后她又在地图上只给我看,说有这两条路线,一条需要翻山,另一条可能平坦一点。我说翻山可能有意思一点儿吧,她说是这样,然后又详细的告诉我该怎么走,从哪儿过马路,穿过一个桥洞,再沿着医院的方向走……热情的都让我有些不好意思了。我谢过她,继续前进。

在另一个十字路口,我又拿出地图辨认路线。这时一个中年大叔从我身边骑了过去,骑过去之后他停下来,问我要去哪儿,我说去宜家。然后大叔就掉过头并对我说,跟我来吧!我很诧异的问他,你也去那儿吗?他说本来不是的,但是我就住在那附近,我可以带你去。于是我就跟着大叔走,一路上大叔给我介绍这是学校,这是他父母朋友的家,这是很受欢迎的咖啡厅……路上遇到骑着车的小学生,大叔也用芬兰语叮嘱一番,似乎是让小朋友们注意安全。骑了大概二十分钟才到,一路翻山越岭,大叔还不停的给我介绍这个地方,把我感动的一塌糊涂。

以前听同学说芬兰人比瑞典人纯朴,今天算是体会到这一点了,至少在瑞典,你不张口的话应该不会有人主动上来问你需不需要帮助的。

P.S. 这里的郊区真的很美,以后有机会要多去城市周边转转。

Leave a Comment

搬家

不知不觉出来已经将近一年时间了,在瑞典的这一年里,老实说我并没有学到很多东西。也许是自己当初期望过高,所以才有这种感觉。学业上没有丝毫进步,甚至有所后退。但是这一年却实实在在的开阔了眼界,包括对这个世界、各个国家的政治经济和文化的认识,对人生的感悟都有突破。不敢说自己成熟了,但我想自己现在应该比以前更能适应现实的残酷和无奈,而自己的价值观也随着这些认识变得更加世俗。

现在已经搬到了芬兰,看着满大街的芬兰语,感觉自己又一次变成了文盲。学的瑞典语似乎没什么用,也不知道是不是自己学的不够。每次想说“Tack”的时候总是得憋回去,而“Kiitos”也好像不那么顺口。

不知道为什么,我总是期望着离开一个地方,在国内的时候总是想赶快离开那片土地,几个月前又开始期待着离开瑞典。离开是一种逃避,是一种解脱。离开时可以抛下一些东西,一些记忆;离开时可以憧憬新的忙碌的生活,可以改头换面重新做人。就像给电脑重装系统一样,跟一些文件说拜拜,装好系统之后重新布置安装各类软件,期望完事之后系统能快一点。

原来这就是我这么爱重做系统的原因。

Leave a Comment

瑞典语小结

今天上午考完了advanced beginners的瑞典语,总结一下这一个月学习的内容。

语序:老师说在这一阶段最重要的就是语序了。在主句中永远遵循动词第二的法则,时间状语要么放在句首、要么放在句尾,地点状语可以放在句首,但是当时间在句首是地点放在句尾、时间状语放在句尾是地点放在倒数第二的位置。副词一般放在动词之后,当然也可以放在其他的位置,视强调的不同成分而定。

名词和形容词的一致性:要考虑名词是en还是ett,是单数还是复数,是定指还是泛指。形容词要随着名词作相应的改变。形容词变副词通常是加t即可。形容词比较级一般加are,最高级加ast,最高级定指加aste。

代词:注意sin、sitt、sina的用法。

特殊动词:表示知道,认识的词有vet,
kunna, känna, känna till, känna sig。表示把东西如何放在某个地方的词有sätta, ställa, lägga。

S-verb:大致可分为三类,即表示被动,表示相互性质的动作,以及一直带s的动词。

Perfect participate:动词变形容词。

组合词:由两个或两个以上名词或形容词组合而成,中间没有空格或者连字符,某些词可能要加s。

Leave a Comment

计划泡汤

很不幸的,今天自行车被偷了,而且是在我刚买完帐篷之后。原本打算骑车去赫尔辛基的,或者至少骑到芬兰境内,然后从Kemi坐火车去赫尔辛基。本来打算买了帐篷后明天就骑到Uppsala,演习一下,不过看来完成不了了。

奇怪的是,当我看到车不在我原先停放的位置后,我脑袋里除了闪过一个“Fuck”之外,没有其他任何的情绪。虽然损失了两千多大洋,虽然才骑了一个礼拜,虽然买了很多修车工具,虽然花了很长时间来修理和调试,虽然买了去Haparanda的自行车路线地图,虽然骑行计划已经有了些许眉目,但是意识到车被盗之后我却没有任何感觉。

也许是麻木了吧,对这个世界的丑恶,对贪婪的人性,我都已经习以为常,有时候我甚至会在顺利的时候怀疑事情的走向是否过于顺畅,仿佛不发生一点什么反而不正常似地。对所有自己拥有的东西,也没有什么眷顾,这些身外之物,似乎最初就不属于我。不再去追求那些花里胡哨的物件,不再为失去的东西惋惜懊恼。我就这样麻木的,平静的呼入一腔口气,又平静的将它呼出,仿佛什么事情都没有发生一样。

生活这样平淡的进行,我不再为胜利欢呼,不再为失败沮丧,不管是得是失,都那样心如止水。没有欢欣鼓舞的沿途,没有值得憧憬的前路。一个人走在四通八达的交通网上,在苍茫的原野下愈显卑微。

沉寂的生命纵然无人喝彩,也会照样不卑不亢的抵达终点;而那些轶事传闻,只是墓碑上简练的铭文,有朝一日也会被岁月轻轻抹掉。

Leave a Comment

逆风,逆行

不管什么时候骑车,总感觉路边的花花草草会向我鞠躬。考虑到我本人没有花草通吃的魅力,又经过一番苦思冥想之后得出结论:不管我什么时候骑车,我总是逆风而行。也有可能是顺风的时候省力,不会去考虑为什么可以骑得这么快的问题。嗯,当我以45公里的时速骑行时,我是决计不会考虑为什么的,我考虑的可能是能不能再快一点。

昨天去市中心了,结果一进城就迷路了,中间还有一次在自行车道上逆行了。我一直以为自行车不存在逆行的问题,结果昨天就傻傻的被卡在了路中间,看着前面冲过来的车流,只好灰溜溜掉头逃命。唉,第一次进城就土了一把。

今天平生第一次补胎。中午回来时还没发现车胎爆了,等到下午准备出去时发现后胎一点气都没有。只好卸下车轮,撬开外胎,把内胎抠出来后检查破在什么地方。掏出工具,打磨车胎,涂上胶水,贴上补丁,充气检查。然后装好内外胎和车轮,顺利骑到了Barkarby在Jula买了新内胎。明天再检查一下,看看今天的补胎成果咋样。万一不行就换新轮胎。

Leave a Comment