• Lerosua on Twitter

    t
  • 订阅

    抓虾
    google reader
    bloglines
    鲜果
  • 分类目录

  • 功能

  • Archive for 八月, 2007

    « Previous Entries

    for循环中iterator不可乱删除

    星期日, 八月 19th, 2007

    今天写iTalk,想要把空组删除掉。 //tree_store就是列表中的数据(TreeStore) //下面代码作用是扫描列表中的组,发现空组则删除。 Gtk::TreeModel::Children children = tree_store->children(); Gtk::TreeModel::iterator it_g; it_g = children.begin(); for (; it_g != children.end(); ++it_g) { Gtk::TreeModel::Children grandson = it_g->children(); if(grandson.begin()==grandson.end()) { const Glib::ustring& tmp= (*it_g)[buddyColumns.id]; std::cout<<tmp<<”为空组=======================”<<std::endl; tree_store->erase(it_g); } } 不过遇到了段错误。思前想后发现段错误的原因是因为那个删除 tree_store->erase(it_g); 执行了这句后,it_g所指向的数据已经失效,所以it_g++的话就会溢出。 把for 循环改成do while循环,用一个中间变量来得到it_g的值,并用它来删除。 do{ Gtk::TreeModel::Children grandson = it_g->children(); Gtk::TreeModel::iterator point = it_g; it_g++; if(grandson.begin()==grandson.end()) { //const Glib::ustring& tmp= (*point)[buddyColumns.id]; [...]

    星期天闲聊

    星期日, 八月 19th, 2007

    令人想不到的事。Blogspotc又解封了。这倒没有令人兴喜的。因为偶对于这件事已经习以为常了。起码不以此为喜,不以此为悲。谁知道它明天是不是又会被封呢。总不能因此被GFW调着偶的心情吧。 专心于开发 iTalk后就比较少写博了。大概是找到了一个比较固定的玩具吧。有事做了,就没有那么多唠叨与胡思乱想了。关于这个 iTalk,我是想把它视频,音频,传文件功能啊,什么的都加进去的。因为在Linux,这样丰富的聊天程序不多。而一些又不让我满意。于是就有了自己做一个的念头。第一次做开源项目。的确学习到很多东西。看着iTalk从一个小小的测试程序,只能登录,到能收发信息,到列表的丰富化。就好像看着自己的宠物成长一样。每实现一个小功能都兴喜不已。每遇到 一个BUG就忧愁半天。呵呵。倒是学会子一招。在遇到BUG时,最好放一放,通常我都是轻松一下,过一会再看,才猛然地发现问题的所在。如果一味地研究,反而跳不出圈圈子。这也算是一种思维方式吧。虽然以前有人对我说过。不过,还是要自己体会才会深刻。在此之前,总以为自己做不子项目 。 而且有种程序员洁癖。所谓程序员洁癖,就是指实现一个功能时,总想着要用最好的代码,最巧妙的方法。不然,就会觉得办法很粗陋,代码很脏。在写任何代码前,总不自觉会有这种想法。因而总为想一个好的结构,算法烦恼半天。现在来说,不应该害怕写这种代码。写代码第一要素就是先实现功能。优化的事留在以后考虑。当然这是对于新手来说的。因为新手不可能一开始就计划好大的结构。要做开源的程序,就得先把功能搞上去。然后才后考虑优化。当然不是说不要考虑优化,但那是在力所能及的方面了。

    如何编译iTalk

    星期五, 八月 10th, 2007

    前面我已经发过iTalk的截图了。为了让大家有更多的了解,现在发布编译的方法。声明:由于这是一个开发中的版本,会遇到很多问题,强烈建议您有强壮的心脏和心理准备来体验您将要做的事。 重要:由于测试的方便,代码里会有一个叫cyclonb…@gmail.com的帐号和密码。我们希望您不要用这个帐号登录和对这个帐号做密码更改之类的事情,这是我们用于测试用的。谢谢合作。非常感谢。 iTalk是以gloox为协议基础。所以你必须编译安装好gloox库才能正常编译iTalk,一般的系统可能已经提供了gloox库。但我强烈建议您卸载它。因为系统所提供的gloox是一般比较过时。而iTalk所使用的gloox会比较新。因为是处于开发状态,iTalk和gloox的svn版本变化会比较多。容易出现版本不兼容导致不能编译的结果,这也是我之前建议您等待我们发布整合版本而不是自己编译的原因。 1.首先从源里取出gloox库的2420版本。(这是iTalk现在使用的版本) svn co svn://svn.camaya.net/gloox/trunk gloox -r2420 然后是编译安装cd gloox./autogen.sh./configuremakesudo make install(如果还有不明白的,请参考http://camaya.net/glooxdownload) 2.然后取出iTalk的源代码。(实际上,iTalk在申请项目名的时候叫geekr,当然关于名字的问题我们以后再讨论) svn checkout *http*://geekr.googlecode.com/svn/trunk/ iTalk进入目录编译:cd iTalk./configuremakesudo make install 现在您可以通过命令行italk来启动程序了。 如果您有好的建议请发到Cyclone_QQ@googlegroups.com邮件列表来。谢谢讨论。

    « Previous Entries