Garey's Blog–FreeBSD/PHP/GoLang

二月 11th, 2010

FreeBSD下安装PHP5的memcache的扩展

No Comments, FreeBSD, PHP, by garey, 7,974 views.

FreeBSD下安装PHP5扩展的默认选项是没有memcache可选的,需要自己安装:

cd /usr/ports/databases/pecl-memcache

make install clean

然后重启apache即可。

二月 9th, 2010

[转]Netbeans Template配置

No Comments, PHP, by garey, 7,348 views.

一直用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

二月 4th, 2010

[转]UltraEdit显示中文乱码的解决办法

No Comments, 未分类, by garey, 21,080 views.

用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的字符串,这个选项在“配置”里是没有的。

原文:http://bianbian.org/technology/20.html

一月 27th, 2010

[转]Js跨域调用问题

1 Comment, AJAX, by garey, 9,260 views.

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

参考这里:http://www.xml.com/pub/a/2005/11/09/fixing-ajax-xmlhttprequest-considered-harmful.html?CMP=OTC-TY3388567169

原文:http://www.todd-lee.com/blog/article.asp?id=121

一月 20th, 2010

[转]python IDE >> Editplus的配置

1 Comment, Python, by garey, 9,706 views.

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常用的大部分功能,有效的提高编程效率。

 

原文:http://meiowei.javaeye.com/blog/421267

一月 19th, 2010

python: if __name__

No Comments, Python, by garey, 4,135 views.

image

通过这个例子,python应用模块的自测试程序都放在 if __name__ == “__main__” 条件块下是多么方便。

一月 14th, 2010

FreeBSD下PHP5 PDO_MYSQL的安装

No Comments, FreeBSD, PHP, by garey, 9,599 views.

FreeBSD下安装PHP5时有pdo选项,但这样还不能使用pdo_mysql,php会提示:Connection failed: could not find driver.

需另外安装php5-pdo_mysql:

cd /usr/ports/databases/php5-pdo_mysql

make install clean

之后重启apache即可,在phpinfo.php页面里会看到下图所示信息,PDO才能使用MYSQL驱动。

image

一月 12th, 2010

FreeBSD 8.0从USB移动硬盘启动的Bug?

1 Comment, FreeBSD, by garey, 13,217 views.

我先将硬盘接到电脑的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?

十二月 28th, 2009

发现Xorg 7.4的一个Bug?

No Comments, FreeBSD, by garey, 7,565 views.

在FreeBSD下使用VNC的时候,发现在ports安装软件过程中,config配置界面是黑色的,看不到选项:

xorg_bug

使用的vnc版本为vnc-4.1.3_2,xorg版本为xorg-7.4_2。

当我试着将xorg改用xorg-7.3_2这个版本时,问题解决,难道正是xorg 7.4版本的Bug?

xorg_bug1.jpg

十二月 22nd, 2009

Linux下Tomcat整合Apache安装笔记

No Comments, Linux, by garey, 7,533 views.

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>

访问:http://127.0.0.1