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

yiiredis的一个小BUG

yiiredis是基于phpredis的一个YII组件。平时用的话确实也挺方便,但偶尔还是会有一些小BUG,比如说:
yiiredis自带了计数器的功能,嗯,它是调用了phpredis裏的代碼:
$counter = new ARedisCounter($key);
$counter->increment();  //表示每次加1
echo $counter->getValue();

這樣的代碼是沒有任何問題的,但問題卻出現在了:
$counter = new ARedisCounter($key);
echo $counter->getValue();

上面的代碼好象沒有任何問題?但就因為這樣寫,程序崩潰了。。
NND,你不先加1,就不能取$counter->getValue();
這尼瑪也太坑爹了吧。。。。。你好歹默認一個0嘛。

Tags: yiiredis

str_word_count的想当然

看到str_word_count的時候,想當然的認為它就是統計字符串中某些單詞出現的次數。结果,根本不是這樣,只是統考這個單詞出現在第幾位。我TNND。
然後一猶豫,我就寫了一個函數:

PHP代码
  1. function getStrCounts($str,$findstr='%s'){  
  2.     $i =$s= 0;  
  3.     while(($s = strpos($str,$findstr,!$s?0:$s+count($findstr)))!==false){  
  4.         $i ++;  
  5.     }  
  6.     return $i;  
  7. }  

等我写完后,发现,果然不错耶。然后我TNND又看了一下手册。。因为我记得这玩意确实是有函数的。找了一下,果然还真TMD有。substr_count就是这个苦逼的函数:

PHP代码
  1. $format = "There are %s monkeys in the %s %s %s";  
  2. echo substr_count($format,"%s");  


我晕啊。这个count,你为什么要扔到substr_这个前缀后面???真受不了。这个问题好象很久以前也有人提过,看来苦逼的人不是我一个啊

在VPS上为mysql禁用innodb引擎

我知道INNODB不錯,但是我的VPS只有小小的512M內存,實在是扛不住,這玩意啥也不錯就吃掉了我不少內存了。於是我直接在my.cnf裏加上了skip-innodb。結果服務無法啟動。

找了一下資料 ,原來mysql 5.5以上的時候,默認的引擎就是innodB,因此,如果要skip掉它,必須告訴 mysql我的默認引擎是myisam。因此代碼就變成了這樣,在[mysqld]中加入:
default-storage-engine = MyISAM
然後再skip-innodb,接著運行service mysql restart,世界清靜 了。
原來運行top的時候,mysql一直佔有著70%左右的CPU。現在立刻清零。
一下子安逸了

Tags: linux, mysql, innodb, myisam

又拍云的Yii组件

这个只是基于又拍云上面的一个小小的扩展,也是作了一个封装。
因为又拍云每次操作bucket都需要为它设置用户名和密码。如果我在一个controller里多次操作不同的bucket,有点麻烦 ,于是就做了一个小封装。
使用起来很简单,在配置文件main.php的components中加入一小段:

XML/HTML代码
  1. 'components'=>array(  
  2.     'upyun'=>'ext.upyun.EasyUpyun',  
  3. ),  

当然,如果有需要额外定制的变量,也可以参考其他组件的设置方法。

附件在这里,我就不多说了,贴上组件的注释:

PHP代码
  1. /** 
  2.  * EasyUpyun.php 
  3.  * @example: 
  4.  *  Yii::app()->upyun->upload($domain,$savedname,$datas,$autoCreateDir=true); 
  5.  *  这个是一个demo,推荐仍然使用upyun提供的API,这样就可以几乎不用改代码 
  6.  *  UpyunBase的用法是$upyun->setApiDomain('abc'); 
  7.  *  组件用法:Yii::app()->upyun->setApiDomain('bucket的别名','abc'); 
  8.  * 
  9.  * @category upyun 
  10.  * @package  upyun 
  11.  * @author   gouki <gouki.xiao@gmail.com> 
  12.  * @version  $Id$ 
  13.  * @created  12-7-6 PM11:07 
  14.  */  

再贴上变量的注释

PHP代码
  1. /** 
  2.  * 别名 
  3.  * 因为又拍云的bucket的名字比较长,在开发的时候,如果用很长的bucket会很痛苦,因此就做了一个别名功能用来代替bucket 
  4.  * @var array 
  5.  */  
  6. public $alias = array(  
  7.     'static' => 'test-public'  
  8. );  
  9. /** 
  10.  * 又拍云的bucket 
  11.  * key 为 bucket 
  12.  * value 为 bucket对应的用户名和密码,格式为“用户名:密码” 
  13.  * @var array 
  14.  */  
  15. public $bucket = array(  
  16.     'test-public' => 'admin:123456'  
  17. );  
  18. /** 
  19.  * 又拍云API实例 
  20.  * @var UpYun 
  21.  */  
  22. public $upyun;  
  23. /** 
  24.  * 是否采用upyun的debug功能,该功能为全局打开,一旦开启,所有bucket涉及的debug都开启 
  25.  * @var bool 
  26.  */  
  27. public $debug = FALSE;  

Over,有想试用的,可以直接尝试下载附件。

附件: upyun.zip (5.59 K, 下载次数:1778)

Tags: yii, 又拍云, 组件

发邮件让MAC自动休眠

在威鋒網上看到這個主題 後,立馬嘗試了一下。果然不同凡響啊

其實說白了就一句話:tell application "System Events" to sleep
但就這麼一句話,即做了很多事情,看這句話多簡單啊。就是傳說中的自然語言。。告訴程序『系統事件』睡眠。輕輕鬆鬆。。。。。

原文在這裏:http://bbs.weiphone.com/read-htm-tid-4576786.html
因為有圖有文字,我為了方便就說個簡單的吧:
1、啟動"apple script編輯器"(在實用工具中),將剛才上面的那段:tell application "System Events" to sleep輸入進去並保存。
2、打開mail,在偏好設置中,點擊:規則選項卡,然後新增一個規則
3、(我這是偷懶的作法),允許任何一個郵箱收麼的郵件主題為:sleep,不是包含,而是等於。如果為了放心一點,也可以設置一下發件人,這樣會更安全一點
4、上面選好後,下面:就執行下列操作:選擇運行apple script,選擇你剛才保存的文件。
於是整個事情就這麼完成 了。多輕鬆啊。。。。。

最後,放上apple script的教程:applescript 简明基础教程.pdf

Tags: 休眠, apple script

Records:30123456