Xavier's Blog

项目验收前一天的Bug

| Comments

前段时间,教研室正在做一个小项目,准备作为一个作品参赛。可是在提交作品的前一天,大家进行最后的模块整合时,发现一个重大bug,把之前的项目计划打破了,作品不得不推迟提交。这让我不禁想起了我们之前做的另一个项目,有次要想外地的客户进行阶段性演示,在前一天晚上整合项目各模块时,发现了重大bug。一开始大家怎么也找不到引起bug的原因,结果一起奋战至第二天凌晨3点,才初步解决了问题,然后大家各自回去睡了一会儿,接着乘早上5点的火车出差见客户。

为什么我们总是在项目要提交或者进行阶段性验收时,发现重大问题,而不是在平时开发项目的时候?我想,一个原因是我们在项目开发时,几乎就没有应用软件工程方面的思想与方法。目前,作为计算机专业的研究生,我们平时软件开发方法还属于“作坊式”的,我们教研室是这样的,我想我们学校其他教研室的状况也会跟我们类似,这是十分可悲的。有时我们的研究课题会更偏向理论,这时也许不需要软件工程;但是当真正接到一些项目,需要多人协同开发时,没有软件工程将会大大提高项目的风险。

我们在大学里接到的项目,一般不会很庞大,绝大部分是中小规模。即便规模不大,但在开发过程中,没有代码版本控制,没有软件测试(除了手工的模拟测试),应该不能算是规范的软件开发的。很不幸,我们的团队目前就是这种状态。接到项目,分一下模块,大家各自按分的模块进行编码,代码根据时间保存成一个个压缩包,项目需要整合时,就将大家的代码复制到一台电脑上,合成一个项目,然后手工运行一下,作为测试。这就是我们团队目前的“作坊式”开发方法。

知道“作坊式”的开发方法不好,那为什么不早点改变呢?那是因为改变是要有代价的,要摒弃原先的开发模式,学习新的开发方法,更重要的是改变我们平时做事情的思维模式。这些改变的代价不小,但我觉得是值得的。尤其是每当项目出现bug,但原因并不是代码本身,而是由于我们协同开发时的沟通出了问题,每当我们被项目搞得焦头烂额,感觉像是《人月神话》封面那些陷入焦油坑的困兽时,我就愈发迫切想要改变。

不过,一下子就改变我们目前的开发方法也是不实际的,得一步一步来。目前打算让我们教研室的同学每隔1~2周进行一次技术交流,大家交流一下有关软件开发方面的心得。另外,还想弄一台电脑,专门用作我们平时做项目的服务器,让大家可以实践起来。

想法很好,就看我们能不能坚持下去了。

Total Commander实用功能总结

| Comments

用了TC很久了,要不是看了xbeta的【TC学堂】,现在还把TC当作有两个窗口的资源管理器用,粗看了一遍【TC学堂】之后,不禁感慨,TC真的很强大!以下是我觉得一些实用的功能:(一些功能需要插件支持)。当然,再好的工具还要看人怎么去使用,只有熟练掌握TC的操作,才能有效提高我们平时电脑办公的效率。

功能

说明

目录跳转(Ctrl+d)

通过ctrl+d加一个或几个字母的超快捷方式直接跳转到位

访问历史(alt+↓)

按下alt+↓,你会发现一个弹出菜单,列出了访问历史。直接点击其一,即可进入该目录

预览(F3 / Ctrl+q)

F3为弹出窗口显示文件内容,Ctrl+q则是在另一个窗口显示文件内容,再按一次则还原该窗口之前的内容

文件展开(Ctrl+b)

将当前目录下的所有的文件都不分层级的展示了出来

添加文件注释(Ctrl+z)

选中一个文件,按Ctrl+z,就可以输入注释信息

切换磁盘(Alt+F1/F2)

无论当前在何处,要切换到X盘,只要alt+F1 x即可,(F1为左窗口,F2为右窗口)

压缩(Alt+F5)

选中需压缩文件,通过Alt+F5,TC将压缩包生成到对面窗口

复制文件至对面窗口(F5)

移动文件至对面窗口(F6)

文件搜索(Alt+F7)

功能十分强大,这里就不展开了

批量改名(Ctrl+m)

同步文件夹

将两个文件夹(也可以是压缩文件)在两侧窗口分别打开,然后进行比较,并提供后续同步功能

任务管理器/删除程序

Alt+R进入网上邻居后,有任务管理器、删除程序、注册表等文件夹,你就可以查看当前运行的进程、删除已安装程序以及查看修改注册表了!

USACO

| Comments

USACO,是美国计算机奥林匹克的简称,跟ACM/ICPC一样,都是一项让参赛者通过算法和编程解决问题的赛事。其实,关于USACO的比赛我不是很清楚,但觉得它的训练平台USACO TRAINING PROGRAM GATEWAY真的很不错。这个平台跟许多国内外的Online Judge很像,但其优点就是,不但可以做题,还能边做边学,而且题目难度由易到难,使得整个过程循序渐进,使人感觉十分有成就感。每次提交,程序运行的结果显示的十分详细。每道题目做完之后,也会提供官方的思路和样例代码。想提高编程技巧和算法能力的朋友,可以到上面学习一番,应该会收获颇丰。

usaco

决定用Zotero了!

| Comments

用了一段时间Evernote和Zotero,经过使用和对比,还是决定用Zotero来进行资料的管理,原因有以下几点:

跨平台
Evernote在电脑上只有Windows版本,而Zotero作为FireFox的插件,可以说是跨平台的

文献管理
因为经常要看一些论文,Zotero可以自动识别网页中的论文相关信息,这一点我很喜欢

运行速度
Zotero运行起来比较流畅,而Evernote就比较慢了,而且会占用很多内存

分类管理
Zotero可以按文件夹进行树形的管理,Evernote中只有按tag分类的,虽然也可以建立子tag,但用起来还是很别扭

不过,其实Evernote还是挺好的,只要认准用一个就行了。

我经常访问的网站(资讯篇)

| Comments

南方周末
覆盖生活各个方面,比较有深度的文章

爱枣报
每天10条新闻,大多反映社会问题

煎蛋
来自网络的各种有趣新闻

掘图志
有趣的图片和视频

锵锵三人行
凤凰台著名谈话类节目

褪墨
一个有关时间管理的个人博客

飞鱼秀
一档广播节目,比较适合年轻人的口味

Solidot
奇客的资讯,重要的东西

技术管理者大本营
《程序员》杂志官方网站,里面有许多与软件业相关的技术与管理类文章

CNET
科技资讯

我经常访问的网站(学习篇)

| Comments

Google 字典
单词的解释比较权威,如果有Google账户的话还可以标记你认为重要的单词

沪江背单词
有单词本,可以记录下你所学的单词。另外Super背诵也不错,可以进行针对性的背诵,还能记录背诵的进度。

轻松杂志 China Drive
许多英语的新闻以及音频、视频,许多内容都是与国内相关的,不会感觉很陌生,学习起来效率比较高

在线新华字典
是否经常发现某些字不会读了,可以到这个网站上查一下。(如果是纸质书上的字,而你又只会拼音,字都打不出来,那就囧了,到时候还是买本新华字典吧)

Wiki
这个不用讲了吧

cplusplus.com – The C++ Resources Network
学c++的,参考它就行了,介绍的很详细,而且还是例子

Linux 常用C函数(中文版)
Linux下C语言的API,还不错,可以满足基本需要

Windows API Reference (Windows).aspx)
官方Windows API参考

Overview (Java Platform SE 6)
官方Java类库参考

SS64.com Command line reference
许多脚本语言的reference

w3school 在线教程
做一些基于web的开发时,会用到它

Book Go! —– bookgo.org
可以下载到许多计算机方面的经典电子书

Linux压缩命令小结

| Comments

后缀 .tar

解压命令: tar -xvf InFile.tar

压缩命令: tar -cvf OutFile.tar InFile

(x——extract v——verbose c——create f——file)

后缀 .tar.gz

解压命令: tar -zxvf InFile.tar.gz

压缩命令: tar -zcvf OutFile.tar.gz InFile

(z——gzip)

后缀 .tar.bz2

解压命令: tar -jxvf InFile.tar.bz2

压缩命令: tar -jcvf OutFile.tar.bz2 InFile

(j——bzip2)

后缀 .tar.Z

解压命令: tar Zxvf InFile.tar.Z

压缩命令: tar Zcvf OutFile.tar.Z InFile

后缀 .gz

解压命令: gzip -d InFile.gz 或 gunzip InFile.gz

压缩命令: gzip InFile

(d——decompress)

后缀 .zip

解压命令: unzip InFile.zip

压缩命令: zip OutFile.zip InFile

后缀 .bz2

解压命令: bzip2 -d InFile.bz2 或 bunzip2 InFile.bz2

压缩命令: bzip2 -z InFile

后缀 .Z

解压命令: uncompress InFile.Z

压缩命令: compress InFile

后缀 .rar

解压命令: rar x InFile.rar

压缩命令: rar a InFile

Linux各目录含义

| Comments

从网上搜集到的一些资料,自己可以时常翻阅,作为参考。

/bin 基础系统所需要的那些命令位于此目录,也是最小系统所需要的命令,比如 ls、cp、mkdir等命令 /sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地(凡是目录sbin中包含的都是root权限才能执行的) /dev 设备特殊文件 /etc 系统配置文件的所在地,一些服务器的配置文件也在这里;比如用户帐号及密码配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /root 系统管理员的主目录(呵呵,特权阶级) /mnt 系统提供这个目录是让用户临时挂载其他的文件系统 /media 即插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom 的目录。 /lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件就在这里 /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。 /var 某些大文件的溢出区,比方说各种服务的日志文件 /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含: /usr/x11r6 存放x window的目录 /usr/bin 众多的应用程序 /usr/sbin 超级用户的一些管理程序 /usr/doc linux文档 /usr/include linux下开发和编译应用程序所需要的头文件 /usr/lib 常用的动态链接库和软件包的配置文件 /usr/man 帮助文档 /usr/src 源代码,linux内核的源代码就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库 /opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包

感觉整天疲劳而又没效率?

| Comments

最近,自己总是感觉很疲惫,而且回想这一天,又感觉没做什么自己认为有意义、有成就感的事情。我想,应该有相当一部分人跟我有相同的感受。现在,自己不妨来一个自我分析,希望能够找到改善这种状态的办法。

1、把自己的生活安排的很“满”

我有一个安排日程的本子,基本上每天晚上都会计划一下明天或者后面几天的安排。规划好自己的生活,我想这并没有什么错,但是当自己做计划的时候,往往只是把需要做的事情一个一个的排在自己还没有安排事情的时间段上,有时甚至“雄心壮志”,把整个时间都排满,并期望自己像“超人”一样工作。其实,每个安排的事情之间都应该有些“Buffer”,以防事情比自己预期要花费更多时间以及一些突发的事件。

2、没有选择一个好的方式让自己真正放松

我之前总是认为,玩电脑游戏或是看电视剧是没有意义并且很浪费时间的,自己也一度很鄙视那些有这样爱好的人。但现在想想,每天花上30分钟到一个小时玩玩游戏或是看看电视剧又有何妨?只要是在自己感觉疲惫或紧张时,最能让自己放松的方式就可以了。现在我正在学习吉他,觉得这是一个能让自己放松的方式,但之前每天练习的时间都在晚上,感觉效果不是很好,看来自己可以把练琴时间改到中午试试看。

3、没有先做最能让自己有成就感的事情

从自身角度出发,每当我做了一件自己觉得很有意义、很有成就感的事情时,就感觉这一天没有白白浪费,而且做其他事情时心情也很愉快并且效率很高;而当自己终于把一大推琐事做完,正准备做那些你认为最有意义和成就感的事情时,发现时间已经很晚了,并且自己也是疲惫不堪。要么对于那些最重要的事情草草了事,或者是只好拖到明天再去做。这是你会是什么样的心情,那肯定是郁闷到了极点,而且觉得这一天(甚至整个人生!)都是没有意义的。所以说,还是得把那些你认为最值得你去做的事情放在前面,即使它会花费你比较多的时间,因为那些是“重要”但不一定“紧急”的事情。

先写这么多吧,你有什么好方法吗?欢迎一起讨论。

新一年的目标和希望

| Comments

新的一年、新的学期就要开始了,在这新的一年,给自己订一些的目标和希望吧。 新的目标:

  • 在学校办一个关于嵌入式和Linux的社团。

  • 努力学习ARM和Linux,争取能做1~2个相关的项目。

  • 通过英语口译中级和高级。

  • 攒钱买一个数码相机。

  • 坚持锻炼身体,每周1~3次。

希望自己:

  • 更乐观的看每件事情,更专心的做每件事情。

  • 多看书,不仅仅是自己专业的,多记读书笔记。

  • 多关心家人和朋友。