SRT

学期初,报名参加了一个SRT(学生研究训练),关于智能手机平台上的程序开发。由WuXiaojun和XuMingxing两位老师指导……SRT项目第一次讨论会上,进行了分组。有Nokia手机的一伙人加入了Symbian组,有Windows CE手机的一群人加入了Windows CE组。我和另一个学长,以及某没到场的同学,分到了iPhone/Android组。从这个分组来说,我们基本上是分到了一个没人要的组。毕竟Symbian和Windows CE发布已经很久了,这两个平台上有众多的开发人员,也有许多相关的参考书籍和文献,设计起来比较容易,而iPhone和Android毕竟是新生事物,相关资料还很少。 Android情况还算比较好,毕竟Google当初宣传Android的一大优势就是开放,因此用Android写程序自然会比较容易,也有Google的支持。经过研究,Android的开发,其实主要就是下载安装SDK,然后装个eclipse插件,就可以开发,调试了。SDK里面带有模拟器,用起来挺方便的(虽然启动很慢……)。我下了Linux版SDK,发现模拟器没法用。后来找到了Google公布的源代码,原来是用qemu模拟的,SDL负责显示,不过都是Google修改过的版本……编译出来一个静态的emulator,替换掉SDK里面的,就可以正常工作了。我写了个hello world之后,就去搞iPhone去了。现在,组里那位学长已经成功写出井字棋了。 iPhone就麻烦多了。虽然Apple出了SDK,但是只能在MacOSX上跑,并且要编译出能够在iPhone上跑的程序要99美元……幸好hacker们搞了Jailbreak,破解了iPhone的限制,是个程序经过随便什么代码签名就能跑,但是我没有Mac阿……Hacker们也搞出了第三方的SDK,基于 llvm-gcc 和 Open Darwin CC Tools。Google Code上有个iphone-dev,就是这个东西。照着网上的说明,我先编译出了 iphone-dev 项目的结果。但是,拿这个编译个命令行Hello World还行,编译图形界面程序,就说有东西没定义。折腾了半天,知道这个只能用于1.x版本的iPhone,2.x版本需要新的第三方SDK…… iPhone在1.x到2.x的过程中,改变了Objective C的ABI…… 编译target也从arm-apple-darwin(其实是8)变成了arm-apple-darwin9又折腾了至少十几个小时,终于搞出了新版SDK,编译出了图形化的程序…… Apple在新系统还引入了其他限制,图形界面的程序从命令行启动会被Kill,只有从SpringBoard(iPhone的类似于桌面的系统程序)才能启动…… 仿造了一个应用程序条目之后,终于从SpringBoard启动成功,图形化的Hello World阿~话说Apple公布的SDK还是很有帮助的,让第三方SDK编译过程简化了不少…… 但是感觉第三方程序严重受制于Apple,Apple改变一点东西,第三方程序编写者就有很多东西要改,除非加入Apple的某计划…… 总之,现在在iPhone和Android上面都能写带GUI的程序了~ hacker威武~

小试Gtk/Glade:gtunet

从前看见有的程序用到glade,看了一下,发现是靠xml文件来描述程序界面的方法,当时就觉得不错。这两天看着学校的tunet越来越不爽,linux/BSD下只有命令行版本。虽然有个叫qtunet的,但是貌似从来没人更新,界面巨烂,功能也很有问题。于是想到在tunet的基础上,做个GUI。结果就动手写起gtunet。正好试试gtk编程,和glade这个工具。试下来glade真的非常方便,弄完界面,和函数挂钩,相当于原来的一个一个控件建出来再signal connect,省力许多。所谓"界面和程序逻辑分离",这个是第一步吧。 其实写了一半的时候,觉得用PyGTK或者其他脚本语言来写,或许更方便。毕竟要和一个命令行的程序对话,用C来写并不是很方便。而且,有什么问题,改一下就可以看见结果。但是,我一直对PyGTK之类的东西没有好感,本来Gtk并不大,却要装一大堆的binding。后来写到一半,发现大概还非得用C不可。tunet其实有个地方比较ws,它为了不让密码显示在控制台,是直接打开/dev/tty,然后可能靠ioctl来禁止回显。既然没有用stdin,我本来用popen打开的方法也不能输入密码。然后我也只好打开/dev/tty,然后用TIOCSTI这个ioctl来模拟键盘输入了。如果用脚本的话,这个估计就麻烦了…… 今天添加了一个线程,把获取程序输出并显示的部分扔到了一个线程里。然后麻烦的事情就出现了…… 我还想让记录自动滚动,然后写了一些东西,结果运行的时候,冒出来各种各样的错误…… 简直就是每次的错误都不一样…… 我的线程是用pthread建的,后来觉得问题就出在这个上面,改成了gtk自己的thread库。现在好像稳定了不少,但有时候还是会有问题……tunet很NB,我killall掉tunet的话,连我gtunet这个父进程也会收到一个SIGTERM…… 太NB了…… 现在,大致这个东西勉强能够用了,不过还有很多能够改进的地方~其实,貌似Gtk用类绑定之后,用起来会方便不少。但是,貌似用gtkmm这个库(C++绑定的Gtk)的程序很少,如果用了,还要额外装…… 算了吧。

无聊的C++

今天C++小学期进行了笔试,接下来就是8/1的上机测试,然后就能回来啦~说起这个C++小学期,其实还是很扯的。让一群学了一个学期程序设计基础的人,在8次课中,学会迭代器、模板、继承、操作符重载等等内容,简直就是在速成。许多人根本没时间好好学,经常是直接把讲义上的程序拷过来,连意思都不明白就当作业交上去了。本来就不应该那么急着上C++啊,毕竟像模板这种东西又不是急着要用,非要在暑假里面上完干嘛呢…… 其实讲的也有些问题。WXJ老师每个头文件里面基本上都 using namespace std; ,在印象里我记得这个是不太好的,因为cpp文件并不一定打算using namespace std, 这样污染了cpp的名字空间。但其实,这个也是无所谓的了……还有两个大作业要做,总共三个。第一个要写搜索引擎,其实就是字符串匹配,问题还定义得不清楚,就是瞎搞。然后还提供了gsoap,让我们server/client用gsoap通讯,不过说起来gsoap还是挺好用的~ 我说你用那么先进的东西干嘛?……

小学期

目前处于小学期中…… 就我们系小学期长,竟然有五个礼拜,必修啊…… 姚班还不用现在上,于是我们班留在北京的,大概也就剩我和奥运会志愿者了吧…… 不过好像BB他们电子系也是挺长的。电子工艺实习两周的课程已经结束了,学习了焊接技术。其实从前也学过,这次更加熟练罢了。做了三个产品,FM收音机,充电器,机器猫。FM收音机和充电器都挺实用的,那个收音机的收台能力不比我原来那个数字式收音机差多少,不过只有FM能力…… 充电器最大的好处在于电源输出功能,能够输出3/4.5/6伏电压,给我的数字式收音机正好用~ 以后不用电池了~现在在学C++,挺轻松的,早上就上两个半小时课,下午没事,晚上也没有~ 简直就是无所事事。本学期一失足成千古恨,选了大物A,这下惨了…… 下学期还要好好努力,从现在就应该开始了……

新年快到了,期末考试还会远吗?

    首先,祝大家新年快乐,万事如意,RP升高!    期末考试就要来了,已经考过思修了。考试的时候,仿佛回到了初中时代,我以答政治试卷的字体和速度,从卷子发下来一直写到收卷,总共写了大约整整三面,给书上两章差不多作了个摘要……  基本上就像向你提出关于一本你没有看过的书上的问题一样……    接下来是计算机科学导论,英语读写译,然后是重点:离散数学,几何与代数,一元微积分。我们本学期一微上了两本书:微积分(1)和微积分(2),把级数、广义积分都上了,虽然比较浅。但是我们不像数学分析,基础不扎实,基于一些基本假定等等东西。不过现在学的这些东西已经令人头疼,比如一致收敛,我们其实对于大部分的函数列根本没有办法判别一致收敛或者不收敛,现在能判别的那些,或者说是碰上的,或者说,出题的时候就是按照你的能力出的。我们的教科书上竟然是用一致收敛定义一致收敛的,而我们前面那个一致收敛的定义又没有上过…… 还不如自己好好看书,好好做题…… 普通级数这方面还过得去。线性代数方面,期中之后教的东西或许还没有期中之前的麻烦,所以说线性映射、线性空间这种东西应该晚一点教啊…… 应该先教比较实际的再教抽象的么……  离散不清楚会考什么,期中的题目就很莫名,和课本/上课内容关系并不大,期末又如何呢? 完备性定理??     自学包括看书和做题两方面。我从图书馆搞了《大学数学:概念方法与技巧》,其实这套书,主要就是个题库,遍地都是技巧,概念方法稍微提了一些而已。这套书的微积分部分比较有意思,而线性代数方面就比较容易,能够很快地做掉很多题,也不知道为什么两本书的题目难度差那么多,线性代数那本连线性映射和线性空间都没有…… 行列式和矩阵的题有些意思但不难…… 相比之下,从前淘的旧书,复旦的姚慕生老师编的《高等代数》就要难不少,毕竟这本书说是给数学系学生准备的么。     关于Dell的本的问题,其实Dell每周优惠政策都在变,比如Vostro 1500的优惠,上周有优惠3800元的型号,本周只看见2200元的…… 现在Penryn 45nm CPU 出了,等到明年正式上市,老的T7xxx应该会便宜不少,到时候,Penryn 还是 T7xxx,大概会是个问题……    来这里之后,计算机水平全面下降,除了C++方面大概好了一些。算了,大一还是好好学数学,虽然估计以后有的用处不大,但是学分积还是重要的~ 有了本情况会好起来的,也不用在开放实验室等空位了……     我换手机号了,不知道的可以问我~