小试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还是挺好用的~ 我说你用那么先进的东西干嘛?……

校内的折价和改名bug

这个bug已经被封了,所以谈谈也没有关系。本来我看见校内上有人的折价结果很诡异,就知道……校内又出bug了。 校内你能不能少点bug!……看了眼代码,引用了…../base.js,打开一看,里面直接有折价、改名的URL…… 拷出来,改个参数,很好用啊~幸好校内有个检查,价格必须是1~maxlongint,否则…… 就可以用来赚钱了。貌似也没有归属检查,随便谁的名字、身价都可以改~ 于是就可以把一个人改成1元,买过来,再改得巨高,别人就买不了了……现在bug是封了,但是价格是老的,这样的话…… 这个应用岂不是废掉了……说起来一个同学把身价改成1元,赎身,然后想改上去…… 结果发现bug被封掉了…… 就此永远1元……

小学期

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

巨麻烦的fonts.conf

从前暑假的时候,为了某些事情去搞fonts.conf,搞了半天才有一点头绪……上次,为了让firefox不对小的宋体进行反锯齿,又捣鼓了好几天。后来发现,firefox匹配的字体名字有时候是simsun,有时候是宋体……今天,为了让粗体的宋体英文字母进行反锯齿,又去改.fonts.conf,结果又是半天……明明在配置文件里面写得好好的,只要weight属性超过普通就反锯齿。但是,就是没有效果。如果提高判断标准,就会全都反锯齿或者全都不反锯齿…… 我知道,宋体在这里原来只有普通字体,粗体是人工生成的。但是,我没有料到那个是在我的配置文件处理之后再被处理的…… 看本地的字体配置,用户的字体配置文件处理编号50,从普通字体生成粗体编号90……最后搞了个不怎么好的解决方法,让用户的字体配置文件变为编号95…… 问题的确是解决了。难道设计人员没有想过有可能需要在所有自动替换处理操作结束之后,允许用户有自由修改的权力?

城市运行志愿者

在我报的所有奥运会志愿者全部被踢下来之后,混了一个奥运会城市运行志愿者。这个志愿者基本上只要服务一两天,所以也不算比较正式的志愿者,待遇就比正式的差,不过也比较省力。之前了解了一下西站那里的情况,看了之前去的同学写的FAQ。 今天轮到我去服务,早上带着两个同学,7:30就坐上了去北京西站的公交……大概8:30到了那边,然后从北广场到南广场花了二十分钟。九点钟开始工作。其实任务主要就是进行公交问询工作,别人会过来问一些像某某车在哪里坐,去某某地方坐什么车之类的问题。 其实我们对北京的地形基本上是一窍不通,所以最多就是依靠那里的材料回答某车在哪里坐这样的问题。幸好那里有一个老大妈,大概五六十岁年纪,应该是老北京了,能够回答出任何问题~ 有她在,我们的任务轻松多了。过了不久,又来了两个志愿者,一个是在企业工作的大姐,二十几岁。一个应该是社区派过来的。他们没有那个大妈强,但是也比我们对这里的了解丰富得多。过了一个小时左右,一开始那位老大妈走了。貌似她是负责人,不需要一直在。我们在那边回答了各种问题,其实问公交车在哪里的问题非常多。原来我们的亭子所在的地方大概有一个公交站点,现在稍微挪了一点地方,然后问那里的车子的人很多,我们都在考虑写块牌子,"927,122,……,请往这边走",挂在亭子上了…… 我们的衣服上、帽子上、亭子上,到处都是中国移动的标志,和奥运的标志一样大…… 衣服上志愿者写的是英文 Volunteer, 中国移动通信倒是中英文都有…… 导致有人以为我们是移动的亭子…… 大概总共有六个人来问过移动相关问题,五个买充值卡,一个找移动营业厅…… 我们基本上都把他们指给了那边一个卖东西的摊点,上面有移动的牌子……另外,不知道为什么,也有不少人以为我们是小卖部。有人跑过来说,"这个水一瓶多少钱?",还有人直接就说,"来一瓶冰的"…… 我们把他们指给了离我们最近的一个卖东西的小亭子,另外,那个亭子上面好像挂着联通的牌子…… 到后来,我们也知道了不少信息,对于一般的某车在某地这种问题都能够不看资料直接回答了。但是,那些复杂一些的问题,还是没有办法解决,还是要靠那个大姐,以及附近的一些聚在这里的城管、交通协管、交警。大热天的,我们这个亭子能够遮阳,还有一些风,比起太阳底下那可是好得多了。到下午,经常能见到我们一群人在亭子里分头看地图、黄页、资料等,为了回答一个问题…… 问的地方很多我都没听说过,而且北京地图找起来不方便,公交车站的命名也乱七八糟,查起来要很多时间…… 不过说周一这里可能有电和电脑…… 下午的时间比上午难熬,精神不好,睡眠不足,有一个志愿者还在后面趴了一会儿。下午的人也比上午的少,天气挺热的。城管等倒是精神很好,在亭子里聊天。 到晚上五点,我们下班,像老大妈等人道别之后,准备回去。老大妈叫住我们,说先锁好亭子。之后,我们乘上返程的公交,吃晚饭大概六点半了……总之比较累,对北京地形更熟悉了,接触了不少人,还挺有意思。