自从 2006年07月 ↓

伯远帖

伯远帖周末看”故宫”,看到了关于这副书法作品的一些介绍,”伯远帖”是晋代书法家王珣的一封书信,代表了晋代书法的最高水平(人家写封信都是最高水平),是故宫”三希堂”的”三希”之一.另外两希是王羲之的”快雪时晴帖”和王献之的”中秋帖”,查了一下,原来王珣居然是书圣王羲之的侄子,”三希”居然是一家子的作品,怪不得会写的这么好了,一家子牛人啊,pfpf.

Crysis

crysis“Crysis”是德国游戏公司CryTek将在今年第4季度推出单击游戏,采用支持微软DirectX 10的Cry Engine.
This game is running on the new CryENGINE 2 technology and this game is one of the the first announced to run on the advanced DirectX 10.
系统配置要求:
CPU: Athlon 64 3000+/Intel 2.8GHz;
Graphics: NVIDIA 6600/X800GTO (SM 2.0);
RAM: 768MB/1GB;
HDD: 6GB;
Internet: 256k+;
Optical Drive: DVD;
Software: DX9.0c with Windows XP.
这里是一段关于该游戏的视频,这里有中文介绍

Crash

电影可以分成四类:

1.可以买张D9来认真看一看,然后收藏的,例如”The Shawshank Redemption”,”疯狂的石头”,一遍看不够,而且每看一遍都有新的收获,而且隔一段时间就想再看一遍.
2.可以去电影院买票看的,例如”功夫”,很热闹,效果很好,但是看一遍过过瘾就可以了,没必要再看.
3.可以买张D5来没事看看的,例如”跌重跌3″,没啥看的时候凑合凑合,看完了就忘了.
4.盗版盘都别买,压根儿别去浪费那钱,CCTV6播了就赶紧换台的,例如”无极”,我就不说啥了.

Crash是第1类.
电影以撞车开始,以撞车结束,讲述了社会中人与人,种族与种族以及人自身的各种碰撞,人性的善恶美丑在碰撞中不断的交织变换,碰撞改变了别人,也影响了自己.故事讲述的张驰有度,一气呵成,演员表演的也很到位,强烈推荐.同时推荐它的主题歌”maybe tomorrow“,So maybe tomorrow,I’ll find my way home.

apache服务器实现用户验证(zt)

第1步:

我们在/var/www(apache的主页根目录)下建立一个test目录

mkdir /var/www/test

第2步

然后我们编辑httpd.conf

添加
Alias /test”/var/www/test”

Options Indexes MultiViews
AllowOverride AuthConfig #表示进行身份验证
Order allow,deny
Allow from all

#AllowOverride AuthConfig 表示进行身份验证 这是关键的设置

第3步

在/var/www/test创建.htaccess文件
vi /var/www/test/.htaccess

AuthName “frank share web”
AuthType Basic
AuthUserFile /var/www/test/.htpasswd
require valid-user

#AuthName 描述,随便写
#AuthUserFile /var/www/test/.htpasswd
#require valid-user 或者 require user frank 限制是所有合法用户还是指定用户

#密码文件推荐使用.htpasswd,因为apache默认系统对“.ht”开头的文件默认不允许外部读取,安全系数会高一点哦。

第4步

就是创建apache的验证用户

htpasswd -c /var/www/test/.htpasswd frank

#第一次创建用户要用到-c 参数 第2次添加用户,就不用-c参数

如果你们想修改密码,可以如下

htpasswd -m .htpasswd frank

第5步:

ok,重启apache服务,然后访问 http://你的网站地址/test 如果顺利的话,应该能看到一个用户验证的弹出窗口,只要填入第4步创建的用户名和密码就行

后话,为了服务器的性能,一般不推荐使用AllowOverride AuthConfig或者AllowOverride ALL,因为这会使服务器会不断的去寻找.htaccess,从而影响服务器的效能,一般我们把一些后台管理界面或者其他特殊目录可能需要加验证这个需求。
原文地址:http://www.5ilinux.com/apache03.html

减少Firefox内存占用的小技巧

Firefox内存占用问题一直让人十分的不爽,尤其我这种内存本来就不富裕的,地主家也没有内存了……
偶然发现了下面两个小技巧,试了一下,效果还不错,尤其Firefox最小化的时候,内存占用嗖的降到几M,爽.也许对你也十分有用:

在about:config中

1.加入一个boolean项:config.trim_on_minimize,并设置为true,这样就可以在最小化时自动释放内存。

2.修改browser.sessionhistory.max_total_viewers修改值为5或更小{页面快进/快退功能中保存的页面总数,默认是-1(无限)}。

玉米

玉米玉米是一只3个月大的小金毛.
虽然来我家才一个多月,其犯下的罪行已经不是”累累”可以形容的了,到现在为止,毁于它嘴下的已经有电饭煲的电源线一条,手机充电器一个,ibm鼠标一个,大蒜一包,衣领净一瓶…还抓了它老妈脸一下.每次丫犯了错误都十分想用拖鞋抽之,但丫总是以超级无敌的无辜表情让我不忍下手,ft.玉米的毛有些短,颜色也比较浅,因此牵出去的时候偶尔会被人说:”看,拉布拉多!”,怎一个郁闷了得!不过还好过有人管松狮叫藏獒,碰见金毛叫大黄狗.
玉米在小区的金毛界应该算是比较活泼的一只了,和别狗一起玩的时候从来不俱,不管个头大小颜色深浅性情是否凶残品行是否端正是不是正在流口水,冲过去直接咬脸,但其结局往往都是被大狗们一掌放倒在地上,脑袋被含在嘴里…惨不忍睹.大家都看好玉米未来超强的战斗力以及勇猛向前的战斗精神,维护世界和平的重任就落在它的肩上了.

在MYSQL中使用全文索引(FULLTEXT index)

MYSQL的一个很有用的特性是使用全文索引(FULLTEXT index)查找文本的能力.目前只有使用MyISAM类型表的时候有效(MyISAM是默认的表类型,如果你不知道使用的是什么类型的表,那很可能就是MyISAM).全文索引可以建立在TEXT,CHAR或者VARCHAR类型的字段,或者字段组合上.我们将建立一个简单的表用来解释各种特性.
简单用法(MATCH()函数)对3.23.23以后的版本有效,复杂的用法(IN BOOLEAN MODE修饰语)对4以后的版本有效,本文的第一部分着重简单用法,第二部分讲复杂用法.
一个简单的表
我们将在整个过程中使用下面的表.
CREATE TABLE fulltext_sample(copy TEXT,FULLTEXT(copy)) TYPE=MyISAM;
如果你没有把默认的表类型设置成MyISAM以外的类型那么TYPE=MyISAM可以省略.建表之后,向其中填充一些数据,例如:
INSERT INTO fulltext_sample VALUES
('It appears good from here'),
('The here and the past'),
('Why are we hear'),
('An all-out alert'),
('All you need is love'),
('A good alert');

如果你已经建立好了一个表,你可以使用ALTER TABLE(就像CREATE INDEX语句一样)语句添加一个全文索引,例如:
ALTER TABLE fulltext_sample ADD FULLTEXT(copy)
查找文本
全文索引搜索的语法很简单,你只要MATCH字段,AGAINST你要查找的文本,例如:
mysql> SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('love');
+----------------------+
| copy |
+----------------------+
| All you need is love |
+----------------------+

在全文索引上进行搜索是不区分大小写的,因此下面的语句也可以正常运行:
mysql> SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('LOVE');
+----------------------+
| copy |
+----------------------+
| All you need is love |
+----------------------+

全文索引通常用来搜索自然语言文本,例如报纸文章,网页内容等等.因此MySQL为这类搜索添加了很多特性.MySQL不索引任何长度小于等于3的文本,也不索引有50%机会出现的单词.这意味着如果你的表少于2条记录,基于全文索引的搜索不会返回任何东西.将来,MySQL会使这项功能更灵活,但是现在它应该可以适合大部分自然语言的使用.如果你的数据库中的大部分记录都包含”music”,你很可能不希望返回这些记录,你可以使用IN BOOLEAN MODE修饰符来获得50%左右的阀值,见本文第二部分.
结果将按照关联性从高到底的顺序返回.
主要特性
下面是标准的全文索引搜索的主要特性:
1.排除重复词语
2.排除长度小于4的词语
3.排除在多于一半记录中出现的词语(就是说只要要有3条记录)
4.带连字符的词语被认为两个词语
5.结果按照关联度降序返回
6.忽略列表中的词语也被从搜索结果中排除.忽略列表基于普通的英文单词,因此如果你的数据用作不同的目的,你可能希望改变忽略列表.不幸的是,这样作并不容易.你需要编辑文件myisam/ft_static.c,重新编辑MySQL,并重建索引!这里有一个忽略列表.注意,这些在不同的版本里有所更改.
忽略列表
"a", "a's", "able", "about", "above", "according", "accordingly", "across", "actually", "after", "afterwards", "again", "against", "ain't", "all", "allow", "allows", "almost", "alone", "along", "already", "also", "although", "always", "am", "among", "amongst", "an", "and", "another", "any", "anybody", "anyhow", "anyone", "anything", "anyway", "anyways", "anywhere", "apart", "appear", "appreciate", "appropriate", "are", "aren't", "around", "as", "aside", "ask", "asking", "associated", "at", "available", "away", "awfully", "b", "be", "became", "because", "become", "becomes", "becoming", "been", "before", "beforehand", "behind", "being", "believe", "below", "beside", "besides", "best", "better", "between", "beyond", "both", "brief", "but", "by", "c", "c'mon", "c's", "came", "can", "can't", "cannot", "cant", "cause", "causes", "certain", "certainly", "changes", "clearly", "co", "com", "come", "comes", "concerning", "consequently", "consider", "considering", "contain", "containing", "contains", "corresponding", "could", "couldn't", "course", "currently", "d", "definitely", "described", "despite", "did", "didn't", "different", "do", "does", "doesn't", "doing", "don't", "done", "down", "downwards", "during", "e", "each", "edu", "eg", "eight", "either", "else", "elsewhere", "enough", "entirely", "especially", "et", "etc", "even", "ever", "every", "everybody", "everyone", "everything", "everywhere", "ex", "exactly", "example", "except", "f", "far", "few", "fifth", "first", "five", "followed", "following", "follows", "for", "former", "formerly", "forth", "four", "from", "further", "furthermore", "g", "get", "gets", "getting", "given", "gives", "go", "goes", "going", "gone", "got", "gotten", "greetings", "h", "had", "hadn't", "happens", "hardly", "has", "hasn't", "have", "haven't", "having", "he", "he's", "hello", "help", "hence", "her", "here", "here's", "hereafter", "hereby", "herein", "hereupon", "hers", "herself", "hi", "him", "himself", "his", "hither", "hopefully", "how", "howbeit", "however", "i", "i'd", "i'll", "i'm", "i've", "ie", "if", "ignored", "immediate", "in", "inasmuch", "inc", "indeed", "indicate", "indicated", "indicates", "inner", "insofar", "instead", "into", "inward", "is", "isn't", "it", "it'd", "it'll", "it's", "its", "itself", "j", "just", "k", "keep", "keeps", "kept", "know", "knows", "known", "l", "last", "lately", "later", "latter", "latterly", "least", "less", "lest", "let", "let's", "like", "liked", "likely", "little", "look", "looking", "looks", "ltd", "m", "mainly", "many", "may", "maybe", "me", "mean", "meanwhile", "merely", "might", "more", "moreover", "most", "mostly", "much", "must", "my", "myself", "n", "name", "namely", "nd", "near", "nearly", "necessary", "need", "needs", "neither", "never", "nevertheless", "new", "next", "nine", "no", "nobody", "non", "none", "noone", "nor", "normally", "not", "nothing", "novel", "now", "nowhere", "o", "obviously", "of", "off", "often", "oh", "ok", "okay", "old", "on", "once", "one", "ones", "only", "onto", "or", "other", "others", "otherwise", "ought", "our", "ours", "ourselves", "out", "outside", "over", "overall", "own", "p", "particular", "particularly", "per", "perhaps", "placed", "please", "plus", "possible", "presumably", "probably", "provides", "q", "que", "quite", "qv", "r", "rather", "rd", "re", "really", "reasonably", "regarding", "regardless", "regards", "relatively", "respectively", "right", "s", "said", "same", "saw", "say", "saying", "says", "second", "secondly", "see", "seeing", "seem", "seemed", "seeming", "seems", "seen", "self", "selves", "sensible", "sent", "serious", "seriously", "seven", "several", "shall", "she", "should", "shouldn't", "since", "six", "so", "some", "somebody", "somehow", "someone", "something", "sometime", "sometimes", "somewhat", "somewhere", "soon", "sorry", "specified", "specify", "specifying", "still", "sub", "such", "sup", "sure", "t", "t's", "take", "taken", "tell", "tends", "th", "than", "thank", "thanks", "thanx", "that", "that's", "thats", "the", "their", "theirs", "them", "themselves", "then", "thence", "there", "there's", "thereafter", "thereby", "therefore", "therein", "theres", "thereupon", "these", "they", "they'd", "they'll", "they're", "they've", "think", "third", "this", "thorough", "thoroughly", "those", "though", "three", "through", "throughout", "thru", "thus", "to", "together", "too", "took", "toward", "towards", "tried", "tries", "truly", "try", "trying", "twice", "two", "u", "un", "under", "unfortunately", "unless", "unlikely", "until", "unto", "up", "upon", "us", "use", "used", "useful", "uses", "using", "usually", "v", "value", "various", "very", "via", "viz", "vs", "w", "want", "wants", "was", "wasn't", "way", "we", "we'd", "we'll", "we're", "we've", "welcome", "well", "went", "were", "weren't", "what", "what's", "whatever", "when", "whence", "whenever", "where", "where's", "whereafter", "whereas", "whereby", "wherein", "whereupon", "wherever", "whether", "which", "while", "whither", "who", "who's", "whoever", "whole", "whom", "whose", "why", "will", "willing", "wish", "with", "within", "without", "won't", "wonder", "would", "would", "wouldn't", "x", "y", "yes", "yet", "you", "you'd", "you'll", "you're", "you've", "your", "yours", "yourself", "yourselves", "z", "zero",
让我们看一下其中的一些词.如果你懒的输入,但是想查找”love”这个词,象下面这样:
mysql> SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('lov');
Empty set (0.00 sec)

什么都没返回,因为全文索引只包含完整的单词,不是部分单词.如果想得到返回,你必须把单词写完整,就像第一个例子里一样.
就像我们提过的,连字符单词在全文索引中被排除(它们被作为单独的单词索引),因此下面的语句什么都不返回:
mysql> SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('all-out');
Empty set (0.00 sec)

很不幸,两个单词都小于4个字符,因此单独搜索时也不会出现,而且通常的搜索中也不会出现.本文的第二部分中使用BOOLEAN MODE搜索可以搜索部分的或者包含连字符的单词.
你也可以一次搜索多个单词,用逗号分隔.下面的例子查找包含”here”和”appears”的记录:
mysql> SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('here','appears');
Empty set (0.01 sec)

出乎意料这个语句没有返回.但是仔细看看忽略列表,这个词被列在其中,因此被从索引中排除了.忽略列表可能是人们解释MySQL全文索引没有生效的通常原因.如果你的查询返回了一个结果,那么你的版本的MySQL的忽略列表不包含”here”这个词.
关联度
下面的例子说明记录返回的优先级
mysql> SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST('good,alert');
+---------------------------+
| copy |
+---------------------------+
| A good alert |
| It appears good from here |
| An all-out alert |
+---------------------------+

记录”A good alert”首先出现,因为它同时包含要搜索的两个词.你不必相信我-只需要看看MySQL在结果中显示的优先级.简单的在字段列表中重复MATCH()函数,例如:
mysql> SELECT copy,MATCH(copy) AGAINST('good,alert') AS relevance
FROM fulltext_sample WHERE MATCH(copy) AGAINST('good,alert');
+---------------------------+------------------+
| copy | relevance |
+---------------------------+------------------+
| A good alert | 1.3551264824316 |
| An all-out alert | 0.68526663197496 |
| It appears good from hear | 0.67003110026735 |
+---------------------------+------------------+

关联度的计算非常复杂,它基于索引中单词的数量,记录中不同单词的个数,索引和返回结果中单词的总数,以及单词的重要程度.这个数字可能在你的MySQL版本中有所不同,MySQL偶尔会强化计算逻辑.
对大多数应用来说标准的全文索引搜索非常有用而充分,MySQL 4让它更加强大.

原文地址:http://www.databasejournal.com/features/mysql/article.php/1578331

vi编辑器”Can’t write viminfo file”错误

在编辑文件之后退出时,vi(vim)提示”Can’t write viminfo file”错误,打开~/目录下的.viminfo文件,没啥问题,运行ls -al .viminf命令,发现目录下有从.viminfa.tmp到.viminfz.tmp一大堆临时文件,viminfo是记录各种信息的,从帮助文档中找到了下面这些:

信息文件 viminfo 被设计为储存状态信息:

命令行和模式搜索的历史记录
寄存器内文本
各种文件的标记
缓存器列表
全局变量

你每次退出 Vim,它就把此种信息存放在一个文件内。即 viminfo 信息文件。当 Vim
重新起动时,就读取这个信息文件, 而那些信息就被还原了。

选项 ‘viminfo’ 的默认设定是还原有限的几种信息。你也许希望设定它记住更多的信息.
下面这个命令可以办到:

:set viminfo=string

其中字符串 “string” 规定了什么要储存。该字符串的语法为一个选项字符跟一个参数.
选项和参数组成的对子之间由逗号分隔.
来看一下你可以怎样构建你自己的 viminfo 字符串。首先,选项 ‘ 用于规定你为多
少个文件保存标记 (a-z)。为此选项挑一个美妙的偶数 (比如 1000). 你的命令现在看
起来像这样:

:set viminfo=’1000

选项 f 控制是否要储存全局标记 (A-Z 和 0-9)。如果这个选项设为 0,那么什么也不
存储。如果设为 1 ,或你对 f 选项不作规定, 那么标记就被存储. 你要这个功能, 现
在你有了:

:set viminfo=’1000,f1

选项 < 控制着每个寄存器内保存几行文本。默认情况下,所有的文本行都被保存. 如果
设为 0,则什么也不保存。为了避免成千上万行文本被加入你的信息文件 (那些文本可能
永远也没用,徒然使 Vim 起动得更慢), 你采用 500 行的上限:

:set viminfo='1000,f1,<500

你也许用得着的其它选项:
: 保存命令行历史记录内的行数
@ 保存输入行历史记录内的行数
/ 保存搜索历史记录内的行数
r 可移介质,其中没有任何标记存入 (可用多次)
! 以大写字母开头的全局变数,并且不含有小写字母
h 起动时解除选项 'hlsearch' 的高亮度显示
% 缓冲列表 (只有当不带参数起动 Vim 时才还原)
c 用编码 'encoding' 转换文本
n 用于 viminfo 文件的名称 (必须为最后一项选项)

如果这些信息不重要,运行命令rm -rf .viminf[a-z].tmp直接把a~z都删除就好了.

The Python Web services developer: The real world, Part 1(The Google Web APIs)

安装
我们需要使用Python 2.2版和SOAPpy0.10.2版来实现下面的例子,可能其他版本的 SOAPpy也可以和Google API一起使用,尽管你需要适应下面列出的例子来对应SOAPpy里对引入和方法的更新.SOAPpy的安装很简单:解压缩,然后使用标准的Python包安装工具.
Listing 1.标准Python包安装工具的使用

[scott@daedalus SOAPpy-0.10.2]$ python setup.py build
running build
...
[root@daedalus SOAPpy-0.10.2]# python setup.py install
running install
...

Google API
使用Google的API之前,你必须到Google注册来获得一个license-key.你需要提供一个可用的email地址来接受这个免费的key.目前,Google的API还是beta版,还没有商业化的计划.阅读许可文件,然后下载API,或者到Google的网站上查看相关细节
下载Google API工具包.它不包含任何Python程序,但是有很多对于JAVA和.Net(C#或VB)语言的封装好的库.下载的工具包中我们可以直接使用的是GoogleSearch WSDL 文件和一个HTML格式的参考文档.Google API提供了三个方法:

1. doGoogleSearch( ), 用来实现使用Google进行Web查询(目前还不支持图片和群组功能)
2. doGetCachedPage( ), 返回Google缓存的Web页面
3. doSpellingSuggest( ), 返回一列提交词语的正确拼写
要注意的是,返回的GoogleSearchResult 是一个符合类型

Let’s go
为了我们在Google大陆上的第一次探险,我们将编写一个Python客户端来直接构造XML格式的SOAP请求并使用Python的httplib模块发送一个HTTP消息.我们查询两个单词”soptted owl”,请求10个结果项(’maxResults’)从第一个开始(’start’, zero-indexed)–并且不使用任何过滤和限定.限定查询特定的语言(’lr’)和从结果中过滤成人内容是可以实现的,可以在参考文档中查看这些其他特性的相关细节.
Continue reading →

凌晨升级行动

周六加了一天班之后决定周一早上6点开始升级,因为这时候在线的用户比较少,很少有人大周一早上不好好睡觉跑来上占座,升级影响比较小,而且升级之后有充足的时间修改出现的问题.周日晚上和两个韩国人在鸭王吃烤鸭的时候,YongLi发短信说:叫兄弟们早点休息,我说,这么早谁睡的着啊,YongLi回短信介绍独家秘方:睡前裸奔半小时~~我ft.

闹钟在5点响的时候,翻个身又狠狠的睡了一小觉,之后不得不死命爬起来移动到厕所.洗过脸就精神的多了,看见客厅里有件被小狗子(我家养的一只金毛,叫玉米)扯到地上的衣服,拣起来看看没坏,加上它又可怜巴巴的坐边上看着我,我就没大嘴巴抽它,提上红点包,去等第一趟848.

天已经大亮了,晨练的老头老太太都排成排了.第一趟车人就怒多,都是带着大包小包去西站的,晃晃悠悠的到了公司,兄弟们还没到,开灯,开空调,接上笔记本,睡一觉先.

升级过程比我想象的要顺利的多的多,我原以为升级之后会一塌糊涂,天昏地暗的,没想到改了几个关键的错误后就基本可以正常使用了,并且顺利的在9点重新开放.开来晚上去打羽毛球有戏了,可惜我没带着我的装备,可惜啊可惜.