Tuesday, December 27, 2011

Gentoo emerge 更新系统方法


  1. 更新Portage树
    [cc lang='text' line_numbers='false']# emerge --sync[/cc]

  2. 更新系统
    [cc lang='text' line_numbers='false']# emerge --update --deep --newuse world[/cc]

  3. 移除依赖包
    [cc lang='text' line_numbers='false']# emerge --depclean
    # revdep-rebuild[/cc]


Tuesday, December 20, 2011

小心重庆美联英语的注册金骗局

上周末去重庆观音桥的美联英语咨询情况,结果被里面的要求交什么注册金,300元(因为我只带了300元)。但我第二天回来在Google、百度上搜索他们情况后发现并不是我理想中的那样。当我提到退款时,就说不能退的啦。我立马打12315电话。我说明情况之后,重庆12315的工作人员,只问了一句“他是培训机构吗?”。我说“是”。“那你打教委的电话”,“请问教委的电话是多少呢?”。“你自己打114查询啊”。

……

天啊,这也叫便民?难道真把我们当便民了?当然我没有打教委的电话,说实话,我是第一次打12315在我心中一直是能够为消费者办事的电话,结果呢?我已经对这些所谓的“服务”失去信心了。以后还是小心点算了吧。

让我们来看看一些有趣的东西吧:

更多相关信息请看留言。

Friday, December 16, 2011

NFS quick howto for centos 5

NFS quick howto for centos 5


To use nfs successfully, you have to configure the server and the client. In this example, the client is 192.168.0.3 and the server is 192.168.0.1. The folder to be shared is /home/sharing, and to be mounted to /mnt on the client

On the server

  1. Make directory that you want to use.


    • # mkdir /home/sharing


  2. Edit /etc/exports, insert the client machine's ip


    • # vi /etc/exports


      • Add this line:




        • /home/sharing 192.168.0.3/255.255.255.255(rw,sync)


      • Save



  3. Edit /etc/hosts.allow


    • # vi /etc/hosts.allow


      • Add this line:


        • portmap: 192.168.0.0/255.255.255.0


      • Save



  4. Start nfs and portmap


    • # /etc/init.d /nfs start

    • # /etc/init.d/portmap start



On the client


  1. Start portmap


    • # /etc/init.d/portmap start


  2. Mount the nfs folder


    • # mount 192.168.0.1:/home/sharing /mnt


  3. Check /var/log/messages for any error that might occur


    • # tailf /var/log/messages


  4. Use mount to check if the folder is mounted properly


    • # mount 


      • This should be the output:


        • 192.168.0.1:/home/sharing on /mnt type nfs (rw,addr=192.168.0.1)




  5. Edit /etc/fstab to mount the shared folder on boot


    • # vi /etc/fstab


      • Add this line


        • 192.168.0.1:/mnt/sdb1/backup /mnt nfs rw,hard,intr 0 0


      • Save




You can use 'man exports' to see the options available for /etc/exports

Wednesday, October 26, 2011

Squid 2.7 通过域名反向代理多个服务器配置

[cc lang='apache' line_numbers='false']visible_hostname squid1.abc.com

#设定squid的主机名,如无此项squid将无法启动

http_port 80 accel vhost vport

#设定squid为accel加速模式,vhost必须要加.否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误

cache_peer 192.168.1.88 parent 80 0 no-query originserver name=contentchina

cache_peer 192.168.1.88 parent 80 0 no-query originserver name=bbs

cache_peer 192.168.1.1 parent 80 0 no-query originserver name=ihompy

#定义不同的父节点,将节点设为no-query以及originserver说明这些节点是实际服务器

cache_peer_domain contentchina aaa.abc.com

cache_peer_domain bbs bbb.abc.com

cache_peer_domain ihompy ccc.abc.com

#设定不同域名转发到不同的cache_peer上,如果没有这项.不同域名的域名可能被分发到同一台服务器上.

acl all src 0.0.0.0/0.0.0.0

no_cache deny all

http_access allow all

#允许所有客户端访问

cache_log /var/log/squid/cache.log

#记录日志

#***********ACL存取控制*************

#acl QueryString url_regex .php?

#***********缓冲存取控制*************

#no_cache deny QueryString

#不对符合QueryString的ACL内容进行缓冲

#***********性能优化配置*************

maximum_object_size 320010 KB

#大于此容量的对象将不会被保存在磁盘上,默认大小是4M,如果squid服务器用于缓冲flash等大型文件,建议将此值变大.否则过大的文件在下次重启后将需要重新获取

maximum_object_size_in_memory 100 KB

#最大位于内存中的对象的大小,默认大小是8K,如果服务器内存很大.可以适当提高此值的大小,建议根据网站的80%图片的大小来定.或者根据WEB服务器实际存取文件中最常访问的文件大小来定制

#***********其他可选配置*************

#dns_nameservers 10.0.0.1 192.172.0.4

#配置DNS服务器地址.获取后端时将从此dns获取IP地址

#cache_mgr ggg_g@tom.com

#在错误日志中出现的webmaster地址.

[/cc]

Thursday, September 29, 2011

rsync 增量备份

[cc lang="text"]rsync --force --ignore-errors --delete --delete-excluded --exclude "logs/" --exclude "umslog/" 192.168.254.221::www-back /Datas/Backup/Rsync-YuKuai/app-daily --log-file=/Datas/Backup/Rsync-YuKuai/logs/`date +%Y-%m-%d`.log -azv -backup --backup-dir=/Datas/Backup/Rsync-YuKuai/app-daily-arch/`date +%Y-%m-%d`[/cc]

Monday, September 19, 2011

thinkpad只插电源适配器会锁频

在Gentoo上捣鼓 cpufreq-info 时发现只插电源适配器会锁频,可能是电源适配器只有65W 的原因。

Monday, September 12, 2011

Cloud computing software

Cloud computing related open source softwares. IAAS: OpenNebula , OpenStack , Eucalyptus, CloudForms, CloudStack/Cloud.com(part of cloudstack), ibvirt, AbiCloud, Nimbus, OpenNebula, OpenQRM, ConVirt, OpenVZ ; PAAS:Makara/OpenShift, Cloud Foundry,Aeolus(iPaaS) , AppScale, CloudStack.

Thursday, September 8, 2011

使用expect自动登录SSH脚本

[cc lang="bash"]#!/usr/bin/expect -f
set server [lindex $argv 0]

trap {
set rows [stty rows]
set cols [stty columns]
stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH

switch -- $server \
"mail" {
spawn ssh -p 51 root@mail
expect "password:"
send "A)Q11dDuh^.\n"
interact
} "win1" {
exec rdesktop -u administrator -p "aU\$B_C%K" 192.168.111.3
} default {
puts "input a server name"
}

expect eof[/cc]

Friday, September 2, 2011

AWR报告生成


一.生成AWR报告




[cce lang='text' line_numbers='false'][ractest@sun880-1 /u01/app/oracle/orahome/rdbms/admin]$ cd $ORACLE_HOME/rdbms/admin
[ractest@sun880-1 /u01/app/oracle/orahome/rdbms/admin]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Sun Jan 27 20:47:38 2008
Copyright (c) 1982, 2007, Oracle. All Rights Reserved/span>.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> @awrrpt
......[/cce]
//根据Oracle提示生成报告......


 注:报告生成在[cci]$ORACLE_HOME/rdbms/admin/[/cci]目录下。

二.修改awr的默认设置




//半小时采集一次,采集信息保存3天。
[cce lang='sql' line_numbers='false']SQL>exec dbms_workload_repository.modify_snapshot_settings (interval=>30,retention =>3*24*60);[/cce]


三.关闭AWR自动收集




[cce lang='sql' line_numbers='false']SQL>exec dbms_workload_repository.modify_snapshot_settings (interval=>0,retention =>24*60);[/cce]


:10g默认是自动开启awr信息收集的,会对系统有一定的影响(很小);如果要关闭awr信息收集,只需设置interval参数为0即可。但interval设0后,AWR报告无法生成。




Oracle常用命令



一.基础SQL语句

  • 查:select * from employees;

  • 增:insert into employees (Name , Birthday , Location , Salary) values ('hyddd','1984-10-1','guangzhou',999999);

  • 改:update employees set Salary=999999999 where Name='hyddd';

  • 删:delete from employees where name='zhangsan';


更多技巧请参考:SQL基本语句

 

二.PFile,SPFile管理

  • SPFile->PFile:





    • ##用生成对应SID的spfile生成pfile,生成的pfile位置:$ORACLE_HOME/dbs/init$ORACLE_SID.ora
      SQL
      > create pfile from spfile;
      --------
      ##自己指定生成文件的位置
      SQL
      > create pfile='/home/oracle/initorcl.ora' from spfile;



  • PFile->SPFile





    • SQL> create spfile from pfile;




 

三.启动,关闭数据库

  • 启动




    • SQL>startup




  • 关闭





    • SQL>shutdown normal
      SQL
      >shutdown transactional
      SQL
      >shutdown immediate
      SQL
      >shutdown abort




四.修改SGA参数


  • 修改SGA的原则

    1. sga_target <= sga_max_size

    2. SGA加上PGA等其他进程占用的内存必须少于机器物理内存。



  • 命令




    • SQL>alter system set sga_max_size=2048m scope=spfile;
      SQL
      >alter system set sga_target=2048m scope=spfile;
      ##修改SGA的相关参数,只能spfile,然后重启数据库。不能直接scope
      =both!





五.查询Oracle配置参数


  • 命令




    • SQL>show parameter;




  • 具体查询某个Oracle参数,只需输入部分关键字即可,比如:查询sga_target的值。




    • SQL> show parameter sga;

      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      lock_sga                             boolean     FALSE
      pre_page_sga                         boolean     FALSE
      sga_max_size                         big 
      integer 2G
      sga_target                           big 
      integer 2G
      SQL
      >





Thursday, September 1, 2011

用virt-install克隆一个复制来的镜像

[cc lang='bash' line_numbers='false']virt-install qemu:///system --name vCentOS-Base --ram 2048 --cpuset=1,3,5 and 7 --accelerate --disk path=/Datas/V-Host/vCentOS-Base --import --network bridge:br0[/cc]

CentOS 5.6上的[cci lang='bash' line_numbers='false']virt-clone[/cci]有点问题,就直接用[cci lang='bash' line_numbers='false']copy[/cci]来复制然后用virt-install导入。

 

Wednesday, August 24, 2011

[转]英语飙升的好方法

听:


网上比较有代表性的论坛是普特 www.putclub.com 上面的听力资源很丰富,沪江www.hjenglish.com 和旺旺www.wwenglish.com上一些材料的也很不错,从中间随便挑一个网站坚持即可。但是千万不要一个个都听过来。记住,开始阶段100篇文章听一遍,不如一篇文章听100遍。如果基础比较弱,那么每天慢速VOA(大概比四级听力稍难一些)听两篇,每篇10遍以后再看原文,弄清楚每个单词的意思,看完以后再听10遍以上。保证两周以后你回去听四六级听力会很不耐烦。过了慢速就可以听常速了,还是精听为主泛听为辅。

常速还不过瘾,可以去找talkshow来听,譬如Saturday Night,在优酷或者土豆上都有。

不要问这样做有没有效果,我坚持了三个月,以后看美剧大部分时间不需要看字幕。

顺便说下论坛的作用,上论坛不要问这个词什么意思这类低级问题,不要指望别人替你查字典,别人的时间也是时间。但是一个句子弄不懂,就不要自个儿纠结了,尽管去问。另外要懂得投桃报李,有能力也尽量去回答别人的问题,教学相长。

说:


说起来很奇妙,我起初也只是打算先过听力关,按照上面的步骤坚持了3个月,不过在听的同时跟着读,后来因为听的太烂太无聊,会跟着录音一起背,两个月下来发现开口说英语变成了很自然的事情。回头来看,英语的口语真的是看似入门很难,但是真的进去了也就那么回事。不过高口训练的英汉对译还是很有用的,实际上拿新概念的材料就可以做,无非是看这英文说汉语看着汉语说英文,然后再对照原文进行纠正。

再强调一下,我不是生来语言高手,四级考了两次,现在周围人觉得我英语很牛,实际上只要我的方法谁都能学会,看你能不能坚持。

读:


读的一个基础是单词量,单词不够的话读书是痛苦不是享受。四级单词是最最最起码的要求,有了四级基础,语法还凑合的话,建议直接看上国外报纸网站看文章,建议看经济学人,www.economist.com,或者纽约时报 www.nytimes.com 每天不要看多,看一篇就够了。开始碰到生词会很多,感觉很难受,但是一定要坚持,碰到所有不会的单词,都要记下来弄懂。

碰到不会的单词怎么办,查谷歌字典 http://dict.google.com,或者 韦试辞典的在线版 www.merriam-webster.com/

单词如果今天记住明天忘怎么办,最简单的办法,找本专门的本子记下来,不要大本子,要可以随身带的那种;如果能经常上网,也可以试一下一起背单词这个网站 www.17bdc.com,可以让你在线背单词,跟本子比最大好处就是不怕学习记录丢了,而且它有记忆曲线的功能可以提醒你复习。

再说一点,英语阅读材料中,最简单的是专业文章,其次是新闻,最难的是小说。我花了一年多时间就毫不费力的可以读懂纽约时报,但是很久以后才能勉强读完Da Vinci Code。但是真的读完一本几百页的小说,带来的成就感是读几篇文章难以比拟的。

写:


这个其实要看个人目标了,如果是达到和他人书信email交流的目的,其实前面3个步骤下来,写已经完全不是问题了。

如果还要追求文笔,可以去看看华尔街日报中文版http://www.cn.wsj.com/ 上的双语内容,可以通过比较来学习如何用于英语来进行正确和优美的表达。另外译言www.yeeyan.com 也是不错的选择。

Thursday, July 14, 2011

十大流行PHP开发框架介绍

第10位 Speedphp


Speedphp是国产框架,特别推荐初学者使用和学习,中文手册让初学者阅读起来也很容易。当然可以用来做各种复杂度的项目。同时他也支持新浪应用引擎(SAE)。

第9位 DooPHP


DooPHP自称为最快的PHP框架,对于高在线需求的网站不妨考虑一下DooPHP,不过目前面临文档过少,社区支持困难的问题。如果你是一位追求速度的高级的PHP开发者,也可以试试究竟有没有作者自称的那么快。

第8位 Drupal


Drupal,你可以把他当作一个CMS来使用,功能强大到让你难以想象,可是你又可以当作框架。做二次开发的好东西,如果你想做欧美外包,不了解Drupal是绝对不行的。值得一提的是,Drupal的社区氛围非常好,你几乎可以在官方论坛上解决任何问题。

Saturday, July 9, 2011

Google chrome pac auto proxy file

don't use only exts. Swithy will broken on chrome 12. so use pac file is a good way.

[cc lang='javascript' ]
function FindProxyForURL(url, host)
{
var regexpr = /(google|googleusercontent|gmodules|chromium|linkedin|filesonic|hotfile|fbcdn|wp|scanlover|android|pusherapp|jqueryui|wordpress|tornadoweb|angrybirds|28tube|goo|fc2|youtube|twitter|facebook|ytimg).com$/;
if(regexpr.test(host))
return "SOCKS5 127.0.0.1:7070; DIRECT";
return "DIRECT";
}

[/cc]

start google chrome in command line [cci]google-chrome --proxy-pac-url=file:///home/fred/.proxy.pac[/cci]

work on debian linux.

Thursday, June 23, 2011

张婉悠是谁

[caption id="attachment_2146" align="alignleft" width="211" caption="张婉悠"][/caption]

张婉悠,青岛人,凭借《爱情实录》、《海上花》等一些中国电视剧而走红,张婉悠迅速从新生代女星中崛起被中国内地观众认可。被众多导演称作“灵气美女”。

精巧细致的五官、近乎无暇的纯美皮肤,不仅频频受到各大杂志的邀请,更是得到国际上顶级品牌商的青睐,各种代言广告 源源不断。

张婉悠一出道就获得很多演出机会,更有机会和一线导演和明星合作,从芸芸新人女星中迅速崛起,广受观众 欢迎;同时,各类时尚杂志都纷纷邀请张婉悠拍摄封面和内页照片, 张婉悠更参与了不少电视节目,一时间声名鹊起,成为现实世界和网络世界的宠儿。

張婉悠的個人資料 .


出生日期: 6-16 .星座: 雙子座 .家鄉: 中國山東青島 .血型: O .身高: 170 CM

體重: 55KG .三圍: 98 65 92 CM (39E 26 36吋)

 

Monday, June 13, 2011

vsftpd显示符号链接

不能显示,可以用 [cci]mount --bind[/cci]来挂载目录。

Thursday, June 9, 2011

一天总结

MySQL

[cc lang='text' line_numbers='false']
mysql> CREATE VIEW test.v AS SELECT * FROM t;
[/cc]
Exim4

[cc lang='text' line_numbers='false']sudo dpkg-reconfigure exim4-config[/cc]

Exim user forward filter how to:

http://www.exim.org/exim-html-4.40/doc/html/filter_3.html#SECT3.26

Tuesday, June 7, 2011

用Debian6.0架设xen开发服务器很好

内存 8G,CPU P4 3G

连接Android热点

[cc lang='bash' ]
#!/bin/sh
modprobe r8192se_pci
DHCPC_PID=/var/run/dhcpcd-wlan0.pid
#/etc/init.d/hal stop
#/etc/init.d/dbus stop
if [ -f $DHCPC_PID ];then
killall -9 dhcpcd-bin
rm -f $DHCPC_PID
fi
ifconfig wlan0 up
/sbin/wpa_supplicant -B -Dwext -iwlan0 -c/home/redhat/tools/conf/wpa1.conf
dhcpcd -R -Y -N wlan0
route add default gw 192.168.43.1 > /dev/null 2>&1
[/cc]

Saturday, May 21, 2011

与互联网有关的一切的成功的必要因素:定位

一:为什么要定位?


1 互联网内容的同质化。 现在互联网上面的网站有百分之九十以上都是相互抄袭的,包括内容抄袭,模式抄袭,产品抄袭,在如此庞大的同质化的内容里面,作为小网站如何生存,如何同巨大的垄断企业竞争,如何才能让网民记住你,唯一的办法办法就是做到差异化,区别于人。

举一些例子:百度和谷歌,当当和卓越,新浪和搜狐,优酷和土豆,京东和巨蛋,迅雷和快车,金山和360,以及最近的一大堆团购网站等。

2 互联网的“第一”的意义。 一定要把自己的产品定位于一个区别于强大竞争对手的东西,成为一个与对手产品或网站性质不一样的行业

第一,另一个第一,只有自己是第一才容易叫网民记住你。

举些例子:

(1) QQ空间做为SNS的受众面十分的广,但是校内仍然是十分成功的,因为他的定位是大学生社交网站,更具大学生的内容让用户的忠诚度更高。搜狐也有同学录,但是几乎没有人知道,大家只是知道大学生的社交网站只知道第一的校内。

(2) 相信大家都知道快播,一般播放器都是看解码能力的强大与支持媒体格式的多少,快播的高清解码能力十分的一般,支持的格式更是少的可怜甚至连AVI格式都不支持,总体性能和老牌劲旅暴风差远了,但是快播的定位就十分特别:可以在线播放BT种子文件。这样的定位是快播的知名度迅速建立,装机量迅速增加。

二:如何进行网站或是产品的定位:


1:明白服务和产品的本质

2:建立与竞争对手有所区别的形象或是服务

3:品牌营销

(1):要做什么行业首先要明白你产品的本质,分析优势。曾做有一个客户是提供减肥服务的,并且公司有专门的私人减肥教练。一开始这个客户做百度竞价做的都是有关如何减肥的相关营销,结果客户十分的少。其实这个客户完全没有思考自己的产品的真正概念和优势,后来我建议他去做女人婚前减肥的产后减肥的相关营销,结果这个客户的公司来了很多生意,甚至后来需要提前预定他们的减肥教练。

(2):自己的网站一定要有区别于对手的服务,现在的互联网的几乎每一个领域都已经存在垄断,要在巨头下生存就要与他不一样。如果没有美国团购网站Groupon的出现,相信国内会出现各种各样的团购网站,但是自从groupon活了以后它的网站模板几乎被用到了国内每家团购网站上面,连模板都是一样的自然国内的网站和他的盈利模式也都一样了,很多人根本不愿意去思考其他新的模式。面对越来越多的巨头进入团购市场,相信更多的同质化小团购网站会迅速消失。

(3):定位好了自己的模式,就要开始品牌营销。国内做的比较成功的就是王老吉的,王老吉的例子很值得中国互联网企业好好研究。王老吉已经能让它的这个品牌代替的中国的凉茶,一想到凉茶就想到王老吉。

 

Friday, May 20, 2011

Nagios监控报警安装

一.Nagios简介



Nagios是一款遵循GPLv2的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。

  1. 监控网络服务(HTTP、POP3、SMTP、PING、MySQL等)

  2. 监控主机资源(磁盘空间利用率、内存利用率、CPU负载等)

  3. 简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本

  4. 并行服务模式

  5. 轻松描述网络结构,并且能够区辨“宕机”和“主机不可达”

  6. 通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员6)当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式) ?可以通过飞信,等方式实现时,既可传递给管理员,可高效的保证服务器的维护。

  7. 自动日志滚动

  8. 支持以冗余方式进行主机监控

  9. 可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选



Tuesday, May 10, 2011

Javascript延时

[cc lang="javascript"]
setTimeout(function() {
homes.removeClass('shot');
}, 30000);[/cc]

Tuesday, May 3, 2011

jQuery removeClass

[cc lang="javascript"]
$('td[class^="input_"]').removeClass(function (index, class) {
var matches = class.match (/spf_c\d+/g) || [];
return (matches.join (' '));
});
[/cc]

Tuesday, April 26, 2011

Yii CJSON

[cc lang="php"] $this->layout=false;
header('Content-type: application/json');
echo CJSON::encode(array('id'=>$project->id, 'content'=>$project->content, 'pass_way'=>$project->pass_way, 'total'=>$count, 'bs'=>$project->multiple
));
Yii::app()->end(); [/cc]

Thursday, April 21, 2011

IntelliJ IDEA在Linux下很卡的问题解决

idea.vmoptions 文件加入
[cc lang="text"]-Dsun.java2d.pmoffscreen=false[/cc]

Wednesday, April 20, 2011

Sunday, April 3, 2011

Socket.io with XMPP

[cc lang="javascript"]var server = require("http").createServer();
var socket = require("socket.io").listen(server);
var xmpp = require("node-xmpp");
socket.on("connection", function(connection) {
var client = new xmpp.Client({jid: "charlvn@jabber.co.za", password: ""});
client.on("online", function() {
client.send(new xmpp.Element("presence", {type: "chat"}));
connection.on("message", function(message) {
client.send(new xmpp.Element("message", {to: "charlvn@charlvn.com", type: "chat"}).c("body").t(message));
});
connection.on("disconnect", function() {
client.end();
});
});
client.on("stanza", function(stanza) {
if (stanza.is("message")) {
var b = stanza.getChildren("body");
if (b[0]) connection.send(b[0].getText());
}
});
});
server.listen(8080);[/cc]

[cc lang="html"]

XMPP



    [/cc]

    Thursday, March 31, 2011

    PHP pcntl_fork

    [cc lang="php"]
    $pid = pcntl_fork();
    if ($pid == -1) {
    die('could not fork');
    } else if ($pid) {
    // we are the parent
    pcntl_wait($status); //Protect against Zombie children
    } else {
    // we are the child

    echo "download files ...\n";
    $cmd = "/usr/bin/wget --user-agent=\"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)\" \\
    --header=\"Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\" \\
    --header=\"Accept-Language: en-us,en;q=0.5\" \\
    --header=\"Accept-Encoding: gzip,deflate\" \\
    --header=\"Accept-Charset: GBK,utf-8;q=0.7,*;q=0.7\" \\
    --header=\"Keep-Alive: 300\" -O /dev/null -i list.txt -o wget.log";
    exec($cmd);
    echo "done\n";
    declare(ticks = 1);

    pcntl_signal(SIGUSR1, function ($signal) {
    echo 'HANDLE SIGNAL ' . $signal . PHP_EOL;
    });

    posix_kill(posix_getpid(), SIGUSR1);
    die();
    }
    [/cc]

    Monday, March 14, 2011

    Friday, March 11, 2011

    Caching WordPress with Varnish

    WordPress is a fantastic application that lets you get a website up and running in a matter of minutes. Not only that, but you require absolutely no knowledge of how to code to do so. As with many web applications though, it needs a little help in getting it to perform better. Lots of these dynamic apps breaks caching by using lots of cookies and setting headers like Cache-Control and Pragma. For a better in-depth tutorial on caching, read this article.

    Requirements



    • Web server running on a different port than the standard one (TCP/80)

    • Varnish installed


    Configuration


    The standard location for Varnish’s configuration file is located at/etc/varnish/default.vcl. You will find below the configuration I use on this blog. See the comments to get a better understanding of what’s what. Also, make sure varnish will listen on port TCP/80 (use the -a flag when you start the daemon).
    # Send all requests to your webserver
    backend default {
    .host = "127.0.0.1";
    .port = "8080";
    }

    sub vcl_recv {
    # If we don't set this, in our webserver's logs, we'll get varnish's IP instead
    # of the real client's IP
    if (req.http.x-forwarded-for) {
    set req.http.X-Forwarded-For =
    req.http.X-Forwarded-For ", " client.ip;
    } else {
    set req.http.X-Forwarded-For = client.ip;
    }
    if (req.request != "GET" && req.request != "HEAD") {
    return (pass);
    }
    # Unless we're in the admin/login section, remove all cookies
    if (!(req.url ~ "wp-(login|admin)")) {
    unset req.http.cookie;
    }
    return (lookup);
    }

    sub vcl_pipe {
    return (pipe);
    }

    sub vcl_pass {
    return (pass);
    }

    sub vcl_hash {
    set req.hash += req.url;
    if (req.http.host) {
    set req.hash += req.http.host;
    } else {
    set req.hash += server.ip;
    }
    return (hash);
    }

    sub vcl_hit {
    if (!obj.cacheable) {
    return (pass);
    }
    return (deliver);
    }

    sub vcl_miss {
    return (fetch);
    }

    sub vcl_fetch {
    if (!beresp.cacheable) {
    return (pass);
    }
    if (beresp.http.Set-Cookie) {
    return (pass);
    }
    if (!(req.url ~ "wp-(login|admin)")) {
    unset req.http.cookie;
    }
    return (deliver);
    }

    sub vcl_deliver {
    # Remove bad headers
    remove resp.http.X-Varnish;
    remove resp.http.Via;
    remove resp.http.Age;
    remove resp.http.X-Powered-By;
    remove resp.http.Cache-Control;
    remove resp.http.Pragma;
    return (deliver);
    }

    Restart Varnish to load the new configuration.

    Testing the recipe


    Open up varnishstat in your terminal. You should see some stats. Ctrl-F5 a few times your site in your favorite browser. That way, you’re telling your browser to bypass its own cache and ask the site for fresh items. The first time you access your site, you will get lots of misses, but after that, you should get lots of cache hits.
    Hitrate ratio:        9        9        9
    Hitrate avg:     0.7302   0.7302   0.7302
    22         0.00         0.16 Client connections accepted
    132         0.00         0.95 Client requests received
    100         0.00         0.72 Cache hits
    5         0.00         0.04 Cache hits for pass
    25         0.00         0.18 Cache misses

    As you can see, I’m getting about 4 times more cache hits than misses. This way, Varnish will server all the static items and will let your webserver take care of all the dynamic content. Hope this helps a bit.

     

    Saturday, March 5, 2011

    突破Windows XP SP3远程桌面连接数限制

    长期在Linux下工作,但是常常需要在IE6下做WEB测试,于是在开发服务器上安装了Xen和Windows XP SP3。但是XP默认只能1个远程连接,所以需要“破解”。

    1. 下载破解过的[download id="2" format="3"],版本5.1.2600.5512,语言中文(中国)。

    2. 复制到windows\system32文件夹覆盖同名文件。(如果开着SFC还要覆盖dllcache或者servicepackfiles\i386里的)

    3. 运行RAR包里的MultipleTS.bat

    4. 运行gpedit.msc打开组策略,找到终端服务-限制连接数量改到2以上

    5. 确保启用快速用户切换和允许用户远程连接到此计算机

    6. 重启电脑确保更改生效

    Thursday, March 3, 2011

    How to compile all files in directory with Emacs

    [cc lang='lisp' ]C-u 0 M-x byte-recompile-directory[/cc]

    will compile all the .el files in the directory and in all subdirectories below.

    The C-u 0 part is to make it not ask about every .el file that does not have a .elc counterpart.

    Wednesday, March 2, 2011

    HTC Desire 连接到Eclipse(Linux)

    [cc lang="text"]
    su
    cd android-sdk-linux-linux/tools
    ./adb kill-server
    ./adb start-server
    ./adb devices
    exit
    [/cc]

    You must use root (sudo)

    Wednesday, February 23, 2011

    用Apache ab模拟用户登录后投注测试

    [cc lang="text"] ab -c 50 -n 3000 -C PHPSESSID=we21f3a362ea79f82076c9c79b8109 -p tmp.txt -T application/x-www-form-urlencoded http://localhost/jczq/projectgg/index[/cc]
    tmp.txt格式
    [cc lang="text"]codes=146|3/147|3/141|3/148|3/145|3/143|3&totalmoney=2&zhushu=1&beishu=1&playid=spf&pass_type=6_1[/cc]

    Thursday, February 17, 2011

    编译guile-2.0.0遇到问题的解决

    Error:
    [cc lang="text"]checking for BDW_GC... configure: error: Package requirements (bdw-gc) were
    not met:

    No package 'bdw-gc' found
    [/cc]

    Resovle:
    [cc lang="text"]BDW_GC_CFLAGS=-L/usr/lib BDW_GC_LIBS=-lgc ./configure --prefix=/opt/packages/languages/guile[/cc]

    Wednesday, February 9, 2011

    升级Debian到6.0

    重新编译了2.6.32.28内核,感觉udev和acpi改进了不少。对Thinkpad R400的支持还不错,只是自己手动配置了许多。

    Wednesday, January 26, 2011

    Kohana 3 - .htaccess that Works on DreamHost

    I’m currently hosting my sites on DreamHost because … well let me just put it this way: we’re both cheap. It works out. But what doesn’t work out are the default .htaccess rules that come bundled with Kohana. So to fix this, swap the line [cci lang="apache"]RewriteRule .* index.php/$0 [PT][/cci] found in your .htaccess with one of the following options:

    [cc lang="text"]# Option 1
    RewriteRule .* index.php?/$0 [PT,L,QSA]

    # Option 2
    RewriteRule .* index.php?kohana_uri=$0 [PT,L,QSA][/cc]

    Monday, January 24, 2011

    Friday, January 21, 2011

    Dreamhost PS upgrade

    如果在升级Dreamhost的VPS时候遇到问题,大部分是因为 ndn-megacli 这个包不能升级,以下是解决方法
    [cc lang="text"]rm -f /etc/init.d/ndn-megacli
    dpkg -P --force-all ndn-megacli
    apt-get install ndn-megacli[/cc]