2013年2月

通过rc.local更改的:
#设置thinkpad充电阀值
echo 90 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
#设置GPU max freq防止温度过高
echo 650 > /sys/class/drm/card0/gt_max_freq_mhz
挺有用的,一个防止电池频繁充电;一个是算显卡驱动的bug,待机休眠唤醒以后GPU的频率会一直居高不下,因此改小max的频率,这样就不会导致主板温度飙升>90度了。
 

其实很久以前都遇到过,以前是用的fluxbox,现在是awesome。在使用一些“非主流”的轻量级的文件管理器时,比如pcmanfm去点磁盘分区时,无法自动mount,都提示认证失败之类的错误。
   也尝试过很多方法,最终也没有解决。比如用ck-launch-session,dbus-launch,gnome-daemon,各种看起来有用的gnome后台程序,以及udev的权限配置文件。 奇怪的是在标准的gnome3和gnome-shell下用Nautilus却毫无问题,可能是gnome兼容性吧。所以,长期以来,我都是只能在shell下cli来mount和umount磁盘。

多次尝试以后,终于找到了一个不可思议的终极解决方案:
安装polkit-gnome,并自启动这个命令:
 /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
虽然很奇妙和匪夷所思,但是,完美实现磁盘加载和卸载。 

memcacheQ是基于Berkeley DB的一种持久化的队列。这个MQ算是轻量级的消息队列,依赖于Berkeley DB和libevent,在高并发下效率还不错。
在debian下没有apt的源,所以自己编译,流程如下:
wget 'http://memcacheq.googlecode.com/files/memcacheq-0.2.0.tar.gz'
  tar zxf memcacheq-0.2.0.tar.gz
  sudo apt-get update
  sudo apt-get install build-essential libevent-dev db4.7-util libdb-dev
  sudo mkdir -p /usr/local/BerkeleyDB.4.7/lib
  cd  /usr/lib
  sudo ln libdb-4.7.so libdb.so -s
  cd -
  ./configure --enable-threads
  make
  sudo make install

然后,使用以下这个run.sh脚本启动:
#!/bin/sh
memcacheq  -u www-data -p 22201 -d -r -c 8000 -m 512 -H /home/memcacheq/data/ -L 4096 -N -R -v > ./testenv.log 2>&1

  表达式和操作符的优先级有时候是很迷惑人的,所以多写几个括号让复杂的表达式变清晰是很有必要的。
举一个含有三元操作符的错误,这个在我以前写java的时候也曾经出现过 :P

$key = $vernum . "_is_" .  ($_SERVER["HTTP_HOST"] == 'secure.xxxx.com') ? "https" : "http";


这一句看起来是没错的,但是,怪异的是,结果$key的值变成了https。
原因就是表达式结合顺序并不按照程序员的想法走了,
在程序执行的时候,由于"."(或者加号)的优先级高于三元操作符,所以,
先执行

$vernum . "_is_" .  ($_SERVER["HTTP_HOST"] == 'secure.xxxx.com')


这个的结果是一个非空字符串,
然后再用这个临时非空字符做逻辑判断, ($tmep)  ?

"https" : "http";

所以结果一定是"https"。
结论是,三元操作符一定要加括号。。。