手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年09月的文章

直到我的膝盖中了一枪

原来我一直不知道这句话是什么意思,直到昨天去了游戏机店才发现原来是这样的。。。。
好象是说有一个游戏中NPC的台词是这个:原本我象你一样也是一个冒险家,直到我的膝盖中了一箭。原本这样的台词也不会太过引起人的注意,但这个游戏的编剧有点偷懒,于是几乎N多的NPC的台词就全是膝盖中了一箭。。。
然后,大家就很开心,开始有了这个中箭体。
google一下中箭体,百度百科果然已经有了介绍:http://baike.baidu.com/view/7027025.htm
原来,我还是理解错了,百科上是这么介绍的:

XML/HTML代码
  1. 至于这句对话为何会被玩家津津乐道,则要归功于国外视频网站YouTube。在该站某个视频中,一位外国美女使用小提琴演奏《上古卷轴5:天际》的主题曲,共有84位网友按了“dislike”键表示不喜欢这个视频,某网友见状,针对这84个不喜欢该视频的网友幽默地回复道:“有84个网友过去小提琴拉的和你一样好,直到他们的膝盖中了一箭。”膝盖中箭这句经典吐槽就此流行开来。  

大小: 112.69 K
尺寸: 430 x 376
浏览: 1257 次
点击打开新窗口浏览全图
中箭体的视频图片,可惜我们打不开油吐B

一些基于xmpp的server列表

在xmpp的官网上,有一个基于xmpp协议的服务器的列表,其中有一些是开源的,当然也有商业的。所以,如果你需要自己架设xmpp服务器,可以考虑搞一款开源的(可以用来做内部聊天室,内部联络方式,也不用担心这些帐号会遗失之类的。)
官网的地址在这里:http://xmpp.org/xmpp-software/servers/
懒得移步的人,可以直接看下面的地址,当然要注意其中哪些是商业版的哪些是开源的。
嗯,大部分都是java的。如果你用win服务器就太轻松了。

Name Platform(s) License Details
Apache Vysper Windows / Linux Apache License Version 2.0 mina.apache.org
Citidel Linux GPL3 citadel.org
CommuniGate Pro Linux / Mac OS X / Windows Commercial communigate.com
djabberd Linux GPL3 danga.com
ejabberd Linux / Mac OS X / Solaris / Windows GPL2 process-one.net
IceWarp Linux / Windows Commercial icewarp.com
iChat Server Mac OS X Commercial apple.com
in.jabberd Linux GPL2 inetdxtra.sourceforge.net
Isode M-Link Linux / Solaris / Windows Commercial isode.com
jabberd 1.x Linux GPL2 jabberd.org
jabberd 2.x Linux / Solaris / Windows GPL2 jabberd2.xiaoka.com
Jabber XCP Linux / Solaris / Windows Commercial jabber.com
Jerry Messenger Linux / Windows Commercial j-livesupport.com
Kwickserver Windows GPL kwickserver.info
Openfire Linux / Mac OS X / Solaris / Windows GPL igniterealtime.org
Open IM Linux BSD openim.techlab.smk.fr
Prosody Linux / Mac OS X / Windows MIT/X11 prosody.im
psyced Linux / Mac OS X / Windows GPL2 psyced.org
SoapBox Server Windows Commercial coversant.net
Oracle Communications Instant Messaging Server Linux / Solaris / Windows Commercial oracle.com
Tigase Linux / Solaris / Mac OS X / Windows GPL3 tigase.org
Vines Linux / Mac OS X MIT GetVines.com
Wokkel Linux / Solaris / Mac OS X MIT wokkel.ik.nu

Tags: java

yii CActiveRecord 中的一点小注意事项

纯笔记,在使用ActiveRecord的时候一点注意事项。
本来在处理缓存的时候想对一些数据做强制缓存的,但结果预想的目标和我不一样。
我的$cachekey = md5(serialize($model).$parameter);
然后在调用的时候发现$model对象中的一些信息都消失了。起初以为参数没有传递,但测试了一下之后发现全部正常,那问题出在哪里呢?
再一步步的调试,发现出在serialize后对象就变了。于是看了一下CActiveRecord的源码,果然发现了源码中有定义__sleep(),纠结啊。
看来以后要注意一下,不能随便把model给序列化了。

Tags: cactiverecord, __sleep, serialize

PHP调用不存在的类时自动创建相应类

在项目中,难免会在项目中调用一个不存在的类(偶尔,偶尔,当这个类的类名是程序生成的时候,偶尔会出现这种情况啦),在new 这个类时,都会直接报fatal错误,然后程序就终止了,怎么办?怎么避免这种情况发生?

注:下面的例子其实是指有autoload的情况下所触发的。如果没有autoload,也就相当于不会触发一个include文件的操作。直接就报FATAL错误了。而如果有autoload,则是报include文件的错误,这个时候才能被捕获,多谢神仙的指正

于是看手册set_error_handler,调用一个callback,处理完后,在这个方法里重新生成一个空类就OK了。看了一下手册上的例子

PHP代码
  1. <?php  
  2. // error handler function  
  3. function myErrorHandler($errno$errstr$errfile$errline)  
  4. {  
  5.     if (!(error_reporting() & $errno)) {  
  6.         // This error code is not included in error_reporting  
  7.         return;  
  8.     }  
  9.   
  10.     switch ($errno) {  
  11.     case E_USER_ERROR:  
  12.         echo "<b>My ERROR</b> [$errno] $errstr<br />\n";  
  13.         echo "  Fatal error on line $errline in file $errfile";  
  14.         echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";  
  15.         echo "Aborting...<br />\n";  
  16.         exit(1);  
  17.         break;  
  18.   
  19.     case E_USER_WARNING:  
  20.         echo "<b>My WARNING</b> [$errno] $errstr<br />\n";  
  21.         break;  
  22.   
  23.     case E_USER_NOTICE:  
  24.         echo "<b>My NOTICE</b> [$errno] $errstr<br />\n";  
  25.         break;  
  26.   
  27.     default:  
  28.         echo "Unknown error type: [$errno] $errstr<br />\n";  
  29.         break;  
  30.     }  
  31.   
  32.     /* Don't execute PHP internal error handler */  
  33.     return true;  
  34. }  

看了一下,结果,发现只有$errstr中才有类名出现,但还是文件名,难道我要用正则?又仔细看了一下手册,发现callback还有一个第五个参数

XML/HTML代码
  1. errcontext  
  2.     The fifth parameter is optional, errcontext, which is an array that points to the active symbol table at the point the error occurred. In other words, errcontext will contain an array of every variable that existed in the scope the error was triggered in. User error handler must not modify error context.   

 

输入第五个参数,原来,这是一个数组,如果我是类的话,里面就有className这个下标数组,直接就是类名了

同时还有一个很重要的问题,如果callback return false的话,会自动调用原来的出错处理。这  其实是影响我们的操作的。

最终代码如下:

PHP代码
  1. set_error_handler(function($errno,$errstr,$errfile,$errline,$clsname){  
  2.     if(isset($clsname['className'])&&$errno == 2&&!class_exists($clsname['className'])){  
  3.         $clsname = $clsname['className'];  
  4.         eval("class ".$clsname ." { static public function model(){return null;} }");  
  5.     }  
  6.     return true;  
  7. },7);  
  8. $result = mmmm::model();  
  9. restore_error_handler();  
  10.  

在最后一行恢复了原来的出错处理,不影响原先程序结构。

 

终于可以直接用了。

 

Tags: php, eval

ubuntu下最简单的更改时区

   一般情况下,我们刚装好的ubuntu时区都是US(默认语言为英文时),而且,它本身就是使用UTC格式作为标准时间格式,如果在Linux下运行程序,且在程序中指定了与系统不一样的时区的时候,可能会造成时间错误。 如果是Ubuntu的桌面版,可以直接在图形模式下修改时区信息,如果是Server版呢,则需要通过tzconfig来修改时区信息了。只是这样的方式会相对比较麻烦,
     使用方式 (如将时区设置成Asia/Chongqing):
sudo tzconfig
然后按照提示选择 Asia对应的序号,选完后会显示一堆新的提示—输入城市名,如Shanghai或Chongqing,最后再用 sudo date -s “” 来修改本地时间。

但事实上,并不需要这么复杂的处理,一个偷懒的方法就是,直接:cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime,用shanghai的时区文件覆盖localtime。灰常方便,这时候看一下date,时间是不是正确了?

Tags: ubuntu, 时区