Category Archives: Program

遍历TreeStore

如何遍历TreeStore? gtkmm的邮件列表上有一个简单的例子,但是经过测试,发现只能遍历到第二层枝。 Gtk::TreeModel::Children child=refTreeModel->children();//只能获取到第一级分类 Gtk::TreeModel::Children::iterator iter ; for( iter = child.begin() ; iter != child.end() ; iter++ ) { if ((*iter)[columns.id]==t[i].parent_id) { row=*(refTreeModel->append(iter->children())); break; } } 最终通过递归实现全部遍历,代码如下。 void CategoryView::getrow(Gtk::TreeModel::Children child,unsigned int pid, Gtk::TreeModel::Row& row) { Gtk::TreeModel::Children::iterator iter; for( iter = … Continue reading

Posted in Linux, Program | Tagged , , | Leave a comment

c++中的string转换

如何转换string到其他类型?如何从其他类型转换到string? 代码1:toString template <class T> std::string toString(const T& a) { std::ostringstream ost; ost << a; return ost.str(); } 代码2:fromString template<typename T>T fromString( const std::string& s) { std::istringstream is(s); T t; is >> t; return t; } 使用方法: int d = … Continue reading

Posted in Program | Tagged , , | Leave a comment

使用FileChooserDialog打开多文件

单文件比较简单, 看到这个函数的原型是这样的: Glib::SListHandle<Glib::ustring> Gtk::FileChooser::get_filenames ( ) const 因此,就以为要使用这样的变量来进行声明: Glib::SListHandle<Glib::ustring> filenames =dialog.get_filenames(); for(int i=0;i<filenames.size();i++) { //Notice that this is a std::string, not a Glib::ustring. //std::string filename = dialog.get_filename(); std::cout << “File selected: ” << filenames[i] << std::endl; } 结果发现编译不通过,再仔细看看,Glib::SListHandle并没有重载[]操作符。 再网络上搜索后发现有人和我的问题相同: That … Continue reading

Posted in Program | Tagged , , | 2 Comments

在ubuntu gutsy下编译codeblocks svn版本

本来一直用的是feisty下的一个源: deb http://lgp203.free.fr/ubuntu/ feisty main 但是自从svn4413版本后就出现问题了,执行codeblocks提示错误: codeblocks: /usr/lib/libwx_gtk2u_aui-2.8.so.0: version `WXU_2.8.5′ not found (required by codeblocks) 因此,决定自己编译SVN版本,首先下载: svn co svn://svn.berlios.de/codeblocks/trunk codeblocks 编译前首先要作一些准备工作: sudo aptitude install debhelper fakeroot wx-common 然后修改codeblocks/debian/control文件,使其中的一些依赖替换为当前gutsy里的版本: Build-Depends: debhelper, autotools-dev, libc6-dev, libstdc++6-4.1-dev, libwxgtk2.8-dev, wx-common, zip 然后就可以编译了: cd codeblocks ./bootstrap … Continue reading

Posted in Linux, Program | Tagged , , , | Leave a comment

转换vbb 3.0.3到phpbb3

集思学院已经用了很长时间的vbb3.0.3,现在有些功能在我们的服务器已经出问题了,而且不想再跟vbb了,因为数字流域论坛已经转换到phpbb了,为了以后维护方便,决定从vbb3.0.3转换到phpbb 3 rc1。(估计RC2版本就要出来了,BUG已经很少了) 因为之前已经写了一个webwiz到phpbb的转换程序,所以再写vbb3到phpbb3的转换程序,比上次要轻松不少,但webwiz的设计思想就是来源于phpbb,所以很多库结构都非常像,而vbb的结构和phpbb有较大差异,在调试过程中还是耗费了大量的时间,回头来看,大约耗费了有一个礼拜的时间。感觉我都能提供有偿论坛转换服务了,哈哈。 转换过程: 首先要进行数据库的UTF8转换。之前论坛采用的是gb2312编码,但论坛上有台湾的注册用户,原来也能显示繁体中文,所以应该采用的是gbk或gb18030的编码。 在进行数据库的备份之前,要在原来的vb论坛后台把附件的存贮方式修改为文件方式,上传头像的存贮方式也修改为文件方式,而customprofilepic我没有找到对应的phpbb设置,所以这一块就直接丢弃了。 然后导出数据库: mysql -uroot –add-drop-table –default-character-set=latin1 cngis > cngis.sql 进行编码的转换: iconv -c -f gb18030 -t utf8 cngis.sql > cngisutf8.sql 然后修改此sql文件,替换所有的latin1为utf8,并在文件的开始处添加: SET NAMES utf8; SET CHARACTER_SET_CLIENT=utf8; SET CHARACTER_SET_RESULTS=utf8; 然后新建一个数据库cngisutf8,作为我们的测试数据库并尝试导入此sql文件。 mysql -uroot cngisutf8 < cngisutf8.sql 若在导入过程中没有错误,那么恭喜你,你太幸运了。 … Continue reading

Posted in Linux, Program | Tagged , , | 18 Comments

gfortran中缺失的函数:tand, dtand

在gfortran中,包括g77到现在的gfortran 4.1都缺失了一些函数实现,包括以角度为参数的三角函数等。 那我们在编译这些函数时要如何处理呢? gcc的邮件列表里有一个解决方案。 我本来想用这个方案的,结果fortran语法全部忘光,这个方案里面居然没有看懂。没办法,就自己实现了一个简单的方案,不过还没有进行测试。 tand(x) 变为: tan(x*atan(1.0)/45.0) 而 dtand(x) 则变为: tan(x*atan(1.0d0)/45.0d0) 若有错误,还请帮忙指出。

Posted in Program | Tagged , , , | Leave a comment

c++ compile error: discards qualifier

在调试matrix类的时候,遇到了这个错误。 参考这儿知道这个错误的原因了: discards qualifier 1. Example myfile.cpp: In function `int main()’: myfile.cpp:20: passing `const DayOfYear’ as `this’ argument of `void DayOfYear::Set(int, int)’ discards qualifiers 2. Meaning You have an inconsistency with the use of “const” 3. Usual Causes 1. A … Continue reading

Posted in Program | Tagged , , , , | Leave a comment

PHP的Framework

很长时间没有关注PHP,今天无意中点到javaeye.com,发现其已经改版,使用了ruby on rails框架技术,做得很好,然后又看到了还有php相关的框架,最近最近一段时间在PHP的世界里也出现了很多框架。作为php的发行公司,Zend自己也推出了一个框架,简称为ZF,目前最新的稳定版本还是0.2。觉得php的动作有点慢了,应该在php5推出后,要是能紧跟就推出几个框架系统,那对于php世界应该有非常大的推动!不过,虽然动作慢了一些,但是已经有了很多的php框架发展起来了。粗粗阅读了zf的文档后,发现框架的功能还是蛮丰富的,但是ZF目前还是有相当多的进步空间的,就是说,目前还是有一些缺点的。 一些framework的比较: http://www.mustap.com/phpzone_post_73_top-10-php-mvc-frameworks http://www.phpit.net/article/ten-different-php-frameworks/ http://www.5itag.com/viewtopic.php/177 seagull感觉像是一个大的CMS系统 ZF感觉像是一个库,或者就是pear 最后看了symfony的manual,感觉symfony相当好,不过也有缺陷,就是配置太麻烦了。 在symfony中,用Propel实现了OR映射,支持多种数据库,包括mysql,sqlserver,pgsql,sqlite,oracle。 感觉这套框架和zend framework有很大不同,对我来说,symfony要好于zf。 还支持schema, or map, paging, multitype databases, … Conclusion: 首选symfony,其次cakephp,最后再考虑zf。当然还可以考虑seagull。

Posted in Program | Tagged , , , , , | Leave a comment

共享网登陆错误的解决

我们这边一直存在登陆问题,非常奇怪。 但是在后台可以登陆,在前台汇交元数据时也可以登陆。 但是别的中心都没有问题,问题可能是出在我们这边的结构上。 我们的网站是由2部分组成的: DEBIAN负责oracle数据库和web proxy,WIN 2K3负责tomcat解析。 为什么采用这样奇怪的结构? 共享网的代码在WINDOWS上的TOMCAT解析没有任何问题,但是在DEBIAN上总是有问题。但是他们总中心也是在LINUX上布置的,真是奇怪。我估计是tomcat的policy导致的问题。 仔细浏览了代码,发现能登陆和不能登陆时的区别在于转向地址不同,估计是在servelet中进行了验证? 因此就直接对这部分代码进行了修改,修改后的代码: String _pageURL=null; //当前访问页面的真实的UrL String _replaceURL=_requestURL.replaceAll(“xxxx:8080″,”westdc.geodata.cn”); if (_strQuery!=null){ _strQuery=URLEncoder.encode(_strQuery,”gb2312″); //这个必须编码呀,否则死的很惨 _pageURL=_replaceURL+”?”+_strQuery; }else _pageURL=_replaceURL; 就是做了一个字符串替换的工作。 另外一个问题就是无法汇交元数据,这个问题最后是糊涂的解决了(就是不知道怎么就好了)。

Posted in Program | Tagged , , | Leave a comment

code::blocks可以在ubuntu下直接安装

原来在测试各个linux下的IDE时,一直没有安装上code::blocks,当时还郁闷了一段时间。 今天无意中发现,code::blocks现在有专门for ubuntu的DEB包了: http://forums.codeblocks.org/index.php?board=20.0

Posted in Linux, Program | Tagged , , | Leave a comment