当执行一趟文件读取循环,文件读取到末尾的时候,例如 while(getline(ifstream &, string &  )  ! = NULL)以后,由于ifstream已经到达流尾端,会将ifstream&置 fail bit,因此执行seekg()将无效。

因此应在seekg之前执行以下 istream::clear()清除标志位,再执行seekg(), ok!

when create a new page at mediawiki, the following sql-statements will be created.

(从MySQL的log分析得出,不保证Mediawiki本身就一定按照此顺序执行,

其中也省略了一些临时的步骤,红色表示关键步骤,可以保证mediawiki的该page的正常查看以及查找)

1. insert into page。(page_latest = 0,len = 0 at this insert)

2.insert into text。

3.insert into revision。

(以上三个表有外键关联,

page.page_id = revision.rev_page ,

page.page_latest = revision.rev_id,

revsion.rev_text_id = text.old_id

)

4. update page set page_lastest, len.

5. insert logging.

6. update user set user_editcount = user_editcount + 1

7. update user set user_touch = nowdate()

8. insert into objectcache( this table is used for a few generic cache operations if not using Memcached)

9. update site_stats set ss_total_edit and ss_total_page ( add 1)

10. replace into searchindex.

折磨3天,openfire中文乱码为’??’的问题,原来早以被官方解决

建立数据库的时候 create database openfire default character set utf8

MySQL does not have proper Unicode support, which makes supporting data
in non-Western languages difficult. However, the MySQL JDBC driver has a workaround
which can be enabled by adding ?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
to the URL of the JDBC driver. You can edit the conf/openfire.xml file to add this value.

 

当程序民工,百度不如google,google不如wiki,wiki不如官方文档。

psi 0.11有bookmarkmanager的代码,没有bookmarkmanagedlg的UI,汗一个。

如果需要将某一个conferencen设置为autojoin, 可以发送原始的xml流

打开XML console,  输入如下

<iq type='set' id='2'>
<query xmlns='jabber:iq:private'>
<storage xmlns='storage:bookmarks'>
<conference name='psi_conference' autojoin='true'  jid='psi@conference.psi-im.org'>
<nick>yourNick</nick>
<password></password>
</conference>
</storage>
</query>
</iq>
如果需要取消就将 auto-join设置为false...

被折腾了两天,自己编译出来自己机器上运行没问题,也能用ssl连接到IM服务器或者Gtalk,但是一cp到别的机器上就不行,自己机器中windows/system32下也没装任何东西,和标准版对比了半天,除了版本不一样,文件一模一样。

照着标准版的把openssl从0.9.8.10换成了0.9.8.4,装0_9_8d版,全部重新编译,先编译qca,然后qca-ossl,再接着编译的时候把#qca-static取消注释(不带编译的psi.exe大小是7.1M,带QCA是8.65M),编译,然后0.9.8.4版没libeay32.dll和ssleay32.dll,直接从标准的psi拷贝过来,反正都是0.9.8.4,在纯净的winxp上运行,终于连上Gtalk了。

1. 开始不带qca-static的版本放到其他机器上进行不了ssl连接,提示SASL太弱或者不允许明文

2. 后来允许了qca-static放到其他机器上又直接应用程序初始化错误,想到了好像openssl_0.9.8j再装的时候提示需要vs 2008  c++ resdistribu

基于spark是LGPL的license,所以客户端要尽量选择采用GPL协议psi,只好重新开始,第一次接触QT的程序,前前后后编译配置了整整一天,把过程中的问题记录下,以备使用(记性现在太差),所有命令行的操作都在QT Command Prompt(设置好环境变量)下而非cmd

1.安装MinGW,虽然装QT的时候会让你选择可以下载并安装,但是太慢(毕竟连欧洲速度不稳定). 

2. 安装QT(注意psi对QT的版本要求),没钱只好opensource的版本了,下载并运行qt-win-opensource-4.x.x-mingw.exe,一路next即可,选择已有的$$MinGW_HOME。

虽然有的资料中说QT安装完毕只是装了基本的lib,并未编译成dll,但是对于psi的编译并不需要,自己开始编译了一下,编译过程中提示缺少uxtheme.h和tmschema.h,下载拷贝到MinGW\include就行(这两个文件dev-cpp中都有,而且dev-cpp\bin中也有make,mingw32-make等,感觉可以不装MinGW),结果编译了一个小时(CPU:T7250,Mem:2G)左右还没停下的迹象,导致生成的.o文件提示C盘空间不足= =。

3.安装OpenSSL,没啥说的,不需要配置。安装完后把include下的东西cp到MinGW的include下. 还有libeay32.a,ssleay32.a都cp到MinGW的lib下并改后缀为.lib。系统变量中添加QTDIR,并将QT/bin,MinGW/bin添加到系统PATH。

4.编译psi.

阅读全文…

其实我对这种方式一直没有什么好感,总觉得是旁门左道,非正统方式实现的,总怕万一哪天崩溃了。

不过有时候真的没办法啊,想利用其他某个web的服务进行验证或者查询,但是他的系统又没给你提供标准的接口,只能这么干了,不过其实挺好用的,用httpclient的话几句代码就可以搞定一个web验证或者查询,返回的html如果想直接用也可以直接out.println…不错~~

另外一种就是需要利用那个web服务,但又不想让客户知道存在这样一个web服务(例如管理员后台系统),就直接在服务器端模拟post过去取得结果再返回给客户,哈哈~~好贱。

不过唯一不爽的就是处理太多,还要在几个系统间跳来跳去,响应实在不满意~~

一个简单的帐户激活,先CAS拦截到一个CAS验证,再拿回来到另外数据系统中取用户信息,再拿用户信息模拟POST到另外一个子系统中,再根据返回的html判断POST结果返回给用户,无语了都~~~。

p.s: 以后要坚持做工作笔记了,人老了,半个月前学的方法,实现的功能都忘了具体方法了。而且还不方便修改,嗯~文档的重要性。