FreeBSD下安装PHP5扩展的默认选项是没有memcache可选的,需要自己安装:
cd /usr/ports/databases/pecl-memcache
make install clean
然后重启apache即可。
FreeBSD下安装PHP5扩展的默认选项是没有memcache可选的,需要自己安装:
cd /usr/ports/databases/pecl-memcache
make install clean
然后重启apache即可。
一直用Netbeans写php,从来没配置过模板,模板配置好,可以省很多事,而且,显得很专业,今天到netbeans官方网站找了一些东西,配置好模板,方便开发。
新建php文件时:
<?php
/**
* Encoding : UTF-8
* Created on : 2009-10-23 14:48:40 by smallchicken , microji@126.com
*/
?>
工具–模板–打开php里面的–“PHP 文件”,在编辑器中打开,
好,可以编辑模板文件。
当然,如果要写入时间和文件名之类的变量需要单独配置变量。
<?php
/**
* Encoding : ${encoding}
* Created on : ${date} ${time} by ${author} , ${email}
*/
?>
变量需要在 工具–模板–用户配置属性–User.properties 在编辑器中打开
email=microji@126.com
author=smallchicken
${date?date?string("yyyy-m-d")}
${time?time?string("H:i:s")}
写入变量就可以了。
日期和时间的格式和php相同,
变量名字可以自己定义。
官方的模板变量名列表:
http://wiki.netbeans.org/FaqTemplateVariables
原文:http://hi.baidu.com/smallchicken/blog/item/360b92c7f2e097d6d00060c8.html
用UltraEdit打开UTF-8编码的文件时,有时候中文会显示乱码。网上搜索到一个比较好的解决办法:
方法就是打开UltraEdit安装路径下的Uedit32.ini(如果没有这个文件,那说明你的UltraEdit版本的ini不是放在安装路径下的,得去C:Documents and Settings(登录用户名,默认是Administrator)Application DataIDMCompUltraEdit里面找一下),在[Settings]里加上一句“Detect UTF-8 String=0”即可(bianbian补充:在UltraEdit某版本之后,这个字符串改成了“Auto Detect UTF-8 String=0”;你可以两个都试一下,或者都填上去),意思是禁止UltraEdit检测可能标记 UTF-8的字符串,这个选项在“配置”里是没有的。
Javascript出于安全性考虑,是不允许跨域调用其他页面的对象的。因此也就导致了在一些ajax应用中,使用跨域的web service成为问题。
这里整理了一些方法,来解决这个问题:
1.设置document.domain。
前提条件:两个页面同属于一个基础域(例如都是xxx.com,或是xxx.com.cn);同一协议(例如都是http);同一端口(例如都是80)。
方法:设置两个页面的document.domain都设置为自己所在的基础域名。
例子:aaa.xxx.com里面的一个页面需要调用bbb.xxx.com里的一个对象,则将两个页面的document.domain都设置为xxx.com,就可以了。
2.在服务器端设置代理
跨域的请求同样发送到本地服务器端,由服务器端的代理来请求相应的数据,然后发送给浏览器端。这样实际上浏览器端的所有请求都是发到相同的域,在服务器端代理的帮助下,实现了跨域的能力。
3.使用apache服务器的mod_rewrite
http://doc.99net.net/doc/service/1076303865/1076476868.html
4.这边还有一个方法,不过我还没有测试过
http://johnvey.com/features/deliciousdirector/web-service-broker.html
Python有很多集成开发工具,但这些工具有的是过于复杂,有的是对Unicode支持的不太好。本人很喜欢Editplus,现在我们就将它改造成一个能够很好的支持Python编辑,浏览,运行及调试的开发环境,并且具备语法加亮,自动完成,自动缩进,新建Python文件模板等功能支持。
我的Editplus是2.10(比较原始了),Python是2.5.4。
1.要使Editplus能够运行Python程序,首先打开 【工具】 -> 【首选项】 对话框,在用户工具Group1里新建一个工具起名为Python,分别在【菜单文本】填入Python,在【命令】填入Python的安装路径(比如C:Python25Python.exe),【参数】填入$(FileName),【初始目录】填入$(FileDir)。
这样我们在Editplus里打开一个Python文件,在【工具】菜单下就会有一个Python选项,直接单击就可以运行Python程序了,也可以利用快捷键(Ctrl+1),根据你设置用户工具的个数,这个快捷键可能有所不同。
在此处我们想实现下面的一个功能:就是当程序出错的时候,Python解释器会给出类似如下的提示信息:
———- Python ———-
File “test.py”, line 6
print ‘a
^
SyntaxError: EOL while scanning single-quoted string
Output completed (1 sec consumed) – Normal Termination
此时,我们一般会根据提示的行号到文本中去找错误的地方,而不能够象其他的编译器一样直接双击错误的提示,将光标直接移动到错误行。此时如果我们直接双击某行,则会出现找不到某文件的错误。此处,我们就利用Editplus的输出模式 Output Pattern的实现这个功能。具体做法:在刚才设置用户工具界面中选中捕获输出Capture Output,然后打开输出模式Output Pattern按钮,在输出模式Output Pattern对话框中,首先取消使用默认输出模式Use default output pattern选项前的复选框,在正则表达式Regular expression栏里填入正则表达式如下:
File “(.+)”, line ([0-9]+)
文件名File Name栏里选择 标记表达式1 Tagged expression 1,
行栏里选择 标记表达式2 Tagged expression 2,
列栏里为None.
然后我们直接双击错误提示信息行
File “test.py”, line 6
光标就会直接跳到第六行,非常的方便,尤其是当多个文件互相调用的时候,这种方法可以方便打开文件找到错误的位置。
2.为了实现语法加亮和自动完成功能,我们必须下载两个文件,下载地址为
http://www.editplus.com/javacpp.html(需要选择你python对应的版本,python2的话选择 pythonfiles.zip,python3的话应该是python3.zip) ,解压到editplus的安装目录下。压缩包有三个文件,此处我们用到两个,Python.acp文件和 Python_extd.stx文件。Acp文件是自动完成文件,stx文件是语法加亮文件。怎样加载呢?方法如下:
工具>首选项->设语法下,首先新建一个文件类型,我们命名为Python,扩展名(file extensions)栏里我们填入py。在语法文件syntax file栏里我们找到刚才下载的Python_extd.stx文件,在自动完成Auto completion栏里找到Python.acp文件,在函数模式Function Pattern栏里填入:
[ t]*def[ t].+:
这样我们就可以通过Ctrl+F11快捷键直接显示出Python文件中的函数列表
这时我们打开一个Python文件,就可以看到有语法加亮了。
但是我们在编辑的时候会发现一个问题就是,在输入冒号后,没有自动缩进,当然,如果我们手工缩进后会发现后面的输入也进行了同样的缩进,怎样让Editplus自动识别冒号然后直接缩进,并且如何修改缩进的长度呢?在语法文件设置界面制表符/缩进选项(Tab/Indent),分别填入自己习惯的距离。我两个都填入4,并且选中插入空格代替制表符和使用自动缩进。然后在自动缩进开启字符里填入一个冒号“:”。
其他的设置也可以根据类似的设置进行。
3.还有一点很方便的是,可以通过建立一个Python文件的模板,来快速新建一个Python文件。首先我们建立一个名为template.py的文件,内容自定,我们这里假设如下:
“”"
Usage:
“”"
保存,将template.py文件放到Editplus安装目录下。
工具->首选项->模板
打开模板设置对话框,首先添加一个名为Python的模板,把文件路径设置到我们刚才建立的template.py文件上。
点击载入按钮。完成。这样在文件->新建->下就会有一个Python模板,直接可以方便的建立一个Python文件。
至此,Editplus已经可以方便的编辑,浏览,调试和运行Python程序了。最后还要提醒一点的是,个人使用习惯不同,可以根据类似的方法进行修改和调整。通过以上的介绍,我们可以看出,Editplus可以很方便的配置,能够完成Python常用的大部分功能,有效的提高编程效率。
我先将硬盘接到电脑的IDE接口装好系统,并设置好磁盘分区标签:
代码:
root@test:~# mount
/dev/label/rootfs on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/label/data on /data (ufs, local, soft-updates)
/dev/label/home on /home (ufs, local, soft-updates)
/dev/label/tmp on /tmp (ufs, local, soft-updates)
/dev/label/usr on /usr (ufs, local, soft-updates)
/dev/label/var on /var (ufs, local, soft-updates)
然后将硬盘接到USB硬盘盒内,让机器从USB硬盘启动,在启动过程中报错:
代码:
Root mount waiting for: usbus4
umass0:0:0:-1: Attached to scbus0
Trying to mount root from usf:/dev/label/rootfs
ROOT MOUNT ERROR:
If you have invalid mount options, reboot, and first try the following from the loader prompt:
set vfs.root.mountfrom.options=rw
and then remove invalid mount options from /etc/fstab.
Loader variables:
vfs.root.mountfrom=ufs:/dev/label/rootfs
vfs.root.mountfrom.options=rw
Manual root filesystem specification:
<fstype>:<device> Mount <device> using filesystem <fstype>
eg. ufs:/dev/da0s1a
eg. cd9660:/dev/acd0
This is equivalent to: da0 at umass-sim0 bus 0 target 0 lun 0
da0: <WDC> Fixed Direct Access SCSI-0 device
da0: 40.000MB/s transfers
da0: 114473MB (234441648 512 byte sectors: 255H 63S/T 14593C)
mount -t cd9660 /dev/acd0 /
? List valid disk boot devices
<empty> Abort manual input
mountroot>
当时按? List显示:
代码:
mountroot> ?
List of GEOM managed disk devices:
acd0
Loader variables:
vfs.root.mountfrom=ufs:/dev/label/rootfs
vfs.root.mountfrom.options=rw
Manual root filesystem specification:
<fstype>:<device> Mount <device> using filesystem <fstype>
eg. ufs:/dev/da0s1a
eg. cd9660:/dev/acd0
This is equivalent to: mount -t cd9660 /dev/acd0 /
? List valid disk boot devices
<empty> Abort manual input
mountroot>
只看到acd0,没有da0
当我在另一个USB接口接了一块U盘时,却顺利进系统了。
这个时候我发现移动硬盘是da0,U盘是da1。
当我把两个USB接口互换时,又出现上面那个问题,? list时看到acd0,da0,da0s1,这个da0明显是U盘。
最后总结出来,只有将移动硬盘接在那个固定的USB接口,另一个USB接口随便接个U盘就可以启动移动硬盘上的系统。
虽然系统可以用了,但这个结果让人很困惑,不知道这是不是FreeBSD 8.0的一个Bug?
1,下载所需安装文件
httpd-2.2.14.tar.gz
apache-tomcat-6.0.20.tar.gz
tomcat-connectors-1.2.28-src.tar.gz
jdk-6u17-linux-i586.bin
2,安装apache
tar xzvf httpd-2.2.14.tar.gz
cd httpd-2.2.14
./configure –prefix=/usr/local/apache2 –enable-so
make
make install
3,安装tomcat
tar xzvf apache-tomcat-5.5.12.tar.gz
mv apache-tomcat-5.5.12 /usr/local/tomcat
4,编译生成mod_jk
tar xzvf tomcat-connectors-1.2.28-src.tar.gz
cd cd tomcat-connectors-1.2.28-src/native/
./configure –with-apxs=/usr/local/apache2/bin/apxs
make
cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/
cd /usr/local/apache2/conf
vi mod_jk.conf
# 指出mod_jk模块工作所需要的工作文件workers.properties的位置
JkWorkersFile /usr/local/apache2/conf/workers.properties
# Where to put jk logs
JkLogFile /usr/local/apache2/logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat “%w %V %T”
# 将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理
JkMount /servlet/* worker1
JkMount /* worker1
vi workers.properties
# Defining a worker named worker1 and of type ajp13
worker.list=worker1
# Set properties for worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.lbfactor=50
worker.worker1.cachesize=10
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
vi httpd.conf
修改:
DocumentRoot “/var/www”
<Directory “/var/www”>
Options Includes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
XBitHack on
</Directory>
<Directory “/var/www/WEB-INF”>
Order deny,allow
Deny from all
</Directory>
修改:
DirectoryIndex index.jsp index.html
新增:
LoadModule jk_module modules/mod_jk.so
Include /usr/local/apache2/conf/mod_jk.conf
最后编辑Tomcat的配置文件server.xml,在HOST段中加入:
<Context path=”" docBase=”/var/www” debug=”0″ reloadable=”true” crossContext=”true”/>
5,java环境设置
./jdk-6u17-linux-i586.bin
mv jdk1.6.0_17 /usr/local/.
vi /usr/local/tomcat/bin/start.sh
#!/bin/sh
#set java environment
JAVA_HOME=/usr/local/jdk1.6.0_17
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH PATH
/usr/local/tomcat/bin/catalina.sh start
vi /usr/local/tomcat/bin/stop.sh
#!/bin/sh
#set java environment
JAVA_HOME=/usr/local/jdk1.6.0_17
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH PATH
/usr/local/tomcat/bin/catalina.sh stop
chmod 744 start.sh stop.sh
6,运行apache,tomcat
/usr/local/apache2/bin/apachectl start
/usr/local/tomcat/bin/start.sh
7,测试
cd /var/wwwroot
vi index.jsp
<html>
<title>
test jsp
</title>
<%
String showMessage=”Hello World!”;
out.print(showMessage);
%>
</html>