This is who I am

星期六, 十月 28, 2006

唉,还是换回 sitesled 了

从我的 Blog 转到 blogspot 再转过来,只有短短的 15 天,真是无限 BS GFW 啊。

标签:

 

星期五, 十月 27, 2006

Pes6 发布了


本来是应该昨天写的,不过从前天开始我就不能访问 blogspot 了,貌似是有被封的迹象,但是昨天晚上很多人又能上了,但是我仍然不能上,暂时先归结于我的 RPWT 好了,如果 zlbruce.blogspot.com 访问不了了,就暂时用 www.pkblogs.com/zlbruce 来代替好了( 能看到的应该都是能访问 blogspot 的,也就不用 pkblogs 的来代替了,不能看到的却不知道用什么来代替,sigh!)
更新:已经换到 sitesled 了。
好了,来说说 pes6 吧,我本人可是一个十足的实况迷,虽然技术不怎么样,不过算是一种兴趣吧,在前天晚上找到了 pes6 的种子文件开始下,第二天早上起来的时候就已经下完了,可是发现装上后玩不了,然后在论坛上找到了一个 RP 破解大发,也许是我的 RP 确实不怎么样,试了二三十遍都进不去,然后又发现了 0day 发布的 clone 版,描述是这样写的
unpack, mount with dt4 all emu options on, install, use our included loader, play!
看样子应该是能玩,因为硬盘空间不够,就把刚下的 pes6 给删了,下那个 clone 版去了;当我上完课回来之后发现论坛上的人说只需要 0day 发布的那个 loader 和 mds 文件即可,也就是说只需要在我以前下的基础上再下不到 1M 的东西就可以玩了,很是郁闷。等到了下午终于把 clone 版下完了,install and play! perfect! 鉴于我的实况水平比较菜,就不对 pes6 发表评论了。

标签: ,

 

星期五, 十月 20, 2006

又开始 SETI@home 了


前几天收到了 SETI@home 给我发的邮件,才发现我已经有 105 天没有计算了。现在又开始计算拉,SETI@home 是一个搜索外星文明的分布式计算项目,本人对这个神秘的宇宙本来就很好奇,高中的时候就把《时间简史》读了三遍;再加上一直相信存在外星文明,因此在去年参加了这个计算,以前算的是关于蛋白质的 Folding@home,大家有兴趣的话也可以到中国分布式计算总站去找找自己喜欢的项目,反正机器闲着也是闲着,对吧。

标签: ,

 

星期五, 十月 13, 2006

转到 Blogspot 了

其实这个念头在 blogspot 解封的时候就有了,不过那是总怕什么时候又被封,所以一直处于观望状态。
最近这几天 sitesled 时不时的就不能访问,从这里就可以看出有多么频繁了;另一方面,Blogger 又推出了 Beta 版,但是却不支持通过 ftp 发布,于是就产生了换服务器的这个决定,新的 Blog 地址是 http://zlbruce.blogspot.com/,So,麻烦各位还得再多点一次鼠标了。
RSS 订阅的地址不变,仍然是 http://feeds.feedburner.com/Zlbrucesblog
10 月 28 日更新:由于 blogspot 又被封,因此又换回来了

标签:

 

星期二, 十月 10, 2006

《C++ Primer 4th》中的文本查询系统

《C++ Primer 4th》中将文本查询系统都已经基本上完成了,只差一个将输入的查询字符转换为 Query 对象了,当然刚开始的时候以为很简单,到最后才发现需要用到编译原理的一些知识,本来想用 LR 分析方法构造 ACTION 和 GOTO 表的,文法都已经写出来了,发现 Boost 中就有相应的 spirit 库,以前费了那么大的劲把 Boost 装上,可不能不用用啊,于是乎看了看 spirit 的文档,发现其使用还是很简单的,能把表达式方便地转换为后缀式,main.cpp 的代码如下(由于代码有点长,因此在首页中我把他隐藏了起来,可以进入此文章阅读,也可以点击上面的链接查看--推荐):

#include <iostream>
#include <fstream>
#include <stack>
#include <boost/spirit/core.hpp>

#include "TextQuery.h"
#include "Query.h"

using namespace std;
using namespace boost::spirit;

namespace
{
stack<Query> queryStack;
void do_string(char const* str, char const* end)
{
string s(str, end);
queryStack.push(Query(s));
}

void do_add(char const*, char const*)
{
Query rhs=queryStack.top();
queryStack.pop();
Query lhs=queryStack.top();
queryStack.pop();
Query result=lhs & rhs;
queryStack.push(result);

}
void do_or(char const*, char const*)
{
Query rhs=queryStack.top();
queryStack.pop();
Query lhs=queryStack.top();
queryStack.pop();
Query result=lhs rhs;
queryStack.push(result);

}

void do_not(char const*, char const*)
{
Query rhs=queryStack.top();
queryStack.pop();
Query result=~rhs;
queryStack.push(result);

}
}

struct calculator : public grammar<calculator>
{
template <typename ScannerT>
struct definition
{
definition(calculator const& /*self*/)
{
expression
= factor
>> *( ('&' >> factor)[&do_add]
('' >> factor)[&do_or]
)
;


factor
= lexeme_d[(+alpha_p)[&do_string]]
'(' >> expression >> ')'
('~' >> factor)[&do_not]
;
}

rule<ScannerT> expression, term, factor;

rule<ScannerT> const&
start() const { return expression; }
};
};

inline string make_plural(size_t ctr, const string& word, const string& ending)
{
return (ctr==1)?word:word+ending;
}
void print_results(const set<TextQuery::line_no>& locs, const string& sought, const TextQuery &file)
{
//if the word was found, then print count and all occurrences
typedef set<TextQuery::line_no> line_nums;
line_nums::size_type size=locs.size();
cout<</*"\n"<<sought<<*/" occurs "
<<size<<" "
<<make_plural(size, "time", "s")<<endl;
//print each line in which the word appeared
line_nums::const_iterator it=locs.begin();
for(;it!=locs.end(); ++it)
{
cout<<"\t(line "
//don't confound user with text lines starting at ()
<<(*it)+1<<" ) "
<<file.text_line(*it)<<endl;
}
}


//program takes single argument specifying the file to query
int main(int argc, char **argv)
{
//open the file from which user will query words
if(argc<2)
{
cerr<<"no input file!"<<endl;
return EXIT_FAILURE;
}
ifstream infile(argv[1]);
if(infile.fail())
{
cerr<<"no input file!"<<endl;
return EXIT_FAILURE;
}
TextQuery tq;
tq.read_file(infile); //builds query map
//iterate with the user: prompt for a word to find and print results
//loop indefinitely: the loop exit is inside the while
calculator calc;
while(true)
{
cout<<"enter word to look for, or q to quit: ";
string s;
getline(cin,s);
//stop if hit eof on input or a 'q' is entered
if(!cin s=="q" s=="Q") break;
//get the set of line numbers on which this word appears

parse_info<> info = parse(s.c_str(), calc, space_p);

if (info.full)
{
Query query=queryStack.top();

set<TextQuery::line_no> locs=query.eval(tq);

query.display(cout);
print_results(locs, s, tq);

}
else
{
cout << "-------------------------\n";
cout << "Parsing failed\n";
cout << "stopped at: \": " << info.stop << "\"\n";
cout << "-------------------------\n";
}
}
return 0;
}


这次再让我感受到了 Boost 的强大,更增加了学习 Boost 的信心。

标签: , ,

 

星期六, 十月 07, 2006

Aiglx+Beryl Now!


本来我的显卡用上 Xgl+Compiz 就已经让我兴奋不已了,不想一不小心看到了 zhllg 大侠发的 Aiglx+Beryl 的视频,发现他的显卡尽然也是 radeon 9200,于是乎装上 Gentoo,装上 ATI 的开源驱动,再装上 Beryl,然后再使用,一切都非常的顺利。Beryl 的效果真的是非常的不错,里面有很多非常有用的特效,大家可以到 youtube 上面看看别人发的一些视频,我就不发了,呵呵。

标签: , , ,

 

星期日, 十月 01, 2006

祝各位 国庆/中秋 愉快

十一长假,各位都做些什么呢?我呢,就在寝室里呆着了。
没什么写的,就贴幅我爸写的字吧,让各位见笑了。

标签: ,