跳槽 跳槽… 生活/$%^&@#幸福….
10月 16, 2006 on 10:54 pm | In 未分类 | No Comments
从去年从国企走人,我就老跟job打交道。
似乎今年到北京以后,我就一直遇到跳槽…
开始是自己。当然,偶们是相当保守的,在年初有也有三四家挖人的吧,不过我刚入IT行业,还不熟,不敢跳,再说我刚从国企走了才几个月,实在不想老换工作。总不能让人说我,从来没有安心工作过吧。
不过后来因为某些事,让我实在不爽。年轻气盛,收东西走人。其实我犹豫了很久,不过既然已经是这样,俺也不能回头,于是在农村老家呆了个把月之后,又到新公司上班了。
上班之后因为人手不齐,马上着手帮着招人,没料想,我本是去找人来上班的,居然碰到两人反过来挖我的,个别条件还特别诱人,哈哈。不过我自小就梦想着做老板,说实话,那一套糊弄员工的法子,鼓舞人心的话,我可能更会说。真的我是很缺钱,不过每个月多拿个千把两千块钱,治标不治本。如果老这样下去,我只能永远站在找工作的人群中间,也许薪水会越来越高,可是肯定会离自己的梦想越来越远。网上有人做噱头,嚷嚷什么年薪十万招什么,说真的,年薪十万很多么?北京一个技术主管不拿十万,太不正常了。有什么好嚷嚷呢(刚刚看了王翌的博客,他也在批)
平时没电话,今儿个晚上一下子来了好几个,最后一个是一个老朋友打来的,不知道怎么了,一个劲儿要我和他一起干。说发现了新大陆,很赚。我只好很委婉告诉他(我认为自己是尽力想委婉一些,他是不是这么认为就不一定了),这玩意儿早不新鲜了,不过最后看他这么难得雅兴,只好对他说,那您继续研究研究,要是确实可以咱俩一起干。。。(汗,这话我对三个哥们儿都说过了,没办法,这些哥们儿要创业是家里出钱,俺可是自己慢慢存血汗钱,对待项目哪能不认真?俺可不指望VC啊天使什么的,俺的MSN签名上说了,长翅膀的只是鸟人,不是天使,因为世上哪可能有天使?) 最后电话打完,我已经是饥肠噜噜。一看表,8:40,这电话真够长的,不过还好我有先见之明,用了免费接听的号。不知这哥们儿手机打长途多少钱一分钟啊。100把块钱的手机费了吧。
话说回来,现在的确是穷疯了,做梦都想钱。不知我的冒险精神还在不在。我会是一个不会放过机会的人吗?
PS:老婆大人又上网了,跟我说正在找工作,她也要跳槽了(汗,这才是主题),因为新制度已经让太多人受不了了,她们的同事都组织起来了拒领工资了(我的工资拖了好几天了,现在要放我面前,不管扣多少我也要了….好像已经扣了我几百块钱的税了吧),好像还要组织什么抗议活动。这年头,教育机构都能商业化,真是奇怪。真希望她能找一个北京这边的工作。两个人在一起,才是幸福。幸福,蒙昧以求的幸福啊。老大还写诗,好像有一首就是写什么幸福的。这人真怪,有个诗人朋友已经够****的了,居然还写诗。也怪,不然人怎么能开专栏?
select id,title from ** 与select * from **的速度测试。
10月 16, 2006 on 3:46 pm | In 未分类 | 1 Comment老是喜欢用select *,后来自己觉着不行,会影响速度,今天俺 做一个测试看看倒底有多大影响?
数据表结构:
- CREATE TABLE `xoops__art_text` (
- `text_id` int(11) NOT NULL auto_increment,
- `art_id` int(11) NOT NULL default '0',
- `text_title` varchar(255) NOT NULL default '',
- `text_body` longblob,
- PRIMARY KEY (`text_id`),
- KEY `art_id` (`art_id`)
- )
测试文件代码:
- <style type="text/css">
- div{
- border:1px solid black;
- background-color:#888;
- height:20px;
- margin-left:30px;
- display:inline;
- align:left;
- text-align:right;
- }
- </style>
- <?php
- function test(){
- $dbserver="localhost:3306";
- $dbuser="testuser";
- $dbpass="testuser";
- $dbname="test";
- $max=100;
- $connection=mysql_connect($dbserver,$dbuser,$dbpass);
- mysql_select_db($dbname);
- $sqls=array();
- $sqls[]="select text_id,cateid from text limit 100";
- $sqls[]="select text_id,cateid,text_title from text limit 100";
- $sqls[]="select text_id,cateid,text_title,text_body from text limit 100";
- $time1=new timer();
- $i=0;
- foreach($sqls as $sql)
- {
- $time1->reset();
- for($j=0;$j<$max;$j++)
- $rs=mysql_query($sql);
- $times[$i]=$time1->tick();
- if($times[$i]>$max) $max=$times[$i];
- $i++;
- }
- print_r($times);
- $texts=array();
- $texts[]="method a:";
- $texts[]="method b:";
- $texts[]="method c:";
- echo "<br/>";
- echo "max:$max;";
- echo "<br/>";
- $i=0;
- foreach($times as $time)
- {
- echo $texts[$i++];
- echo "<div id=bar_$id style='width:".(($time/$max)*780)."px;'> ";
- echo $time."ms ";
- echo "</div><br/>";
- }
- }
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- test();
- class timer
- {
- var $_start;
- var $_current;
- function timer()
- {
- /**
- 这是记录下开始操作时的时间。
- */
- $this->_start = array_sum(explode(' ', microtime()));
- }
- function tick()
- {
- $this->_current = round((array_sum(explode(' ', microtime()))-$this->_start)*1000, 0);
- return $this->_current;
- }
- function reset()
- {
- $this->timer();
- }
- }
- ?>
测出来的一组结果:
- method a: 79ms
- method b: 79ms
- method c: 1010ms
相比之下,当用了select * 之后,只多取了一个text/longblob类型的字段,整个时间相差了十几倍!
所以,以后写代码,俺 还是要勤快一点,用select id,name,title 而不能用select *.那样太浪费资源了.
如何打造一个您自己的输入法……….
10月 14, 2006 on 1:47 am | In 未分类 | No Comments今天在公司实在弄得郁闷了,下了一个输入法,可是也很郁闷,因为那个输入法说的是超级牛叉,可是带流氓软件,俺就我喜欢了。
狠狠之余,想,俺也是一个编程人员啊,俺咱个,就不能自己写一个输入法呢?
于是乎,马上行动,到网上找相关资料,呵,网上资料还真我少,不过可惜的是,没有那么让人满意的。
就在俺一米六二大侠要放弃的时候,忽然眼前一亮,看到了一个东西:输入法生成器。这是一个什么东东?难不成是一个可以做我自己的输入法的东东?一米六二在心里想。赶紧去看看去。不过快要上班了,一米大侠只好再等到下班再说。
下班回家,马上迫不及待地打开电脑,看一下这是一个虾米东东。经过一米大侠灰常灰常辛苦地工作,终于知道是怎么回事了。首先要弄一个词库。这个很easy的说啦。一米大侠马上去网上屁颠屁颠地去下了一个。哈,一个三M的大文件,这个词库这下够大了吧。哈哈。
按照说明一看,不对啊,人家要的是汉字在前,编码在后,要按:
阿a
啊a
这样的顺序去排序。可是俺下的是编码在前,汉字在后的,这可不行。得写个程序去换。用什么呢?perl是一个很不错的选择的啊,可是俺没有。VB俺也是相当地熟练啊,可是俺又已经抛弃了这个老朋友。那。。。。 OK,用PHP。俺一米大侠不是一向自称PHP高手吗。好办!
然后又鼓岛了好一阵子(此处略去N多文,总之是用来形容俺做的灰常灰常的辛苦的),俺把这个词库文件整理成了汉字在前编码在后一行行分开的格式了。
现在可以了吧?
一米大侠抱着灰常灰常激动的心,那是何等激动的心情啦,简直就是去见网友MM的那种激动啊(流口水中。。。),打开C:\Program Files\Windows NT\Accessories\imegen.exe,然后打开俺刚才整理好的文件,咦,提示俺没有TEXT字段?
噢,回头看了看教程,文件应该是这样的TXT文件:
- [Description]
- Name=一米六二输入法
- MaxCodes=12
- MaxElement=1
- UsedCodes=abcdefghijklmnopqrstuvwxyz
- WildChar=?
- NumRules=3
- [Rule]
- ca4=p10+p20+p30+p40
- ce2=p10+p20
- ce3=p10+p20+p30
- [Text]
- 工a
- 式aa
- 工aaa
- 工aaaa
- 工期aaad
- 黄花菜aaae
- ....
偶的文件中没有前面的[Description]和后面的[Text]。。。偶马上就加上了。
再打开。。。。 哗,生成了,可是没有提示俺录入了多少个记录啊?再看生成的MB文件,哇靠,居然只有1K,肯定有古怪!俺上琢磨啊,下琢磨啊,还是没有琢磨出来。只好打开网上教程给的文件,这一打开不要紧,俺的眼神老是偷偷看人家MM,是早已经火眼金睛了,一下就发现,俺这文件是GB2312编码的,人家是Unicode的!
OK,Now these is the Problem.俺马上用Editplus来转码,就是打开,然后另存为… 存的时候选一下编码为Unicode.
再用Imegen打开,这下就识别了信息,在嘎吱嘎吱地读了….
俺心里可高兴了..
不过没多久,又提示我:0X75*******内存不可读.然后程序就挂了。这个警告俺是常见,VC程序老见到,一般是写程序时用错指针了才会出来。可这imeGen是MS的作品啊,不会这和弱智的!
偶是相当地泄气,后果那是相当地严重。不行,俺可不能就这么投降。
偶先弄一个只有一个字的字库,试试看,可以,生成了输入法。
再加了几行,也可以。这时的输入法虽然也叫一米六牌,可是只有几个字,还是让人不满意的。
于是这次有加了好几百行,也行。
于是几百行几百行地加,终于被偶加到67576行的时候,发现问题了。
哈哈,65576,好像这个数字俺深有印象呢。好像是C语言中整型的边界啊。
那这俺没法子了,人家输入法编辑器最多只能容忍你的词库有这么条记录了。
俺又想了想,还是不爽。俺可以构造一个最精洁的词库啊。于是,去Google一下。
功夫不负有心人,Google没让我们风流倜傥的玉树临风的一米六二失望,没多久就down了三个词库,都很小,加起来刚5万多条记录,比较合适。一个是拼音词库,一个是五笔词库,一个是输英文打汉字的词库。俺马上把这三个文件用php处理了一下,粘到了一起,排序,再生成,哈,It’s Wonderful!
这个输入法,那是灰常灰常地酷啊,您要想打出”文件”两个字,可以输入wenjian,也可以输入”file”直接通过英文得到中文,也可以用五笔,打yygy出”文”字,打wrh出“件”字。
唯独不爽的是,毕竟不是自己编程处理的,所以窗口处理这个没法子插手,不然,嘿嘿……
俺坚持不转载,所以点评一下..一段测试php的Single quote,double quote,heredoc,(s)printf的速度的代码,牛*的很.
10月 12, 2006 on 9:59 pm | In 未分类 | 1 Comment首先看记时的,我只用了$times这样一个数组,看看人家是这么用的,这就叫差距:
- class timer
- {
- var $_start;
- var $_current;
- function timer()
- {
- /**
- 这是记录下开始操作时的时间。
- */
- $this->_start = array_sum(explode(' ', microtime()));
- }
- function tick()
- {
- /**
- 记下操作结束时间并算出当前耗用的时间。我只用了time函数,人老外用了microtime,并且用了array_sum(explode(' ', microtime())
- 这么一个优雅的写法。让人脸红...
- */
- $this->_current = round((array_sum(explode(' ', microtime()))-$this->_start)*1000, 0);
- return $this->_current;
- }
- function reset()
- {
- $this->timer();
- }
- }
?>
哈,看出来人家的水平了吧…
我开始测试时也没想到过了客户端浏览器解析HTML时会带来的可用内存容量的变化可能会导致服务器端的速度变化,因此我做了send to buffer下的测试,人家老外就不一样,用了一个超级无比绝*简单的方法解决了:人用了html中的来搞定,把所有输出内容用这个玩意儿包含起来,不就不会让浏览器解析了么?所以以后不要鄙视专写HTML页的人了,人也是相当有用的!
注:我后来也做了测试,结果跟老外的是一样的,俺今天没有泡MM了,看了下代码,还是发现了问题所在了。附:老外测试结果:
(但是很奇怪的是,偶的测试中,单引号终于没有双引号快… 个鸟人.我的系统是win2003.偶用Single Quote 来输出带变量替换的字符串到buffer时,用了超长时间,不知道为什么…)

一个测试PHP效率的代码,检测Single Quote,Double Quote,HereDoc的效率
10月 11, 2006 on 11:18 pm | In 未分类 | 2 Comments- <?php
- /**
- * fileoper是一个文件操作类
- *
- *<pre> 目前有writeover,readover,mkdir三个方法。
- *其三个方法均是静态方法。注意mkdir可以
- * 逐级地建目录,这是与php自带的mkdir不
- * 同的地方。所有对文件的操作都应该通过
- * 这个对象进行,这样可以通过改写这个对
- * 象实现对文件IO过程的日志。</pre>
- *
- *@package authorcn
- *@subpackage common
- *@author renlu <helloasp@hotmail.com>
- *@link http://www.162cm.com
- *@example FILEOper::writeover("d.txt","hello,this is a test.")
- *@name fileoper
- */
- class fileoper {
- /**
- *读取文件内容。
- *@param $filename 给定的文件名.
- *@return string(文件内容)
- *@access private
- *@static
- */
- function readover($filename)
- {
- if(file_exists($filename))
- {
- $file=fopen($filename,"r");
- flock($file,LOCK_SH);
- $filedetail=fread($file,filesize($filename));
- fclose($file);
- return $filedetail;
- }
- else
- return "";
- }
- /**
- *写入数据函数
- *@param $fileanme 文件名称
- *@param $data 文 件内容
- *@param $method 已经不再用了.
- *@access private
- *@static
- */
- function writeover($filename,$data,$method="w")
- {
- $file=fopen($filename,$method);
- flock($file,LOCK_EX);
- $filedetail=fwrite($file,$data);
- fclose($file);
- return $filedetail;
- }
- /**
- * 递归建立一个目录
- *
- * @param string $dirstring 目录名
- */
- function mkdir($dirstring)
- {
- $dirstring=str_replace("\\","/",$dirstring);
- $arr=explode("/",$dirstring);
- $temparr=array();
- for($i=0;$i<sizeof($arr);$i++)
- {
- $temparr[]=$arr[$i];
- $path=implode("\\",$temparr);
- if(!is_dir($path))
- {
- echo $path;
- mkdir(implode("\\",$temparr));
- }
- }
- }
- function deletefile($file)
- {
- unlink($file);
- }
- function file_exists($file)
- {
- return file_exists($file);
- }
- function is_file($file)
- {
- return is_file($file);
- }
- /**
- * 将内容添加到一个文件的结尾
- *
- * @param string $filename 文件名
- * @param string $data 数据
- */
- function appendfile($filename,$data)
- {
- $file=fopen($filename,"a+");
- flock($file,LOCK_EX);
- $filedetail=fwrite($file,$data);
- fclose($file);
- return $filedetail;
- }
- }
- function returnNull()
- {
- return "";
- }
- ob_start("returnNull");
- $time[]=time();
- $total=1000;
- for($i=0;$i<$total;$i++)
- {
- echo "自在不成人,成人不自在。
- 能用钱解决的问题,都不是问题。但没有钱是最大的问题。
- 做什么也不做官。
- 缺什么都不能缺梦想。
- 与成功人共事,朝理想飞奔。
- 我肯定会成功的。
- 与员工同分享。10亿的百分之一也有1000万,10万的100%也只有10万。所以想办法挣10亿,而不是100%---愿与员工分享,是企员能做大的前提条件。
- 结识一批朋友,哪怕目前不能帮你任何忙。
- 人无完人,容人之过,知人善任,方可成事。
- 做梦也想成功的人,终会成功。
- 成大事者,集勇气、运气、耐心、平常心于一身也。
- 多走一小步,进步一大步。
- 为商者,利至上。然无客户至上,亦无利也。
- 先招忠士,再养悍将。
- 尝试每天进步一小步。
- 制定目标,并努力实现。
- \"晚上我要学会自己做饭\",同\"我要在这个月学会开车\",\"我要在明年升到销售总监的职位\"一样,也是一个目标。目标都应该努力实现。否则,修改您的目标。
- 重要的事先做,感兴趣的事是要多花时间做。
- 每天总结自己。
- 学会奉承你的手下,激励你的手下,引导你的手下,信任你的手下。
- 马上动手行动吧。不要拖延。
- 做之前先想好,做之后还要想。
- 给员工发足够的薪水。发不出薪水,再有前景的企业都留不住人。除非你的员工实在没地方去。
- 让员工感觉受到重视。
- 目标应该分段去实现。
- 要会说,也要做。有的人会做,但也要会说。
- 万一有一天你成功了,记住:不是因为你比别人更聪明,更有能力,可能只是你有一批能力不错的员工,还可能只是因为老天瞎了眼,把五百万大奖错发给你了。
- 活到老,学到老。想一切人学习,当然尽可能挑更成功的人学习。
- 告诉自己:我很愉快。我很有信心做好这件事。
- 培养自己的自制能力。
- 人往往败给自己。
- 学会养一些会偷懒的人。
- 要有心机。要学坏。学会拍马屁,学会给人戴高帽子。
- 人不可能无缺点。学会利用他人的缺点,总有突破口。
- 洞察一切,推测未来。虽然你不是姓诸葛的,也要去学着这么做。";
- }
- $time[]=time();
- for($i=0;$i<$total;$i++)
- {
- echo '自在不成人,成人不自在。
- 能用钱解决的问题,都不是问题。但没有钱是最大的问题。
- 做什么也不做官。
- 缺什么都不能缺梦想。
- 与成功人共事,朝理想飞奔。
- 我肯定会成功的。
- 与员工同分享。10亿的百分之一也有1000万,10万的100%也只有10万。所以想办法挣10亿,而不是100%---愿与员工分享,是企员能做大的前提条件。
- 结识一批朋友,哪怕目前不能帮你任何忙。
- 人无完人,容人之过,知人善任,方可成事。
- 做梦也想成功的人,终会成功。
- 成大事者,集勇气、运气、耐心、平常心于一身也。
- 多走一小步,进步一大步。
- 为商者,利至上。然无客户至上,亦无利也。
- 先招忠士,再养悍将。
- 尝试每天进步一小步。
- 制定目标,并努力实现。
- "晚上我要学会自己做饭",同"我要在这个月学会开车","我要在明年升到销售总监的职位"一样,也是一个目标。目标都应该努力实现。否则,修改您的目标。
- 重要的事先做,感兴趣的事是要多花时间做。
- 每天总结自己。
- 学会奉承你的手下,激励你的手下,引导你的手下,信任你的手下。
- 马上动手行动吧。不要拖延。
- 做之前先想好,做之后还要想。
- 给员工发足够的薪水。发不出薪水,再有前景的企业都留不住人。除非你的员工实在没地方去。
- 让员工感觉受到重视。
- 目标应该分段去实现。
- 要会说,也要做。有的人会做,但也要会说。
- 万一有一天你成功了,记住:不是因为你比别人更聪明,更有能力,可能只是你有一批能力不错的员工,还可能只是因为老天瞎了眼,把五百万大奖错发给你了。
- 活到老,学到老。想一切人学习,当然尽可能挑更成功的人学习。
- 告诉自己:我很愉快。我很有信心做好这件事。
- 培养自己的自制能力。
- 人往往败给自己。
- 学会养一些会偷懒的人。
- 要有心机。要学坏。学会拍马屁,学会给人戴高帽子。
- 人不可能无缺点。学会利用他人的缺点,总有突破口。
- 洞察一切,推测未来。虽然你不是姓诸葛的,也要去学着这么做。 ';
- }
- $time[]=time();
- for($i=0;$i<$total;$i++)
- {
- print <<< EOT
- 自在不成人,成人不自在。
- 能用钱解决的问题,都不是问题。但没有钱是最大的问题。
- 做什么也不做官。
- 缺什么都不能缺梦想。
- 与成功人共事,朝理想飞奔。
- 我肯定会成功的。
- 与员工同分享。10亿的百分之一也有1000万,10万的100%也只有10万。所以想办法挣10亿,而不是100%---愿与员工分享,是企员能做大的前提条件。
- 结识一批朋友,哪怕目前不能帮你任何忙。
- 人无完人,容人之过,知人善任,方可成事。
- 做梦也想成功的人,终会成功。
- 成大事者,集勇气、运气、耐心、平常心于一身也。
- 多走一小步,进步一大步。
- 为商者,利至上。然无客户至上,亦无利也。
- 先招忠士,再养悍将。
- 尝试每天进步一小步。
- 制定目标,并努力实现。
- "晚上我要学会自己做饭",同"我要在这个月学会开车","我要在明年升到销售总监的职位"一样,也是一个目标。目标都应该努力实现。否则,修改您的目标。
- 重要的事先做,感兴趣的事是要多花时间做。
- 每天总结自己。
- 学会奉承你的手下,激励你的手下,引导你的手下,信任你的手下。
- 马上动手行动吧。不要拖延。
- 做之前先想好,做之后还要想。
- 给员工发足够的薪水。发不出薪水,再有前景的企业都留不住人。除非你的员工实在没地方去。
- 让员工感觉受到重视。
- 目标应该分段去实现。
- 要会说,也要做。有的人会做,但也要会说。
- 万一有一天你成功了,记住:不是因为你比别人更聪明,更有能力,可能只是你有一批能力不错的员工,还可能只是因为老天瞎了眼,把五百万大奖错发给你了。
- 活到老,学到老。想一切人学习,当然尽可能挑更成功的人学习。
- 告诉自己:我很愉快。我很有信心做好这件事。
- 培养自己的自制能力。
- 人往往败给自己。
- 学会养一些会偷懒的人。
- 要有心机。要学坏。学会拍马屁,学会给人戴高帽子。
- 人不可能无缺点。学会利用他人的缺点,总有突破口。
- 洞察一切,推测未来。虽然你不是姓诸葛的,也要去学着这么做。
- EOT;
- }
- $time[]=time();
- for($i=0;$i<$total;$i++)
- {
- echo sprintf("自在不成人,成人不自在。
- 能用钱解决的问题,都不是问题。但没有钱是最大的问题。
- 做什么也不做官。
- 缺什么都不能缺梦想。
- 与成功人共事,朝理想飞奔。
- 我肯定会成功的。
- 与员工同分享。10亿的百分之一也有1000万,10万的100%也只有10万。所以想办法挣10亿,而不是100%---愿与员工分享,是企员能做大的前提条件。
- 结识一批朋友,哪怕目前不能帮你任何忙。
- 人无完人,容人之过,知人善任,方可成事。
- 做梦也想成功的人,终会成功。
- 成大事者,集勇气、运气、耐心、平常心于一身也。
- 多走一小步,进步一大步。
- 为商者,利至上。然无客户至上,亦无利也。
- 先招忠士,再养悍将。
- 尝试每天进步一小步。
- 制定目标,并努力实现。
- \"晚上我要学会自己做饭\",同\"我要在这个月学会开车\",\"我要在明年升到销售总监的职位\"一样,也是一个目标。目标都应该努力实现。否则,修改您的目标。
- 重要的事先做,感兴趣的事是要多花时间做。
- 每天总结自己。
- 学会奉承你的手下,激励你的手下,引导你的手下,信任你的手下。
- 马上动手行动吧。不要拖延。
- 做之前先想好,做之后还要想。
- 给员工发足够的薪水。发不出薪水,再有前景的企业都留不住人。除非你的员工实在没地方去。
- 让员工感觉受到重视。
- 目标应该分段去实现。
- 要会说,也要做。有的人会做,但也要会说。
- 万一有一天你成功了,记住:不是因为你比别人更聪明,更有能力,可能只是你有一批能力不错的员工,还可能只是因为老天瞎了眼,把五百万大奖错发给你了。
- 活到老,学到老。想一切人学习,当然尽可能挑更成功的人学习。
- 告诉自己:我很愉快。我很有信心做好这件事。
- 培养自己的自制能力。
- 人往往败给自己。
- 学会养一些会偷懒的人。
- 要有心机。要学坏。学会拍马屁,学会给人戴高帽子。
- 人不可能无缺点。学会利用他人的缺点,总有突破口。
- 洞察一切,推测未来。虽然你不是姓诸葛的,也要去学着这么做。 ");
- }
- $time[]=time();
- $str="结果:\n";
- $str.=join("\n",$time);
- fileoper::writeover("do.txt",$str);
- ?>
检测结果:
以下分别为几次测试结果:
- 结果:
- 1160578850
- 1160578851
- 1160578855
- 1160578862
- 1160578863
这次双引号用了1秒,单引号用了4秒,hereDoc用了7秒,sprintf用了1秒。
- 结果:
- 1160578710
- 1160578711
- 1160578715
- 1160578722
- 1160578722
这次双引号用了1秒,单引号用了4秒,hereDoc用了7秒,sprintf用了0秒(我想是不到1秒)。
- 结果:
- 1160578773
- 1160578775
- 1160578779
- 1160578786
- 1160578787
这次双引号用了2秒,单引号用了4秒,hereDoc用了7秒,sprintf用了1秒。
三次汇总,是sprintf最快,heredoc最慢。双引号要比单引号快,这个我想不通,不知道为什么?明明双引号还要做替换,为什么却还更慢?
但是根据PHP.net上的结果,应该是单引号最快,双引号其次,heredoc第三,sprintf最慢。是不是我的代码有问题?谁能告诉我一下?
很丢人的说 俺用错了sprintf….. 怪不得那么快.关于sprintf的取消…
我后来查了一下,确实是双引号最快,单引号其次,Heredoc最慢。是我当时记错了。
wordpress的deskor_mywords插件
10月 8, 2006 on 3:14 pm | In 未分类 | No Comments这个其实很简单,我只是把hello插件拿过来稍稍改了改。
deskor_mywords.php文件需要上传到wp-content/plugins/目录下。内容如下:
- <?php
- function deskor_mywords() {
- $words = "自在不成人,成人不自在。
- 能用钱解决的问题,都不是问题。但没有钱是最大的问题。
- 做什么也不做官。
- 缺什么都不能缺梦想。
- 与成功人共事,朝理想飞奔。
- 我肯定会成功的。
- 与员工同分享。10亿的百分之一也有1000万,10万的100%也只有10万。所以想办法挣10亿,而不是100%---愿与员工分享,是企员能做大的前提条件。
- 结识一批朋友,哪怕目前不能帮你任何忙。
- 人无完人,容人之过,知人善任,方可成事。
- 做梦也想成功的人,终会成功。
- 成大事者,集勇气、运气、耐心、平常心于一身也。
- 多走一小步,进步一大步。
- 为商者,利至上。然无客户至上,亦无利也。
- 先招忠士,再养悍将。
- 尝试每天进步一小步。
- 制定目标,并努力实现。
- \"晚上我要学会自己做饭\",同\"我要在这个月学会开车\",\"我要在明年升到销售总监的职位\"一样,也是一个目标。目标都应该努力实现。否则,修改您的目标。
- 重要的事先做,感兴趣的事是要多花时间做。
- 每天总结自己。
- 学会奉承你的手下,激励你的手下,引导你的手下,信任你的手下。
- 马上动手行动吧。不要拖延。
- 做之前先想好,做之后还要想。
- 给员工发足够的薪水。发不出薪水,再有前景的企业都留不住人。除非你的员工实在没地方去。
- 让员工感觉受到重视。
- 目标应该分段去实现。
- 要会说,也要做。有的人会做,但也要会说。
- 万一有一天你成功了,记住:不是因为你比别人更聪明,更有能力,可能只是你有一批能力不错的员工,还可能只是因为老天瞎了眼,把五百万大奖错发给你了。
- 活到老,学到老。想一切人学习,当然尽可能挑更成功的人学习。
- 告诉自己:我很愉快。我很有信心做好这件事。
- 培养自己的自制能力。
- 人往往败给自己。
- 学会养一些会偷懒的人。
- 要有心机。要学坏。学会拍马屁,学会给人戴高帽子。
- 人不可能无缺点。学会利用他人的缺点,总有突破口。
- 洞察一切,推测未来。虽然你不是姓诸葛的,也要去学着这么做。";
- $word = explode("\n", $words);
- //echo "hello kitty!";
- //echo $words[];
- echo $word[mt_rand(0,count($word))] ;
- }
- ?>
然后在插件管理中激活他。再在主题编辑器中,相应需要显示的地方,写上:
- <?php
- if(function_exists("deskor_mywords"))
- deskor_mywords();
- ?>
我的风格是dent-10,所以我改了wp-content/themes/dent-10/index.php这个文件。
ok,大功告成。当然,您可以加一些风格点缀。
一个显示最新评论的wordpress插件
10月 6, 2006 on 12:27 pm | In 未分类 | No Comments用法:将deskor_comments.php传到wp-contents/plugins目录,然后在插件管理中激活。
在需要显示最新评论的地方,比发themes/你的风格名称/sitebar.php中加:
- <?php
- /**
- 25是调用最新评论的条数。
- 先判断一下是否已经包含了插件文件,函数是否存在,免得出错。
- */
- if(function_exists ("get_deskor_comments"))
- get_deskor_comments(25);
- ?>
deskor_comments.php文件的内容:
- <?php
- /*
- Plugin Name: deskor_comments
- Plugin URI: http://www.162cm.com
- Description: 一个显示最新评论的插件<br/>调用方法:在需要显示的地方写上:<?php get_deskor_deskor_comments(10);?>
- Author: renlu xu <helloasp@hotmail.com>
- Version: 1.0
- Author URI: http://www.162cm.com
- */
- function get_deskor_comments($count=10)
- {
- global $wpdb;
- $res=$wpdb->get_results("SELECT * FROM $wpdb->comments order by comment_ID DESC limit ".$count);
- foreach($res as $row)
- {
- echo "<li>";
- echo "<a href=\"".get_permalink($row->comment_post_ID)."#comment-".$row->comment_ID."\">[";
- echo $row->comment_author."]says(".xoops_substr($row->comment_content,0,45);
- echo ")</a></li>";
- }
- }
- /**
- 截取函数,从xoops中挪过来的.
- */
- function xoops_substr($str, $start, $length, $trimmarker = '...')
- {
- if (function_exists('mb_internal_encoding') && @mb_internal_encoding(_CHARSET)) {
- $str2 = mb_strcut( $str , $start , $length - strlen( $trimmarker ) );
- return $str2 . ( mb_strlen($str)!=mb_strlen($str2) ? $trimmarker : '' );
- }
- // phppp patch
- $DEP_CHAR=127;
- $pos_st=0;
- $action = false;
- for ( $pos_i = 0; $pos_i < strlen($str); $pos_i++ ) {
- if ( ord( substr( $str, $pos_i, 1) ) > 127 ) {
- $pos_i++;
- }
- if ($pos_i<=$start) {
- $pos_st=$pos_i;
- }
- if ($pos_i>=$pos_st+$length) {
- $action = true;
- break;
- }
- }
- return ($action) ? substr( $str, $pos_st, $pos_i - $pos_st - strlen($trimmarker) ) . $trimmarker : $str;
- }
- ?>
通过XOOPS模块整合Mu.wordpress的完整方案(一)
10月 6, 2006 on 3:52 am | In 未分类 | No Comments1.先建一个xoops块:
目录为proxy,以下有
index.php,header.php,footer.php,newblog.php,xoops_version.php
先看xoops_version.php
- <?php
- $modversion['name'] = "博客";
- $modversion['version'] = 1.00;
- $modversion['description'] = "与wpmu交互的模块";
- $modversion['author'] = "";
- $modversion['credits'] = "wpMu proxy";
- $modversion['help'] = "system.html";
- $modversion['license'] = "GPL see LICENSE";
- $modversion['official'] = 1;
- $modversion['image'] = "images/system_slogo.png";
- $modversion['dirname'] = "proxy";
- $modversion['hasAdmin'] = 1;
- $modversion['adminindex'] = "admin.php";
- $modversion['adminmenu'] = "menu.php";
- // Templates
- $modversion['templates'][1]['file'] = 'newblog.html';
- $modversion['templates'][1]['description'] = '';
- $modversion['hasMain'] = 1;
- ?>
2.思路:
用户在点击菜单时,系统会自动判断用户时否已经拥用了WordpressBlog.如果没有,则会显示设定Wordpress的表单。
文件index.php
- <?php
- require_once("header.php");
- $sql="select * from wp_users where user_login='".$xoopsUser->getVar("uname")."'";
- $rs=$xoopsDB->query($sql);
- $rows=$xoopsDB->getRowsNum($rs);
- if($rows)
- {
- require_once("class/xoops_mu.php");
- $xoops_mu=new xoops_mu();
- $xoops_mu->userLogin($xoopsUser->getVar("uname"),md5($xoopsUser->getVar("pass")),time()+365*24*3600,"/wpmu/",".newag.com.cn");
- header ("location:http://".$xoopsUser->getVar("uname").".newag.com.cn/wpmu/");
- }
- else
- {
- $xoopsOption["template_main"]="newblog.html";
- $xoopsTpl -> assign("email", $xoopsUser->getVar("email"));
- }
- require_once("footer.php");
- ?>
3.如果用户已经有了blog,那会自动转向到blog中。
如果没有,是调的一个模板,这个模板询问用户是否要创建一个Wordpress博客。用户选择开通后,会进入newblog.php
newblog.php代码:
- <?php
- require_once("header.php");
- if(file_exists("class/sqlgenerator.php"))
- require_once("class/sqlgenerator.php");
- require_once("class/fileoper.php");
- $blogtitle=$_POST["blogtitle"];
- $blogdomain=$_POST["blogdomain"];
- $email=$_POST["email"];
- require_once("class/xoops_mu.php");
- $xoops_mu=new xoops_mu();
- if($xoops_mu->addNewWPUser($xoopsUser->getVar("uname"),$xoopsUser->getVar("pass"),$xoopsUser->getVar("email"),$xoopsUser->getVar("uname").".newag.com.cn","wpmu","http://".$xoopsUser->getVar("uname").".newag.com.cn/wpmu/",$xoopsUser->getVar("uname")))
- {
- //echo "创建wp用户成功.<br/>";
- }
- if($xoops_mu->CreateBlog($xoopsUser->getVar("uname"),$xoopsUser->getVar("uname").".newag.com.cn",$xoopsUser->getVar("uname"),"/wpmu/"))
- {
- //echo "创建Blog成功.<br/>";
- }
- //$xoopsOption["template_main"]="success.html";
- // $xoopsTpl -> assign("uname", $xoopsUser->getVar("uname"));
- header("location:http://".$xoopsUser->getVar("uname").".newag.com.cn/wpmu/");
- require_once("footer.php");
- ?>
其实主要还是调用了xoops_mu这个类来进行新博客的创建工作。
经过我的分析,进行了这样一系统工作:
在wp_site,wp_user,wp_signups三个表中插入了相应的行(感觉有点数据冗余,域名都插入了好几次),在wp_usermeta中插入了5行数据.然后建了wp_数字_****这样形式的8个表(前一阵看还是7个,记得当时没有wp_*_options这个表,现在又多了一个表).这一系列工作我就没有去细看,直接用phpmyadmin把sql导出了,然后做了相应一些处理后,直接执行了。
在前面一篇blog的xoops_mu类里。不过注意那个类是没法直接运行的,毕竟只是交流,示例一下WP整合是怎么一个思路。
有兴趣的话,等我完全搞完后发一个资料内传阅一下。
PS:个人感觉mu.wordpress.org上的那个版本有点乱,我开始下了一个nightly版本,不过developer太马虎了,居然出来巨搞笑的BUG,用***.com就可以,用***.com.cn,居然图片,js文件的地址就成了com.cn/***了,所以我放弃了,再下的wordpress.mu.1.0Rc4 好像也改动了一些文件。但改了文件版本号应该改一下。
WP的多用户版本mu.wordpress与XOOPS的整合…
10月 5, 2006 on 7:42 pm | In 未分类 | No Comments这是自己分离出来的代码,没有自己测试,所以很可能无法正常运行。主要是示例wordpress.mu注册和登陆时的一些操作.
- <?php
- /**
- 这个wp_应该跟wp里设的前缀是一样的.
- */
- define("WP_DB_PREFIX_FORXOOPS","wp_");
- /**
- 这是运行WP.mu的主站的域名.
- */
- define("WP_BLOG_HOST_FORXOOPS","