在PHP 中运行JS

这天去zend网站上逛了逛, 看到一个monkeyspider 的标签,

http://devzone.zend.com/article/4704-Using-JavaScript-in-PHP-with-PECL-and-SpiderMonkey

嘿嘿, 原来是用c写了一个扩展php扩展 把spiderMonkey和php 联起来了。 照着试了试, 还真跑下来了, 拿上来分享一下。

首先是下载

http://ftp.mozilla.org/pub/mozilla.org/js/  js-1.7

http://pecl.php.net/package/spidermonkey   spidermonkey 的php扩展

  1. shell# tar -xzvf js-1.70.tar-gz
  2. shell# cd js/src
  3. shell# make -f Makefile.ref
  4. shell# mkdir -p /usr/local/include/js/
  5. shell# cp *.{h,tbl} /usr/local/include/js/
  6. shell# cd Linux_All_DBG.OBJ
  7. shell# cp *.h /usr/local/include/js/
  8. shell# cp js /usr/local/bin/
  9. shell# cp libjs.so /usr/local/lib/
  10. shell# ldconfig
  11. tar -zxvf spidermonkey.tar.gz
  12. 进入spidermonkey , php 扩展目录,
  13. yum install automake
  14. shell# phpize
  15. shell# ./configure
  16. edit spidermonkey.c
    Add to line 152 next:
    int JSVERSION_LATEST = 185;
  17. shell# make
  18. shell# make install

 

 

在make 的时候可能会报错, 那报错的那几行注释吧, 用了几个php 的struct 里没有的属性
在php.ini 里把这个扩展打开吧, 试试把

 

  1. <?php
  2. // create JavaScript context
  3. $js = new JSContext();
  4. // define PHP variables
  5. $a = 10;
  6. $b = 2;
  7. // assign variables to JavaScript context
  8. $js->assign(‘a’, $a);
  9. $js->assign(‘b’, $b);
  10. // define script code
  11. $script = <<<END
  12. c = a + b;
  13. END;
  14. // evaluate script and display result
  15. echo ”The sum of $a and $b is: ” . $js->evaluateScript($script);
  16. ?>

 

CentOS安装vnc+wine运行windows程序挂机教程

测试vps是阿里云的最低配,内存512M,带宽1M,硬盘40G(20G+20G),独立ip。系统是CentOS 5.4

1.首先安装xfce和中文支持,依次运行如下命令:
yum groupinstall xfce-4.4 -y

yum groupinstall "Chinese Support" -y
2.安装vnc服务器:
yum install vnc-server -y

yum install yum-priorities -y
3.下载并安装wine:
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

rpm -ivh http://syslogserver.googlecode.com/files/rpmforge-release-0.5.1-1.el5.rf.i386.rpm

yum check-update

yum --enablerepo=rpmforge install wine -y

4.启动vnc服务器以及配置
vncserver 这时会要输入两次密码,然后依次运行下面代码:

echo 'VNCSERVERS="1:root"'>>/etc/sysconfig/vncserversecho 'VNCSERVERARGS[1]="-geometry 800x600"'>>/etc/sysconfig/vncserversecho > /root/.vnc/xstartupecho '#!/bin/sh'>>/root/.vnc/xstartupecho '/usr/bin/startxfce4'>>/root/.vnc/xstartupchmod +x ~/.vnc/xstartupchkconfig vncserver on

安装成功以后,重启一下vncserver,

/etc/init.d/vncserver restart

然后通过vncviewer连接到vps,然后找到 Wine File打开 如下如:

打开Wine File以后你就会看到大家熟悉的资源管理器,接下来的就不用说了,跟windows下一样了。

测试通过:Host1free centos 6/阿里云 centos 5.4

DirectAdmin 开心版百分百安装成功教程

本方法仅适用于centos5/6
下载地址:http://ge.tt/98ZSeSc

下载后解压.RAR上传 update2.tar.gzsetup.sh到服务器

可能要先安装wget和which:

yum -y install wget which

创建文件夹directadmin

  1. mkdir -p /usr/local/directadmin

复制代码

update2.tar.gz内所有内容解压到

  1. tar xvf  update2.tar.gz  -C /usr/local/directadmin

复制代码

安装directadmin编译环境所需要的依赖

  1. yum -y update
  2. yum -y install dos2unix patch screen unzip lftp tar quota
  3. yum -y install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 db4-devel cyrus-sasl-devel perl-ExtUtils-Embed libstdc++.so.6 libnspr4.so  libssl.so.6

复制代码

下面这步CENTOS5和centos6.x64需要执行,不然后面编译php会失败
32bit

  1. ln -s /usr/lib/libssl.so /usr/lib/libssl.so.10
  2. ln -s /usr/lib/libcrypto.so /usr/lib/libcrypto.so.10

复制代码

64bit

  1. yum -y install glibc.i686 openssl.i686 (imnpc分享)

复制代码

安装完以上依赖可以开始安装directadmin了
将上面上传的setup.sh 赋予可执行权限

  1. chmod -R 755 setup.sh

复制代码

运行setup.sh开始安装

  1. ./setup.sh

复制代码

这步比较重要选错了也就意味你将安装失败(这步CENTOS6才有 CENTOS5会自动识别,centos3/4那就不知道了

授权id和客户id随便填
其他的选项都看得懂吧
开始编译环境和安装directadmin面板,安装完成得到

 

安装完ip:2222不能访问,清除所有防火墙规则

  1. iptables -F
  2. iptables -X
  3. iptables -Z

复制代码

安装过程没什么技术含量,就是这么简单!

开心版不知道谁分享的!感谢分享者吧。

本文完,谢谢阅读,再见!

CentOS安装中文支持(linux中文文件名乱码)

1)

yum install fonts-chinese
yum install fonts-ISO8859-2

yum install fonts-chinese.noarch

yum groupinstall <language>-support 

在上面的命令中,<language> 是下列之一: assamese, bengali, chinese, gujarati, hindi, japanese, kannada, korean, malayalam, marathi, oriya, punjabi, sinhala, tamil, thai, 或 telegu。

2)修改/etc/sysconfig/i18n

j将原来的注释掉,这段东西拷进去

LANG=”zh_CN.GB2312″
SUPPORTED=”zh_CN.GB2312:zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”latarcyrheb-sun16″

3)最后重启就ok了

为SCWS中文分词系统xdb词库添加新词

SCWS是国内PHP大牛hightman开发的基于PHP的简易中文分词系统,因为PHP的搭档Mysql不支持中文分词全文索引,这个SCWS方案可算当前PHP圈中初级分词需求的最佳解决方案。用它来实现简单的中文全文搜索,或者自动生成文章关键词,足可胜任。

其实中文分词效果如何,关键还是在于词库是否足够完善,SCWS毕竟只是个初级的解决方案,词库也是hightman个人制作,总不免有些不尽如人意的地方。比方说,我就发现常用的一个食品名“芽菜”就没有被收入词库中,SCWS会将“芽菜”分割成“芽”和“菜”,这让我有些郁闷。我尝试在SCWS的规则配置文件rules.ini中加入“芽菜”这个新词,但不知为何并没有作用。我只有考虑直接在词库数据中加入新词来解决这个问题。

幸好SCWS提供了词库XDB导出导入词库的工具,下载后解压至任意文件夹,我解压至“E:/www/tools/scws_xdb/”目录下。在命令行下进入您PHP的安装目录,我的目录是”E:/xampp/php“,执行命令行:

命令格式为:php dump_xdb_file.php <要导出的.xdb文件> [要存入的文本文件]

几秒后在E:/scws目录下我就获得了导出的纯文本文件dict.txt。

用文本编辑器打开dict.txt文件,我建议用EditPlus,用windows的记事薄的话不能正常显示换行符。dict.txt中文本格式为:

# WORD    TF    IDF    ATTR
当机立断    14.01    8.10    i

#开头的行是注释。每行是一个词。每个词分为四部分,WORD列是词本身,TF和IDF列是词权重,ATTR列是词性。

在这里要解释下TF和IDF的意思,它们合起来称作TF-IDF(term frequency–inverse document frequency),是一种用于资讯检索与资讯探勘的常用加权技术,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用分类。说起来很不好理解,其实也不需要理解,SCWS也提供了新词生词的TF/IDF计算器,可以自动获得词语的权重值。

ATTR是词性,也就是标示词语是名字、动词、形容词等等词性的。详细的词性标示方法请看SCWS的说明:词典词性标注详解

我要添加的词语是”芽菜“,是名词,用n标示。得到的IF、IDF值分别是13.82和7.48,那么在dict.txt结尾我追加了如下一行:
芽菜    13.82    7.48    n

再执行如下命令,将修改好的dict.txt重新生成xdb文件。

命令格式为:php make_xdb_file.php <要生成的.xdb> [导入的文本文件]

生成xdb文件的过程需要比较长的时间,请耐心等待,如下图:

就这么简单,补充了新词的词库制作完成啦!

在调用新词库后重新对含有”芽菜“的字符串进行分词,嘿嘿,”芽菜“已经可以作为一个词被正确识别了。

设置CentOS防火墙开放端口

在我们使用CentOS系统的时候,CentOS防火墙有时是需要改变设置的。CentOS防火墙默认是打开的,设置CentOS防火墙开放端口方法如下:

打开iptables的配置文件:
vi /etc/sysconfig/iptables
修改CentOS防火墙时注意:一定要给自己留好后路,留VNC一个管理端口和SSh的管理端口

下面是一个iptables的示例:

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT – [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m udp -p udp –dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT

修改CentOS防火墙需要注意的是,你必须根据自己服务器的情况来修改这个文件。

举例来说,如果你不希望开放80端口提供web服务,那么应该相应的删除这一行:
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

全部修改完之后重启iptables:
service iptables restart

你可以验证一下是否规则都已经生效:iptables -L

这样,我们就完成了CentOS防火墙的设置修改。

OpenVZ(CENTOS) VPS 安装Qemu 虚拟安装 Windows

虚拟Windows

在安装之前我们的准备
1台512内存内存的ovz vps centos 5
一个ghost的iso包 选择的系统自己看着办
建议用ghost系统,安装版你会很蛋疼的。
为了节约内存可以选择执行如下命令

yum remove httpd yum -y update

安装fluxbox桌面环境

wget http://pandahost.googlecode.com/files/fluxbox_vnc.sh;sh fluxbox_vnc.sh

中途会要你输入如vnc密码 输入就是了
设置vncserver开机启动

chkconfig vncserver on

安装qemu

wget http://pandahost.googlecode.com/files/qemu.sh;sh qemu.sh

建立虚拟硬盘

qemu-img create -f qcow win2003.img 100G

或者

qemu-img create -f qcow win2003.xrw 100G

win2003.img可以自定义名字 xxx.xxx

 

然后打开vnc
你的IP:1(比如127.0.0.1:1)
建立虚拟机

qemu –cdrom XXX.iso -m 512M -smp 2 -boot d XXX.img

iso 是系统镜像 512M 是系统镜像 -smp 是设置Cpu -smp 2 一般不用设置默认一个

 

下一次再启动 windows 時, 可以使用

qemu -hda XXX.img -boot c -m 512M -k de -usb

可以在后面加个参数做端口转发

-redir tcp:3389::3389

上面是3389
如果多个端口

qemu -hda XXX.img -boot c -m 300M -k de -usb -redir tcp:3389::3389 -redir tcp:80::80