到今天为止,第21届冯如杯对我来说基本上就落下帷幕了。听纪导的意思是“基本上创新奖已经拿下了”,这已经是一个再好不过的结局了。创新奖作为一个一等奖和二等奖之间的奖项,已经远远超出了我当初申报时的期望,作为一个大一学生,能走到今天离不开各位老师同学辅导员的努力。
但是我在这里不想表扬谁谁,我也不想表扬我自己。得到这样的奖项我也没怎么感觉到有多么的荣幸,虽然很多人都替我感到高兴。导说如果不是大一,这个项目甚至可以冲击一等奖。但是我觉得一等奖是根本不可能的。因为它真的没有想象当中的那么难,虽然对我们来说可能很难。另外,一些毫无必要的事情所占用的精力甚至超过了项目本身,这也在不断的消磨着我的激情。
这个项目叫做“云剪贴板”,我想一直看我博客的人都会知道,这个东西我在去年的四月份就已经做好了一个最简单的多bug版。上学期在商讨SRTP项目时我不打算说这个东西,因为这个东西实在太简单以至于可能骗不到钱。当时我说了我的其他几个想法,但几乎都被毙掉了,反而这个小东西得到了大家一致的支持。最终,它和另外一个硬件项目通过了SRTP,而后也报名了冯如杯。
在这个寒假,为了使它能够跨平台,我才开始了重构这个东西。在服务器端仅仅修改了一下缓存机制和增加了几个为其他客户端设计的函数,真正重构的是客户端,使用了队列以防止它崩溃,以及支持了更多的格式。这些都是小改动,但是各种小改动加起来就成了大改动了,然后的debug也很繁琐,很无聊。但是编这个东西是个很惬意的事情,毕竟有想法,有动力。随后开学后,有了服务器,我们开始做Android的客户端。这个才是真正的难点,因为我们对Android都不熟。Java这种连String的==操作符都不重载的东西是相当的蛋疼,以及Android的线程机制也很捉摸不透。在很长的一段时间里Android客户端都处于一开就死的状态。直到半个星期之前它才可以真正的使用,真是很及时。
MacOS和WM方面我没怎么去了解,我也不知道它们做起来是不是也很难。。
总体来讲,至少相对于其他排名前十的项目来讲,这个项目真的没有那么难。它所用到的最NB的技术,也就是二进制序列化与XML序列化混合存储这个了,根本就没有其他项目那些精深的算法那样炫,但是我们依然付出了相当多的努力。它之所以能排名这么靠前,应该是因为它的创新性以及实用性吧,虽然我觉得也没什么。。我离一等奖,还差得远。。
第二个方面是一些琐碎的事情占用的精力甚至超过了项目本身。做项目本是件很惬意的事情,但是做PPT就不是了,改PPT就更不是了,答辩就更更不是了。多次的做PPT改PPT以及回本部答辩是相当蛋疼的,这消磨着我的激情。为了这些事情,我已经旷掉了很多节课,其中以物理居多,以至于我现在就指着看上海交大的课件过日子了。。
而且,这种本身应该靠科研能力,靠学生的平均能力水平来排名的比赛,却和项目的数量挂钩。各种为了刷数量所申请的蛋疼的项目多种多样,我不知道这样用数量换取平均质量,除了那么一个奖杯以外会有什么意义。
我从今儿下午就一直在想大二要不要再做个项目。大二的学业压力很大,如果再像这学期这么折腾,如果没有得到一等奖再挂了科,就得不偿失了。
如果最近有好的想法可以在这个暑假之内做出来,那我就做;如果不能,大二的冯如杯就打酱油吧。。
就这样了,阿森纳平了利物浦,睡觉了。
13leaf
说:
一开始我也挺用不惯Java的,觉得它的语法相对C#来说麻烦得很。
不过抛开语法的弊端不谈,Java后面有一大片的开源社区支持,这让Java变得很有魅力。SourceForge、Apache、Google Code上Java的开源项目数不胜数。另外Eclipse丰富的插件和重构功能也十分不错。
Android我接触一段时间了。关于它的线程你需要知道:
1.一个app对应一个主线程。
2.主线程负责所有view,widget的绘制。因此也叫UI线程。
3.仅主线程才能操作View,widget。工作线程无权访问View,Widget。(但可通过向主线程的Handler发送消息来间接操作)
4.主线程基于消息队列(Looper)。该消息队列与一个Handler绑定。
Anran
说:
Java就靠它的跨平台性了,如果C#与.net framework可以跨平台,在不久的未来一定可以超过Java..当然让.net开源是不可能的..
我一开始在service中直接循环,没想到service和intent好像是用的同一个线程。。于是intent就会死掉。。
然后在service中新建了一个线程就好了。。
13leaf
说:
.Net有跨平台。Linux下有针对.Net的开源项目Mono。
另外.Net并非不开源,是半开源。你用Reflector可以查看源码。
启动Service不会新开线程的。
更加简单的办法的是用IntentService。它会帮你新开线程
Anran
说:
Mono下的.net framework不是很完善,需要调用Windows API的地方几乎都有点问题。。不过这也是C#强大的地方之一,能和Windows紧密联系起来。。而且知道Mono的人显然不如知道C#的人多。。