摘要: 昨天编译去年写的FloorServer,居然一堆错误:chu@chu-laptop:/media/E/work/github/FloorServer/FloorServer$ makeg++ -g -lboost_thread -lboost_date_time main.cpp -o FloorServerIn file included from WorkThread.h:14:0, from Server.h:15, from main.cpp:2:Message.h:18:8: 警告: #endif 指示的末尾有多余的标识... 阅读全文
posted @ 2014-03-15 20:31 楚 阅读(7049) 评论(0) 推荐(0) 编辑
摘要: Yahoo提供日线级别的历史数据,包括国内外各交易所的数据,可以写爬虫抓取数据做简单的分析。api基本格式如下:http://ichart.yahoo.com/table.csv?s=&a=&b=&c=&d=&e=&f=&g=d&ignore=.csv参数s — 股票名称 a — 起始时间,月 b — 起始时间,日 c — 起始时间,年 d — 结束时间,月 e — 结束时间,日 f — 结束时间,年 g — 时间周期。Example: g=w, 表示周期是‘周’。d->‘日’(day), w->‘周’(week),m 阅读全文
posted @ 2014-03-01 11:45 楚 阅读(1384) 评论(0) 推荐(0) 编辑
摘要: AllJoyn中有个问题:Server切换到Client后,重新加入其他Server时join session会失败,原因是timeout(join session是异步的,在指定时间内没有收到回应)。之前TV和手机连接时也有这种问题,后来发现是LinkTimeout被设置为0了,将其改为40就ok... 阅读全文
posted @ 2013-09-06 14:45 楚 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 上一篇随笔中提到了,rapidxml在每个xml对象中维护了一个内存池,自己管理变量的生存周期。看起来很好,但我们在实际使用中还是出现了问题。项目中我们的模块很快写好了,在windows和linux上测试都工作的很好,但在Android上有时候却会崩溃。背景:我们的模块是c++写的,编译成so动态库... 阅读全文
posted @ 2013-08-09 15:40 楚 阅读(980) 评论(0) 推荐(0) 编辑
摘要: 项目中要使用xml打包、解析协议,HQ指定了使用rapidxml--号称是最快的xml解析器。功能很快完成了,但发现rapidxml为了追求性能,做了一些对用户来说并不友好的设计。下面来说一说:给xml对象在添加节点时,不可添加临时变量按照一般用法,使用如下方式添加节点:rapidxml::xml_... 阅读全文
posted @ 2013-08-09 14:21 楚 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 最近在做项目的CTA测试,快被折腾死了。。。。。 ~_~项目中用到的开源库AllJoyn在编译时报错:In file included from ./Target/base/AllJoyn/Inc/alljoyn/Message.h:36:0, from ./Targ... 阅读全文
posted @ 2013-07-31 14:59 楚 阅读(2147) 评论(0) 推荐(0) 编辑
摘要: 1. 交叉编译AllJoyn库。编译成功后的文件位于:alljoyn-3.3.0-src\build\linux\arm\debug\dist\目录下;2. 程序要使用AllJoyn,必须要启动alljoyn-daemon程序,位于:alljoyn-3.3.0-src\build\linux\arm... 阅读全文
posted @ 2013-07-20 15:15 楚 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 以AllJoyn自带的chat示例在pc上测试结果如下:libAllJoyn.a编译选项Chat编译选项测试结果-Wall -Werror=non-virtual-dtor-pipe -std=c++0x -fno-rtti-fno-exceptions -fno-strict-aliasing -... 阅读全文
posted @ 2013-07-20 15:13 楚 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 关于AllJoyn不多做介绍,请看官网:www.alljoyn.org/0. 问题来源:应用程序要使用AllJoyn库,就必须启动deamon。目前有两种方式:使用standalone形式,单独启动alljoyn-daemon进程。使用bundled daemon形式,应用程序在连接AllJoyn时... 阅读全文
posted @ 2013-07-20 15:09 楚 阅读(417) 评论(0) 推荐(0) 编辑
摘要: 在项目中发现,使用 -l连接某个库时,如果存在同名的静态库(.a)和动态库(.so),默认会连接.so那么如何指定连接静态库呢?如果有多个库,有些要连接静态库、有些要连接动态库,连接选项该如何指定呢?下面这边文章讲的挺清楚:在应用程序需要连接外部库的情况下,linux默认对库的连接是使用动态库,在找... 阅读全文
posted @ 2013-07-20 14:35 楚 阅读(1185) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2013-06-29 19:14 楚 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 开通测试机的wifi权限时需要知道mac地址。通常可以用如下方式:"在设置--无线和网络--wlan设置 ,然后点菜单键--高级,就可以看到MAC地址了".但是不巧,我拿到的这台测试机UI有问题,点击触屏坐标有很大的偏差,无法完成上述操作。还好可以在pc上通过adb工具完成:1. 手机启用usb调试... 阅读全文
posted @ 2013-05-27 14:50 楚 阅读(359) 评论(0) 推荐(0) 编辑
摘要: Antrl 官方没有提供预编译的3.5版本的c runtime,我下载源码编译了一下。源码里没有现成的Makefile,需要使用configure工具生成。编译步骤大致如下:1.执行命令aclocal生成aclocal.m42.文件aclocal.m4有点小问题,需要将: LIBTOOL='$(SH... 阅读全文
posted @ 2013-05-20 18:04 楚 阅读(433) 评论(0) 推荐(0) 编辑
摘要: cout默认是与监视器(屏幕)相连,cout出来的内容会输出到屏幕上,通常是会在命令行窗口之中。但有时,我们希望将cout出来的具体日志、错误信息写到某个文件之中,而屏幕上仅仅显示出当前进行的任务,以及程序运行状态等信息。我们可以使用下面重定向的方式来实现: 1 #include "stdafx.h... 阅读全文
posted @ 2013-04-01 22:15 楚 阅读(500) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/hhq163/article/details/73202411、MX打开usb调试,连接ubuntu。2、在Terminal输入lsusb,获得: Bus 002 Device 005: ID 18d1:0005 Google Inc.3、运行命令sudo vim /etc/udev/rules.d/51-android.rules,输入内容 SUBSYSTEM=="usb", SYSFS{"Meizu Corp."}=="18d1", MODE="0666"4、运行命令s 阅读全文
posted @ 2013-04-01 22:13 楚 阅读(791) 评论(0) 推荐(0) 编辑
摘要: 利用boost来获取当前时间又方便快捷,还不用考虑跨平台的问题。1. 输出YYYYMMDD#include #define BOOST_DATE_TIME_SOURCEstd::string strTime = boost::gregorian::to_iso_string(\boost::greg... 阅读全文
posted @ 2013-03-14 18:51 楚 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 今天实现一个单例的时候,想到多线程getInstance()时可能会有问题,就查了一下单例的几种实现方式。有一种被称为“饿汉式”的实现: 1 class manager 2 { 3 private: 4 manager(){printf("called.");} 5 static manager* m_pInstance; 6 7 public: 8 manager* GetInstance() 9 {10 return m_pInstance;11 }12 }13 14 ... 阅读全文
posted @ 2013-03-13 17:52 楚 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 在sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作如果需要频繁的执行sql语句,可以显式的开启事务,提高效率。dataBase.beginTransaction(); //手动设置开始事务//数据插入操作循环dataBase.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交dataBase.endTransaction(); //处理完成这篇文章分析的很透彻,推荐一下:android中SQLite数据库中用insert同时插入多条记录的方法和效率比较在Android开发中我们常会遇到这样一种情况:在建立一个S 阅读全文
posted @ 2013-02-22 18:00 楚 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 写了个小app,需要将数据存入sqlite中,按照文档说明,如下方式创建数据库文件: db_aimu = SQLiteDatabase.openOrCreateDatabase("test.db", null);运行时logcat报错:02-22 09:16:28.214: E/SQLiteLog(26781): (14) cannot open file at line 30176 of [00bb9c9ce4]02-22 09:16:28.222: E/SQLiteLog(26781): (14) os_unix.c:30176: (2) open(//test.db. 阅读全文
posted @ 2013-02-22 17:24 楚 阅读(15972) 评论(2) 推荐(0) 编辑
摘要: android上画图可以使用Opengl es,分两个不兼容的版本:opengl es1.x, opengl es 2.0,使用时它们之间的一个重要区别就是:opengl es 1.x的图片大小必须是2的整数次幂,而opengl es 2.0则无此要求。看有些文档里说:libgdx只支持2的整数次幂的图像,那应该是opengl es1.x的版本。在编译一个开源游戏freegemas时,代码在Lwjgl的pc上运行正常,而编译成apk在android真机或模拟器上运行时就崩溃,报错:“图像大小必须是2的整数次幂”。但是:“libgdx's wiki said: we explicitel 阅读全文
posted @ 2012-12-31 21:14 楚 阅读(808) 评论(0) 推荐(0) 编辑
摘要: 我们项目中有一个协议打包模块,c++写的。需要移植到java和python上,不想重写,就使用了一个叫swig(http://swig.org/)的工具,从c++代码直接生成了java/python代码。推荐一下。 几点感受: (1)swig支持的语言还是很多的,可以从c/c++生成java/pyt... 阅读全文
posted @ 2012-12-31 19:04 楚 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 周末加班,ssh登录服务器超慢,top查看系统负载,达到12以上。跟踪发现,是其他同事利用周末,跑了一堆程序。系统反应慢,怎么办?两种办法:(一)降低其他用户程序的优先级。执行top命令:1 PID USER PR NI VIRT RES SHR S %CPU %MEM ... 阅读全文
posted @ 2012-12-29 14:41 楚 阅读(1919) 评论(0) 推荐(0) 编辑
摘要: 今天测试程序时,有一个场景需要做到:启动exe程序,等待一段时间(10s)后停止该程序;再重新启动、停止,一直循环。最后用批处理实现了,代码如下:1 :a2 start /B BlogCrawlerForIntegration.exe tvprogram_EN3 ping 123.45.67.89 ... 阅读全文
posted @ 2012-12-25 18:04 楚 阅读(5697) 评论(0) 推荐(1) 编辑
摘要: 下载地址:http://code.google.com/p/googletest/downloads/list现在的最新版本是1.6.文档:http://code.google.com/p/googletest/w/list下载,解压,过程略。(1)编译gtest:先看 README文件,基本上就知... 阅读全文
posted @ 2012-12-01 15:22 楚 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 项目要结束了,按流程需要做单元测试并提交测试报告。本来公司内部有测试工具,拿过来直接用就是。但实际上一堆问题,在这里不吐不快。(1)首先尝试的是测试工具XXTest,但竟然编译不通过。打开代码一看,顿时跪倒:1 MTString log = "";2 log += "... 阅读全文
posted @ 2012-12-01 15:01 楚 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 下午调试crawlermanager时,成同学反映:client发送的command包,有些没有收到响应。但是查我这边的日志显示是已经发送响应包了的。不放心,就使用tcpdump抓了一下包,然后使用wireshark进行分析,成功定位了问题。(1)运行tcpdump:tcpdump -s 0 -c ... 阅读全文
posted @ 2012-11-15 17:50 楚 阅读(1507) 评论(0) 推荐(0) 编辑
摘要: 截取文件头几行,输出到另一个文件中:head -i 1000 a.txt|tee b.txt压缩/解压 gz文件:gunzip a.gzgzip a #将文件a 压缩为a.gz 阅读全文
posted @ 2012-11-15 17:20 楚 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 最近研究uuid,收集的一些资料:http://www.mysqlops.com/2011/09/10/innodb-primary.html(针对InnoDB引擎)我们实际生产环境可能会使用四类属性作为主键:(1). 自增序列;(2). UUID()函数生成的随机值;(3). 用户注册的唯一性帐号名称,字符串类型,一般长度为:40个字符;(4). 基于一套机制生成类似自增的值,比如序列生成器;那么我们接下来,再分析下这四类属性各自作为表主键的优缺点:(1). 自增序列:从小到大 或从大到小的顺序模式增加新值;数据类型也利于进行主键值比较;存储空间占用也... 阅读全文
posted @ 2012-11-04 17:36 楚 阅读(7701) 评论(1) 推荐(0) 编辑
摘要: 基本思路是:修改Mysql配置文件,设置为mysql不需要密码登录,重启mysql;然后重新设置root密码;最后恢复原配置,重启Mysql.http://blog.chinaunix.net/uid-26569333-id-3067038.html1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库。因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录和修改MySQL的信息。可以采用将MySQL对 外的端口封闭,并且停止Apache以及所有的用户进程的方法实现服务器的准安全 状态。最安全的状态是到服务 阅读全文
posted @ 2012-11-04 15:43 楚 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 背景:(1)工作时的代码都在放在服务器上(2)服务器不稳定,随时可能当机所以决定写个shell脚本,自动(每天凌晨)将client服务器上指定的文件夹打包,然后复制到另外一台服务器server上的指定目录下。话不多说,上代码: 1 #/bin/sh 2 3 #usage 4 #(1)modify ... 阅读全文
posted @ 2012-11-01 17:51 楚 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 有如下结构体: 1 typedef struct _client_msg 2 { 3 _client_msg(int clientID, int msgValue) 4 { 5 this->clientID = clientID; 6 this->ms... 阅读全文
posted @ 2012-10-30 16:39 楚 阅读(1771) 评论(0) 推荐(0) 编辑
摘要: 在服务器的/etc/inclue目录下发现一个头文件:mqueue.h,不知道干嘛的就查了一下。得到如下信息:(1) 是实现linux下posix消息队列的;具体使用可以man mq_open系列函数;(2) 2.4的内核对POSIX支持得很不好所以特意升级到2.6链接时不是加-lposix4,而是-lrthttp://bbs.chinaunix.net/thread-2191087-1-1.html(3)有人提到:“linux的mq_open系列实现真烂”http://www.newsmth.net/nForum/article/LinuxDev/33733具体情况需要具体分析,这里不做讨论 阅读全文
posted @ 2012-10-08 17:18 楚 阅读(5614) 评论(0) 推荐(0) 编辑
摘要: 下午跑程序,在插入mysql时突然报错:”The table‘xxxx’is full“而之前一直没问题的。上网查了一下,都说临时表的问题,需要设置”tmp_table_size“:tmp_table_size 如果内存内的临时表超过该值,MySQL自动将它转换为硬盘上的MyISAM表。如果你执行许多高级GROUP BY查询并且有大量内存,则可以增加tmp_table_size的值。http://www.2cto.com/database/201106/92968.html感觉与我们服务器情况不太相符:我们没用到临时表,而且tmp_table_size已经非常大了。再查到:mysql出现&qu 阅读全文
posted @ 2012-09-28 17:16 楚 阅读(1253) 评论(0) 推荐(0) 编辑
摘要: mysql在更新记录时,需要在原来的值上在累加新的值。例如原来有条记录:idcountrya784829a-c0dc-4cb6-88a9-8c376fab83a6USA现在更新更新country字段:在原值的基础上添加“$+$UK”,使其变为如下值:idcountrya784829a-c0dc-4cb6-88a9-8c376fab83a6USA$+$UK但是,在更新时,并不知道该记录的原值,也不希望通过mysql查询来获取原值(实际上,并不关心原值是多少,只需要在原值基础上添加新值即可)。最后,通过如下sql来实现:insert into video(id, country) values(& 阅读全文
posted @ 2012-09-27 17:00 楚 阅读(8554) 评论(1) 推荐(0) 编辑
摘要: #include "common.h"#include "CIniFile.h"#include "CRecordCfg.h"#include "CFileFactory.h"#include "CCtrlThread.h"#include "CThread.h"#include "CDeleteThread.h"#include "CSendFileinfoThread.h"#include "CConfigExt.h&qu 阅读全文
posted @ 2012-09-09 21:47 楚 阅读(793) 评论(0) 推荐(0) 编辑
摘要: 在项目中需要实现pause/resume功能,用boost::condition实现大致如下:1 class Geo2 {3 ...4 bool m_bPauseFlag;5 boost::condition m_pause_cond;6 boost::mutex m... 阅读全文
posted @ 2012-09-04 14:50 楚 阅读(1047) 评论(0) 推荐(0) 编辑
摘要: 测试程序时,想要查看程序真正占用了多少内存,top命令只能看个大概,于是就找到了pmap命令。使用很简单: 1 SYNOPSIS 2 pmap [options] pid [...] 3 4 DESCRIPTION 5 The pmap command reports the memory map of a process or processes. 6 7 OPTIONS 8 -x, --extended 9 Show the extended format.10 11 -d, --device12 ... 阅读全文
posted @ 2012-08-30 11:12 楚 阅读(3739) 评论(0) 推荐(0) 编辑
摘要: 项目中需要将原有的id统一改为uuid,于是直接用boost中的uuid库来生成uuid。但在测试中发现程序性能严重下降,原来每分钟能处理60万条数据,使用uuid后只能处理2万条左右。于是跟踪之,先看我们的实现方式:1 static std::string uuid()2 {3 boost... 阅读全文
posted @ 2012-08-15 17:20 楚 阅读(3587) 评论(0) 推荐(0) 编辑
摘要: 项目中用到了vector,list,set等容器,运行完毕后需要清理,以释放内存以降低内存开销。一开始我直接使用clear()函数来释放,实际观察下来,内存并没有被释放。经同事提醒,clear()并不能释放内存,需要使用swap来释放。于是查了一下,找到以下资料:vector与deque不同,其内存占用空间只会增长,不会减小。比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个。所有空间在vector析构时回收。 empty()是用来检测容器是否为空的,clear()可以清空所有元素。但是即使clear(),所占用的... 阅读全文
posted @ 2012-08-03 14:16 楚 阅读(1345) 评论(0) 推荐(0) 编辑
摘要: 项目中实现了checksum服务,看了下实现,用的是openssl库中的hash算法。很简单的一个实现如下: 1 std::string ChecksumImplement::SHA1(const std::string & str) 2 { 3 unsigned char sha1_digest[SHA1_DIGEST_LENGTH] = {0}; 4 ::SHA1(reinterpret_cast<const unsigned char *> (str.c_str()), str.length(), sha1_... 阅读全文
posted @ 2012-08-02 18:25 楚 阅读(3971) 评论(0) 推荐(0) 编辑