有一种东西,它会在某个夏天的夜晚象风一样突然袭来,让你措不及防,无法安宁,与你形影相随,挥之不去,我不知道那是什么,只能称它为爱情。

 

Zend Optimizer 和 eAccelerator 冲突。

有乱码内容。。

====
自摆乌龙,原来是机房被ARP了。。
====

另附:lighttpd的discuz rewrite。

url.rewrite-once = ( “^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$” => “$1/archiver/index.php?$2”,
“^(.*)/forum-([0-9]+)-([0-9]+)\.html$” => “$1/forumdisplay.php?fid=$2&page=$3”,
“^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$” => “$1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3”,
“^(.*)/space-(username|uid)-(.+)\.html$” => “$1/space.php?$2=$3”,
“^(.*)/tag-(.+)\.html$” => “$1/tag.php?name=$2” )

 

10 things you (probably) didn’t know about PHP.

From : http://blog.rightbrainnetworks.com/2006/09/18/10-things-you-probably-didnt-know-about-php/

PHP is simultaneously the most infuriating and joyful languages I’ve ever worked with. I say “infuriating” primarily because the function names are so inconsistant. Despite the fact that I use it almost everyday, I still have to think to myself “Is it str_pos or strpos? str_split or strsplit?” On the other hand, occasionally I’ll stumble across a gem that perfectly solves the problem at hand with a single line of code.

Here’s a short list of cool features that might have slipped under your radar as well:

1. Use ip2long() and long2ip() to store IP addresses as integers instead of strings in a database. This will reduce the storage space by almost a factor of four (15 bytes for char(15) vs. 4 bytes for the integer), make it easier to calculate whether a certain address falls within a range, and speed-up searches and sorts (sometimes by quite a bit).
2. Partially validate email addresses by checking that the domain name exists with checkdnsrr(). This built-in function checks to ensure that a specified domain name resolves to an IP address. A simple user-defined function that builds on checkdnsrr() to partially valid email addresses can be found in the user comments section in the PHP docs. This is handy for catching those occasional folks who think their email address is ‘joeuser@wwwphp.net’ instead of ‘joeuser@php.net’.
3. If you’re using PHP 5 with MySQL 4.1 or above, consider ditching the mysql_* functions for the improved mysqli_* functions. One nice feature is that you can use prepared statements, which may speed up queries if you maintain a database-intensive website. Some benchmarks.
4. Learn to love the ternary operator.
5. If you get the feeling that you might be reinventing the wheel during a project, check PEAR before you write another line. PEAR is a great resource that many PHP developers are aware of, yet many more are not. It’s an online repository containing over 400 reusable snippets that can be dropped right into your PHP application. Unless your project is trully unique, you ought to be able to find a PEAR package that saves at least a little time. (Also see PECL)
6. Automatically print a nicely formatted copy of a page’s source code with highlight_file().This function is handy for when you need to ask for some assistance with a script in a messageboard, IRC, etc. Obviously, some care must be taken not to accidently show your source when it contains DB connection information, passwords, etc.
7. Prevent potentially sensitive error messages from being shown to users with the error_reporting(0) function. Ideally error reporting should be completely disabled on a production server from within php.ini. However if you’re on a shared webhost and you aren’t given your own php.ini, then your best bet is to add error_reporting(0); as the first line in each of your scripts (or use it with require_once().) This will prevent potentially sensitive SQL queries and path names from being displayed if things go awry.
8. Use gzcompress() and gzuncompress() to transparently compress/decompress large strings before storing them in a database. These built-in functions use the gzip algorithm and can compress plaintext up to 90%. I use these functions almost everytime I read/write to a BLOB field within PHP. The only exception is when I need full text indexing capabilities.
9. Return multiple values from a function with “by reference” parameters. Like the ternary operator, most PHP developers who come from a more formalized programming background already know this one. However, those who’s background is more HTML than Pascal, probably have wondered at one time “how do I get multiple values back from a function I wrote, even though I can only use one return value?” The answer is that you precede a variable with “&” and use it “by reference” instead of “by value”.
10. Fully understand “magic quotes” and the dangers of SQL injection. I’m hoping that most developers reading this are already familiar with SQL injection. However, I list it here because it’s absolutely critical to understand. If you’ve never heard the term before, spend the entire rest of the day googling and reading.

 

记录一二

FreeBSD 7.0

Zend

libm.so.4 找不到。
做libm.so.5 软连接

eAccelerator not compatible with zend Optimizer 3.3.3
eAccelerator.so 需在zend Optimizer.so之前加载。

 

关于OUAT游戏

From:http://francesl.blog.sohu.com/37880509.html

Once Upon A Time

by Richard Lambert,Andrew Rilstone,& James Wallis

++++++++++++++

介绍

Once Upon A Time是一款玩家运用带有童话中典型元素的纸牌一起创造故事的游戏。一个玩家作为故事叙述者,运用她手中牌的要素来创造一个故事。她会试图把故事线索引向她手中的结局。其他玩家要努力运用自己的牌去打断她并成为新的故事叙述者。游戏的目的在于玩家能够度过一段欢乐的时光,并且讲述一个很棒的故事。当一个玩家首先用光她所有的牌,然后用她的结局卡结尾,她就是赢家。

++++++++++++++

玩法描述

第一位故事讲述者开始讲述一个故事。每当她提到了一个她牌中的元素,她将这张牌正面朝上放在桌上。如果故事讲述者在她的故事中提到了一个其他玩家的牌中的元素,那么那名玩家可以打断她并接过这个故事。(还有一些允许玩家在其它时间打断故事讲述者的特殊纸牌)当一名玩家通过把她的所有牌包含进故事中的方法出光了自己的牌,她可以使用她的”从此永远幸福”牌并赢得这个游戏。

++++++++++++++

纸牌

游戏中有两种纸牌:”很久很久以前”牌(或者叫做”讲故事牌”)和”从此永远幸福”牌(或者叫做”结局牌”)。每位玩家手中都有一张从此永远幸福牌和几张很久很久以前牌。

“很久很久以前”牌

每张讲故事牌上画有一个人物、场所或者将出现在你故事里的某样东西的图像。它们被分为五组:

角色—-故事涉及到的人物或者生灵(如”王后”或”狼”)。
物品—-故事描述中重要的物件(如”剑”或”法术”)。
场所—-角色在故事中将拜访的地点(如”宫殿”或者”森林”)。
形态—-描绘故事中角色、处所和物品的方式(如”高兴”或”装模作样”)。
事件—-故事中发生在角色身上的一些事(如”一场争论”或者”人们碰面”)

每张牌都清楚的标明了它的组名;并且有一个图标表示这种组别。

还有一些特殊的很久很久以前牌叫做”打断”牌。

你可以像普通讲故事牌一样运用打断牌:它们各自包含了一个故事要素,并且各属于五个组别之一。你也可以以一种特殊的方式运用它们:当故事讲述者出牌以后打断她。过一会儿将对此加以说明。

“从此永远幸福”牌

每张”从此永远幸福”牌包含了一个童话故事的可能的结尾。玩家们各自只能拿到这些纸牌中的一张,而且必须尽他们最大努力去讲述这个故事以使其达到这个结尾。

++++++++++++++

来玩这个游戏

发牌。每位玩家各自得到一张从此永远幸福牌和以下数目的很久很久以前牌,数目取决于有多少玩家参与其中:

2名玩家 10张牌每人
3名玩家 8张牌每人
4名玩家 7张牌每人
5名玩家 6张牌每人
6名或更多玩家 5张牌每人

决定谁是第一位故事讲述者。可以是最年长的玩家,最年轻的玩家,或者(作为留着胡子的游戏设计者们之间的惯例)胡子最长的玩家。或者每位玩家抽出一张很久很久以前卡,字母顺序最靠前(不考虑”A”和”The”)的玩家先讲。我们建议游戏的持有者决定用哪种方法,并且你们在这个夜晚接下来的时间内坚持同一种方法。

被选择为故事讲述者的玩家开始讲故事。她可以用她喜欢的任何方式来讲这个故事,并且不被她手中的牌所限制。每当她提到一个包含在她的牌中的元素,她可以打出这张牌,把它正面朝上放在桌上。

每张卡片应该以可以区分的词句的方式被提到,而且应该对故事来说具有某种重要性。如果没有任何理由只是为了你能出牌而提到某种事物是不可接受的。

例子

故事讲述者:”…’你永远不可能杀死邪恶的国王,’她说,’因为他住在一个位于遥远的群山之巅的不可毁灭的宫殿里…'”

在这里你可以打出”宫殿”牌(或者”国王”,或者”山”)因为这座宫殿是这个故事中的一个重要部分。

故事讲述者:”…于是他出发去寻找那座山。在路上,他看到许许多多的村庄,这些村庄里有马、牧羊女、继母和青蛙以及许多奇怪的事物比如巨人、狼和会说话的长颈鹿。最后,他抵达了那座山…”

这位故事讲述者不能打出一张”马”、”牧羊女”、”继母”、”青蛙”、”巨人”、”狼”或者”这只动物能说话”。虽然这些东西也被提及了,但是它们对这个故事并不重要。

故事讲述者可以一直说下去,直到有人打断她为止。甚至一个故事讲述者在其他人成功打断她之前出完她所有的牌,结束了这个故事并且赢得游戏也是有可能的(虽然这极端困难)。

换人

如果故事讲述者愿意,她可以随时结束她的回合只要说一声”换人(Pass)。”一个换人的玩家必须从很久很久以前牌组中摸一张牌,同时从她手中丢弃一张牌。接下来故事讲述转移到她左边的玩家手中。

打断

其他玩家有两种方式来打断故事讲述者。

1:如果故事讲述者在她的故事中提到了事物在其他玩家手中的一张牌里,那名玩家可以打断她。
例如:

故事讲述者:”…于是她在森林中那颗巨大的橡树下睡着了…”

在这里,一个拥有”森林”牌的玩家可以打出它,打断故事讲述者,自己来继续这个故事。

不需要用精确的写在牌上的词语就可以打断故事讲述者。例如:

故事讲述者:”…于是国王爱上了伐木工的女儿[打出”两人坠入了爱河”牌]并与她结婚。一年零一天以后她生下了一个男婴…”

在这里一名手里有”王子”或”孩子”牌的玩家可以打出它并且打断叙述。一个婴儿是一个孩子,并且国王的儿子就是王子,即使故事叙述者并没有运用这两个确切的词语。

玩家不能提前预期故事叙述者还没有说到的地方:

故事叙述者:”…就在他踮着脚尖走在洞穴里的时候,他听到了一个巨大的、低沉的呼噜声…”

玩家不能用”怪物”牌打断这里,因为这个呼噜声可以是一头熊发出来的,或者是一个巫师,甚至是一条听起来像什么人打呼噜的地下河发出来的。

如果一个打断是否公平不是显而易见的,你们应该根据没有卷入争议的其他玩家举手表决来做出选择。

2:当故事叙述者打出一张牌,任何一名手中拥有一张与刚刚被打出的牌的牌组相同的打断牌的玩家可以打断她。

例如,”打断;任何物品”可以在故事叙述者打出一张”物品”卡的时候打出来。(注意:不允许玩家在故事讲述者在他的故事中提到一个物品时打断。打断卡只能用在故事讲述者出牌后。)

当故事讲述者被打断后,她的回合结束,她必须从很久很久以前牌组顶部摸一张额外的牌。打断她的玩家必须从她的故事中接着讲述下去。新的讲述者所叙述的每一件事必须延续一个故事讲述者讲述的感觉和故事线。

更改故事讲述者的其他方式

如果故事讲述者讲述停顿的时间超过五秒钟,她的回合结束,她必须摸一张牌,然后她左边的玩家成为故事讲述者。

如果故事讲述者开始漫无目的的闲扯;使故事变得没有意义;试图让一些愚蠢的事或者与前面矛盾的事情发生;那么她的回合结束,她必须摸一张牌,她左边的玩家成为故事讲述者。如果这种事情发生不是显而易见的,你们应该根据举手表决来做出选择。我们发现在实践中,大多数小组的成员会用他们最大的力气高喊”不!这样太蠢了!”

(重要提示:以上两条规则是为了鼓励大家讲述更为有趣和可信的故事,并确保游戏尽可能快速的进行。它们不应该被当作一种夺取即将获胜玩家故事控制权的策略;它们同样也不应该被用在打击年轻玩家或者不擅长流利表达的玩家)

如果有人试图打断并且这个打断被裁决为不正确的,失败的打断者要扔掉她用来打断的牌,并且从很久很久以前牌组中拿两张牌。

如果有两个人同时打断,那么第一名出牌的玩家打断成功并且成为新的故事讲述者。这种情况下,不惩罚打断失败的玩家。

结尾

当故事讲述者出完她所有的很久很久以前牌以后,她可以打出她的从此永远幸福牌来结束这个故事。如果这给故事带来了一个明白易懂和令人满意的结尾,那么这轮游戏和故事结束,打出结局牌的玩家获胜。

故事讲述者在打出她的从此永远幸福牌之前不能引入任何新的元素,不过她可以添加一两个句子来把她的结局牌和她的结尾连系起来。

如果其他玩家裁决这名故事讲述者的结局牌不能令人满意的或者有意义的结束整个故事,那么该玩家必须从从此永远幸福牌组中摸一张新的结局牌,并从很久很久以前牌组中摸一张故事牌。故事将转移给她左边的家伙。

(我们建议你们不要太严格的贯彻这条规则,特别是对待缺少经验或者年纪小的玩家的时候:只有当一个结尾明显的毫无意义的时候它才应该被推翻)

++++++++++++++

游戏示范

Tom,Cliff,Spike,Jessica,Amy和James在玩一局游戏。他们切好牌并决定Cliff来开始这个故事。

Cliff:”很久很久以前有个老婆婆…”

(打出”老婆婆”牌。)

“…老婆婆非常悲伤。她生活在一个穷困的国家里。那里有一位邪恶的国王…”

(打出”国王”牌。)

“…这位国王对人民课以重税。所有的人都希望有谁能来把国王赶走,但是王国内没有一个人有足够的勇气这样做。老婆婆决定自己出去寻找到一名英雄来拯救她,于是她开始一段漫长的旅行…”

(Spike打出”旅行”牌。他成为新的故事讲述者。Cliff拿走很久很久以前牌组最上面的牌,游戏继续。)

Spike:”她旅行了很长一段日子。直到有一天,她来到一个村子里…”

(打出”村庄”牌。)

“她四处询问,想看看村子里是否有一位英雄,但是村民们说他们听说过的唯一一名英雄住在这附近的一座山顶上。”

(打出”山”牌。)

“老婆婆爬上了那座山,在令人疲惫的几个小时后,到达了一座城堡跟前。她敲了敲大门…”

(Spike打出”门”牌。)

(Jessica接着打出了一张”任意物品”打断牌。因为门是一样物品,这是一次正确的打断。Spike拿走很久很久以前牌组最上面的牌,Jessica接过了这个故事。)

Jessica:”没有任何人来回应这敲门声,所以老婆婆往最近的窗户里张望。”

(打出”窗户”牌。)

“她看到一个男子坐在一张桌子旁边…”

(Tom试图用”人们碰面”牌来打断,但是其他玩家认为这两个人还没有真正的碰面。因此Tom扔掉他的牌并从很久很久以前牌组顶部摸了两张牌,Jessica继续。)

Jessica:”就像我正说着的,她往里看,看到一名男子坐在桌子旁边一动不动。她隔着窗户喊那名男子,但他没有反应。于是她推开了窗户,爬进房间去看那名男子出了什么事。就在她跳下窗台 的时候,一只青蛙从桌子底下跳了出来。让她惊讶的是,它冲着她开口说起话来…”

(打出”这只动物能说话”。)

“…并且告诉她:它曾经是桌子旁那名男子的仆人,但是被一名女巫变成了青蛙。同样的法术也把男子冰冻的结结实实。老婆婆思考了一阵子,决定…哎呀,我想不出她怎么决定的,我请求换人。”

(现在叙述权交给了坐在Jessica左边的Tom。Jessica扔掉一张她的牌,并从很久很久以前牌组中摸一张新的。)

++++++++++++++

规则变种

多结局

在这一模式下你们每人在游戏开始时得到两张从此永远幸福牌,你们可以选择任意一张来赢得游戏。对初学者来说这是一种不错的规则变种。如果有些玩家比其他玩家有经验的多,它也可以用来平衡游戏:给缺少经验的玩家两张结局牌来帮助他们。

更换结尾

如果你在讲故事时把控制权让给了你左边的玩家,你可以扔掉你的结局牌,并从结尾牌组顶部拿一张新牌。如果这么做,你必须从故事牌组顶部拿两张牌,而不是普通换人后的一张。你不能同时丢弃一张结局牌和一张很久很久以前牌。

交替开始游戏

像普通方式一样开局,但是由每次游戏手中剩牌数最多的玩家开始下一局游戏。这给那些不太自信的玩家或者手中的结局在游戏中早早就被排除掉的玩家一个在下次游戏开始就控制整个故事的机会。

 

圈里圈外 是个人奋斗还是公司上班

http://www.chinaz.com/Webmaster/Club/04152E002008.html

  最近听到很多站长都在说:”做完这个月就辞职,专心在家做站,争取的XX月内赚到多少多少”,同样的也会听到很多站长在说:”拿完google这个月的广告费,下个月去找份工作算了,个人站长孤独做站的日子实在太难熬”

  在家做全职站长,心酸苦乐谁人知?

  在家做全职,在别人的想象力是多么惬意的一件事情,睡觉睡到自然醒,想做什么就做什么,没有上司的压迫,没有同事之间的勾心斗角,没有请假,没有打卡,可以说天天都是星期天,时时刻刻都可以自由支配。

  可是烦恼也随之而来:太多闲散的生活导致做事没有计划,发现上个星期定出的任务一直到这个星期都没有完成,由于没有按时的休息,导致生物钟混乱,晚上睡不着,早上起不来,时间一长,胃病,肠道疾病等开始慢慢侵袭身体健康。

  长期对坐在电脑上,不仅眼睛视力急剧下降,而且长期的缺乏沟通又同样导致交流能力的下降,甚至很多在家做站的朋友,连门都不愿意走出去,可见心里压力之巨大。

  所以全职站长想工作,因为想摆脱这样的情况,宁愿被管也不希望被社会遗弃,宁愿收入少点也想更加的稳定,宁愿每天早起早睡跑公交,也不愿再昏睡在家里。

  公司上班族,身系网站心中急!

  在公司上班,有稳定的收入,有良好的工作环境,也同样有着体面的声誉和部门之间的配合,只要能很快适应下来,基本上持续的在公司做下去没有太大的问题,稳定并且没有太多变化,是公司上班族的最爱。

  但是对于有着网站的站长而言,上班的生活同样使他们焦躁不安,晚上到了12点肯定是要上床睡觉的,要不然精力上不能应付明天一天的工作,而在上班时间就连上QQ都要偷偷的左顾右盼,生怕有同事领导知道自己做网站做私活,而有时网站访问不了,但自己又外出做事,心里的烦躁是非常难受的。

  长期待在公司,资历是要熬的,收入是用指头都数的出来的,打卡,上班,处理文件,同事闲聊,大量的时间浪费在了一些毫无意义的事情上面,而产出的利润大部分装在了老板的口袋里,每月微薄的薪水和自己全日制的工作完全划不上等号的时候,上班族站长们不禁心里在说:”全职站长真好”

  不管是全职站长,还是上班族站长,其实都是一种生活方式,两者既有好处,同样也有不为人知的心酸一面,如果你处于交替考虑的时候,不妨多比较下,想要知道自己需要什么,是否做好了全职的准备或者上班的打算。

圈里圈外,可能永远都像围城里说的那样:”里面的人想出去,外面的人想进来”,婚姻是如此,做站亦是。

 

Online Sales Expected to Grow 17 Pct In 2008

Despite the bum economy, Internet retail sales will rise 16.6 % in 2008 to $204 billion, about the same rate of growth as in 2007, according to the latest annual study by Forrester Research. That’s way above the 3.5% growth in overall retail sales predicted for 2008 by the National Retail Federation. The biggest online categories: apparel (due to rise by $3.9 billion, or 17%), computers (up $3.2 billion, or 15%) and autos (up $2.5 billion, or 15%).

Of course, “e-tailing,” despite becoming more and more prevalent over the last few years, still accounts for less than 5% of the overall retail market in the U.S. The relatively small dollar base all but assures double-digit annual growth.