16 / 05 / 2013 buling

      最近终于开始迈上了c++的编码历程,之前一直很遗憾不会写c++,刚开始写的很痛苦,无数次想放弃,后来写着写着就顺了,终于算入门了,这段时间也遇到了好多问题,终归解决毕竟刚写c++。
1、前两天遇到个问题cout不出来东西,搞了好久原来被cache了,最后改成 fprintf(stderr, “[msg] sendxxxx length:%d \n”, 123)解决;
2、很多时候前一秒打印一个值还在,后一秒就没了,原来是被释放了,终于学会了new一个内存块出来存值,但稍后一定要delete掉
3、申明两个属性,char xxx[123]; bool ooo; ooo默认为true,后来无缘无故变成了false,莫名其妙,找了半天,发现xxx溢出了
4、今天在做protobuf测试的时候,发现某些时侯只能解出一半的值,原来ParseFromString不能单纯传入 char*,下面给出例子
再做protobuf前需要生成对应的protobuf的h和cc文件,可以使用:protoc EsunMessage.proto –cpp_out=./ 生成到当前目录

void print_ascii(char* data, int len){
    fprintf(stderr, "ascii:");
    for(int i=0; iset_msgid("500000");
    order.SerializeToString(&orderstr);
    //打印一下char*的16进制代码
    print_ascii((char*)orderstr.c_str(), orderstr.length());
    //解析刚序列化后的char* string(orderstr.c_str(), orderstr.length()) //故意的
    Order orderr;
    orderr.ParseFromString(string(orderstr.c_str(), orderstr.length()));
    ACE_DEBUG((LM_DEBUG, ACE_TEXT("test:[%s]\n"),orderr.headinfo(0).msgid().c_str()));
    return 0;
}
无标签信息 0 条
08 / 05 / 2013 buling

不得不说dewen的验证码问题太有水准了,(http://www.dewen.org/account/reg)今天做了几个都错了,先说js这位吧

var tmp = 'a';
if([] == false) tmp += 'b'; //类型不同转字符串比较
if(![]) tmp += 'c'; //这个[]是真
alert(tmp) //返回 ab

接下来看php这位

$a=3; $b=5;
if($a=5 || $b=7){
    $a++;
    $b++;
}
echo $a.'_'.$b; //输出是1_6,因为true++还是true
无标签信息 0 条
07 / 05 / 2013 buling

搭建svn服务器,有如下一些步骤(http://wiki.centos.org/HowTos/Subversion)
1、首先安装svn服务端:mod_dav_svn、svn客户端:subversion
2、修改svn配置文件/etc/httpd/conf.d/subversion.conf
DAV svn
#SVNParentPath /var/www/svn
SVNPath /var/www/svn/repos
# Limit write permission to list of valid users.
# # Require SSL connection for password protection.
# SSLRequireSSL
AuthType Basic
AuthzSVNAccessFile /var/www/svn/repos/conf/authz #用户权限配置
AuthName "Authorization Realm"
AuthUserFile /etc/svn-auth-conf #svn认证用户列表,通过htpasswd添加
Require valid-user
#


3、添加svn用户 htpasswd -cm /etc/svn-auth-conf xxx #-c Create a new file,第一个用户-c,第二个用户就不用了
4、mkdir /var/www/svn; cd svn;创建svn的根> svnadmin create repos #创建svn路径问repos的根
> chown -R apache.apache repos #把repos宿主给apache
> service httpd restart #重启服务

5、更改用户权限/var/www/svn/repos/conf/authz[repos:/]
xxx = rw

问题1、svn mkdir http://192.168.50.81/repos/ace -m ‘ace’
svn: Can’t open file ‘/var/www/svn/repos/db/txn-current-lock’: Permission denied
解决办法:chown apache:apache -R db
问题2、svn mkdir http://192.168.50.81/repos/ace -m ‘ace’
svn: Can’t make directory ‘/var/www/svn/repos/dav/activities.d’: Permission denied
解决办法:mkdir dav; chown apache:apache -R dav/
如果想独立于apache存在可以使用svnserve -d -r /var/www/svn/repos 来开启服务,默认监听3690端口,可以通过–listen-port来指定

01 / 05 / 2013 buling

      在win7下的python中发现是gbk,出现utf8文字时乱码,设置命令提示符为utf8的方法:

1. 命令行里面输入 chcp 65001
2. 然后点击标题栏【属性】->【字体】为 Lucida Console
3. 设置chcp 936 可以转换为中文gbk

      在mysql下重置一个auto_increment字段的方法:

ALTER TABLE tablename AUTO_INCREMENT = 1

       shell下的sed不支持非贪婪模式,而且如果出现中文,不匹配时,可以使用 export LANG=C; 在tail -f和sed一起使用时不处理的问题,重现一下问题( http://stackoverflow.com/questions/8103385/log-parsing-with-sed-or-grep )
tail -f xxx.log|grep server|sed 's/\"//g' #这是执行的,server的log很频繁
tail -f xxx.log|grep mqsend|sed 's/\"//g' #mqsend的日志很少,不执行

       还是没有解决,参考:http://www.perkin.org.uk/posts/how-to-fix-stdio-buffering.html
       mysql中datetime精确到毫秒,用了varchar来存储,例如 2013-05-02 14:52:38,412,可以用下面的语句计算两个时间差
select f_sendtime, f_endtime, (UNIX_TIMESTAMP(STR_TO_DATE(left(f_endtime,19),'%Y-%m-%d %H:%i:%s'))+cast(right(f_endtime, 3)*0.001 as decimal(18,2)))-(UNIX_TIMESTAMP(STR_TO_DATE(left(f_sendtime,19),'%Y-%m-%d %H:%i:%s'))+cast(right(f_sendtime, 3)*0.001 as decimal(18,2))) f_totaltime from xxx;

无标签信息 0 条