2009年9月27日 星期日

tomcat5.5 + apache2.2

實踐apache和tomcat的整合,原來這麼簡單.

1:安裝tomcat,jdk,這些就不說了,這個大家應該都會

2:下載apache_2.2.11-win32-x86-no_ssl.msi,這在apache網站上就有,

3:下載mod_jk-1.2.28-httpd-2.2.3.so,這個是apache和tomcat整合必須的,在apache網站上也有,

4:安裝好apache http server後,進入到apache的安裝目錄下, Apache2.2\conf ,在此新建一個workers.properties文件,將以下內容copy到workers.properties文件中
# Defining a worker named worker1 and of type ajp13
worker.list=ajp13w
worker.ajp13w.type=ajp13
worker.ajp13w.host=127.0.0.1
worker.ajp13w.port=8009
worker.ajp13w.lbfactor=1

5: copy mod_jk-1.2.28-httpd-2.2.3.so文件到Apache2.2\modules目錄下,並且改名為mod_jk.so(為了方便)

6:配置Apache2.2\conf目錄下httpd.conf文件,增加以下內容:
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkMount /*.jsp ajp13w
JkMount /*.jspx ajp13w
JkMount /servlet/* ajp13w
JkMount /*.servlet ajp13w
JkMount /* ajp13w
上面都配置好之後,啟動tomcat ,啟動apache,輸入http://localhost ,看到tomcat的首頁就ok了

source: http://codestandup.blogspot.com/2009/07/apache-tomcat.html

2009年9月24日 星期四

vsftp 出現500 OOPS: cannot change directory:/home/無法登入

vsftpd 出現500 OOPS: cannot change directory:/home/500 OOPS:
child diedConnection closed by remote host.無法登入,如何解決?

因為安裝時啟用了防火牆 在不關閉的狀況下要
輸入 setsebool ftpd_disable_trans 1

以 root 登入,並下達下面指令後,重新啟動 vsftpd即可。
# setsebool ftpd_disable_trans 1
# /etc/init.d/vsftpd restart


資料來源 : http://itkm.blogspot.com/2008/02/vsftp-500-oops-cannot-change.html

2009年9月23日 星期三

各種資料庫連結方式

odbc及oracle使用
Connection conn=null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection( "jdbc:odbc:dbname","username", "userpassword");

mysql 使用
Connection conn=null;
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection( "jdbc:mysql://hostip:3306/databasename?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"
,"username","userpassword")

SQL2005使用
下載並安裝sqljdbc.jar ,classpath 一定要指定這個jar檔.

Connection conn=null;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection( "jdbc:sqlserver://192.168.5.11:1433;DatabaseName=dbname;", "username", "userpassword");

SQL2000使用
Class.forName"com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection m_Connection = DriverManager.getConnection "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDatabase", "userid", "password");

file class 路徑指定

linux 中
new File("/var/lib/tomcat5/webapps/ROOT/erp/sop")

windows 中
new File("C:\\var\\lib\\tomcat5\\webapps\\ROOT\\erp\\sop")

RedHat讀Windows字型

1.只要把windows 字型copy 放到 redhat 的/etc/fonts/
2.然後重開機就可以了

2009年9月17日 星期四

iReport 3.6 + Tomcat 6.0使用

1.將 iReport\ireport\modules\ext 下的
jasperreports.* 檔案
eigenbase.* 檔案

複製到

Tomcat\lib 目錄下.

2.將 iReport\ireport\modules\ext 下的
iText-2.1.5.jar 檔案
iTextAsian.jar 檔案
jasperreports-3.6.0.jar 檔案
spring.jar 檔案
groovy-all-1.5.5 檔案

複製到

Tomcat\webapps\ROOT\WEB-INF\lib目錄下.

我是要使用iReport 產生EXCEL表,我的配置這樣就能使用了。

2009年9月16日 星期三

iReport 3.6 PDF 字型安裝

如果iReport 發生下列錯誤,可能是PDF字型沒有裝好
Error exporting print... Could not load the following font

1. 網址 : http://prdownloads.sourceforge.net/itext/iTextAsian.jar 下載 iTextAsian.jar
2. 網址 : http://sourceforge.net/projects/itext/ 下載 iText.jar
2. 將 iText.jar 及 iTextAsian.jar存放至 iReport\ireport\modules\ext 目錄中
3. 打開iReport,進入Tools -> Options內的iReport選項設定
4. 先在Classpath頁,點擊Add JAR,將ireport/modules/ext/iTextAsian.jar 及 iText.jar 列入Classpath清單
5. 完成以上步驟後,才能在Fontpath頁上看到iTextAsian.jar 還有 iText.jar , 勾選它,再重開iReport 就完成了。

資料參考網址:http://blog.cjcht.com/index.php/henry/2009/04/

2009年9月10日 星期四

SQL 2005 Connection timeout 連線逾時處理

DBA’s Quick Guide to Timeouts

by Chris Kempster
The author of: SQL Server 2000 for the Oracle DBA
Click here for more information, sample chapters, or to purchase this e-book.
The application development DBA needs a good understanding of the overarching application architecture and subsequent technologies (COM+, MSMQ, IIS, ASP etc) to more proactively debug and track down database performance problems. A good place to start is common timeout error. This article will provide a brief overview of where to look and how to set the values.

ADO

Within ADO, the developer can set:

connection timeout (default 15 seconds)
if the connection cannot be established within the timeframe specified
command timeout (default 30 seconds)
cancellation of the executing command for the connection if it does not respond within the specified time.

These properties also support a value of zero, representing an indefinite wait.

Here is some example code:

Dim MyConnection as ADODB.Connection

Set MyConnection = New ADODB.Connection

MyConnection.ConnectionTimeout = 30

MyConnection.Open

- and -

Set MyConnection = New ADODB.Connection

<>

MyConnection.Open strMyConn


Set myCommand = New ADODB.Command

Set myCommand.ActiveConnection = MyConnection

myCommand.CommandTimeout = 15

Take care with command timeouts are described by Microsoft:

http://support.microsoft.com/default.aspx?scid=KB;en-us;q188858

文件原文 http://vyaskn.tripod.com/watch_your_timeouts.htm

2009年7月29日 星期三

java mail sample

文章引用來源:http://hyh.mis.dwu.edu.tw/jsp/mail.htm
要先下載並安裝java mail 元件.
http://developers.sun.com/downloads/



下面是java mail 的範例

InternetAddress[] address = null;
request.setCharacterEncoding("big5");
String mailserver = "192.168.0.101"; // <=此處所設必須和寄件人的信箱同一台伺服器,
String From = request.getParameter("From"); 並且必須考慮伺服器是否會mail-rely
String to = request.getParameter("To");
String Subject = request.getParameter("Subject");
String messageText = request.getParameter("Message");

boolean sessionDebug = false;

try {
// 設定所要用的Mail 伺服器和所使用的傳送協定
java.util.Properties props = System.getProperties();
props.put("mail.host",mailserver);
props.put("mail.transport.protocol","smtp"); // <=設定所使用的protocol為SMTP(Small Mail Transfer Protocol)
// 產生新的Session 服務
javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props,null);
mailSession.setDebug(sessionDebug);
Message msg = new MimeMessage(mailSession);
// 設定傳送郵件的發信人
msg.setFrom(new InternetAddress(From));
// 設定傳送郵件至收信人的信箱
address = InternetAddress.parse(to,false);
msg.setRecipients(Message.RecipientType.TO, address);
// 設定信中的主題
msg.setSubject(Subject);
// 設定送信的時間
msg.setSentDate(new Date());
// 設定傳送信的MIME Type
msg.setText(messageText);
// 送信
Transport.send(msg);
out.println("郵件己順利傳送");
}
catch (MessagingException mex) {
mex.printStackTrace();
}

2009年7月2日 星期四

“Warning: Cannot send session cookie - headers already sent...”或者“Cannot add/modify header information - headers already sent...” 錯誤

大家常看到的 錯誤碼 “Warning: Cannot send session cookie - headers already sent...”或者“Cannot add/modify header information - headers already sent...”

1. 何謂 HEADER :

請參考這篇文章

http://bbs.ecstart.com/viewthrea ... 1%AA%BA%A8%CF%A5%CE

而 PHP 中 SET_COOIE 和 SESSION_START 上方 通常都是不準許 ECHO 出 字串的

原因是因為 它們不容許 在插入 HEADER (表頭) 內容時 , 程式出現 了 HTML 或 空白 或其它字元 .

2. 如何知道 執行 SET_COOKIE 和 SESSION_START 時 出現了 HEADER 以為的語法 :

請參考這篇文章 :

http://tw.php.net/manual/en/function.headers-sent.php

3. 解決方案 :

A. 從程式裡把出現在header前的字元拿掉 ( 慢慢找 )

B. ob_start() << 利用 OB_START ....

簡單的說 OB_START 就是將 要吐出來的內容 先放到記憶體 等記憶體放滿了才會吐出來 .

所以 它會將預吐出來的資料先放入 BUFFER 等 BUFFER 滿了 才會一口氣吐出來 , 這樣就可以避免 HEADER 中間被插入其它字串或字元.

這個解法上述有人提過了 ,

但是你好像還會發生 , 所以我在猜 , 還沒有進入 PHP BUFFER 的控制前 就有東西吐出來了 .

所以上述也有人提到 可能是 BOM 或是 APACHE 本身不知吐了什麼東西出來.

到此都只是猜測...

詳細 OB_START 介紹 : http://bbs.ecstart.com/viewthrea ... ob%5C_start%2BFIEND

C. 將 php.ini 的 output_buffering 改成 : ( BUFFER 上述己跟大家介紹過觀念這裡不多加描述 ); Output buffering allows you to send header lines (including cookies) even

; after you send body content, at the price of slowing PHP's output layer a

; bit. You can enable output buffering during runtime by calling the output

; buffering functions. You can also enable output buffering for all files by

; setting this directive to On. If you wish to limit the size of the buffer

; to a certain size - you can use a maximum number of bytes instead of 'On', as

; a value for this directive (e.g., output_buffering=4096).

output_buffering = 4096
複製代碼D. 直接改 HTTPD SERVER :

AllowOverride All

如果你是租 主機 ... 在 .htaccess 內加入 :

AllowOverride All
PHP_FLAG output_buffering On


###############################

上述資料出處:
http://bbs.ecstart.com/thread-30347-1-4.html

2009年6月26日 星期五

ORACLE SEQUENCE的簡單介紹

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加幾個
START WITH 1 -- 從1開始計數
NOMAXVALUE -- 不設置最大值
NOCYCLE -- 一直累加,不循環
CACHE 10;

一旦定義了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的當前值
NEXTVAL=增加sequence的值,然返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL

可以使用sequence的地方:
- 不包含子查詢、snapshot、VIEW的 SELECT 語句
- INSERT語句的子查詢中
- NSERT語句的VALUES中
- UPDATE 的 SET中

資料來源:http://fanqiang.chinaunix.net/a2/b2/20010514/10150052_b.html

2009年6月4日 星期四

tomcat 6.0 + apache 2.2.4

1.下載mod_jk
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.28/
存在apache中的modules 目錄

2.產生或修改workers.properties 檔案, 存在apache下的conf 目錄中
#文件內容開始
workers.tomcat_home="C:\AppServ\Tomcat"
workers.java_home="C:\Program Files\Java\jdk1.6.0_12"
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps) classes
worker.inprocess.class_path=$(workers.tomcat_home)$(ps) lib$ (ps)jaxp.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$ (ps)parser.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar
worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar
worker.inprocess.cmd_line=-config
worker.inprocess.cmd_line=$(workers.tomcat_home) /conf/jni_server.xml
worker.inprocess.cmd_line=-home
worker.inprocess.cmd_line=$(workers.tomcat_home)
worker.inprocess.jvm_lib=$(workers.java_home) $(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr
worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)
#文件內容結束

2.產生或修改http-vhosts.conf 檔案, 存在apache下的conf\extra 目錄中

#文件內容開始

ServerAdmin xxx@yahoo.com.tw
DocumentRoot C:/AppServ/www
ServerName localhost

DirectoryIndex index.php index.html index.htm index.jsp index.jspx



Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all


#文件內容結束

3.在apache下的conf 目錄中的httpd.conf 檔最未端加入下列內容
#文件內容開始
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
JkWorkersFile "C:\AppServ\Apache2.2\conf\workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JkMount /examples ajp13
JkMount /examples/* ajp13
JkMount /spadmin ajp13
JkMount /spadmin/* ajp13
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
#
# ResinConfigServer localhost 6802
#CauchoStatus yes
#

#文件內容結束

4.重新啓動apache 及tomcat 就可以了

2009年6月2日 星期二

SQL SERVER ODBC

SQL SERVER ODBC 有兩種, 一種是SQL SERVER DRIVER, 另一種是SQL Native Client.
如果SQL SERVER 是SQL 2005以後的(含SQL 2005), 那要用SQL Native Client,
SQL 2003以前的(), 那用SQL SERVER DRIVER就可以了.

2009年6月1日 星期一

Windows 定序排序樣式

二進位 (_BIN)1 依據對每一個字元定義的位元模式來排序和比較 SQL Server 資料表中的資料。二進位排序順序有區分大小寫和區分腔調字。二進位也是最快的排序順序。如需詳細資訊,請參閱<使用二進位定序>。

如果未選取這個選項,SQL Server 會遵照相關聯語言或字母之字典所定義的排序和比較規則。

二進位碼指標 (_BIN2)1 依據 Unicode 資料的 Unicode 字碼指標來排序和比較 SQL Server 資料表中的資料。對於非 Unicode 資料,二進位碼指標將使用與二進位排序相同的比較。

使用二進位碼指標排序順序的好處,就是在比較已排序 SQL Server 資料之應用程式中的資料不需要重新排序。因此,二進位碼指標排序順序可簡化應用程式的開發並提升效能。如需詳細資訊,請參閱<使用二進位定序>。

區分大小寫 (_CS) 區分大寫和小寫字母。如果選取,排序時小寫字母將先於其大寫字母。

如果未選取這個選項,在排序用途上,SQL Server 會將字母大寫和小寫的版本視為相同。

區分腔調字 (_AS) 區分有腔調和無腔調字元。例如,'a' 不等於 'ấ'。

如果未選取這個選項,在排序用途上,SQL Server 會將有腔調和無腔調字母的版本視為相同。

區分假名 (_KS) 區分兩種類型的日文假名字元:平假名和片假名。

如果未選取這個選項,則在排序用途上,SQL Server 會將平假名和片假名字元視為相同。

區分全半形 (_WS) 區分單一位元組字元和以雙位元組字元表示的相同字元。

如果未選取這個選項,在排序用途上,SQL Server 會將單一位元組和相同字元的雙位元組表示法視為相同。


Windows 定序後置詞 排序順序描述
_BIN1 二進位排序。

_BIN21 二進位碼指標排序順序,SQL Server 2005 的新增功能。

_CI_AI 不區分大小寫、不區分腔調字、不區分假名、不區分全半形。

_CI_AI_KS 不區分大小寫、不區分腔調字、區分假名、不區分全半形

_CI_AI_KS_WS 不區分大小寫、不區分腔調字、區分假名、區分全半形

_CI_AI_WS 不區分大小寫、不區分腔調字、不區分假名、區分全半形

_CI_AS 不區分大小寫、區分腔調字、不區分假名、不區分全半形

_CI_AS_KS 不區分大小寫、區分腔調字、區分假名、不區分全半形

_CI_AS_KS_WS 不區分大小寫、區分腔調字、區分假名、區分全半形

_CI_AS_WS 不區分大小寫、區分腔調字、不區分假名、區分全半形

_CS_AI 區分大小寫、不區分腔調字、不區分假名、不區分全半形

_CS_AI_KS 區分大小寫、不區分腔調字、區分假名、不區分全半形

_CS_AI_KS_WS 區分大小寫、不區分腔調字、區分假名、區分全半形

_CS_AI_WS 區分大小寫、不區分腔調字、不區分假名、區分全半形

_CS_AS 區分大小寫、區分腔調字、不區分假名、不區分全半形

_CS_AS_KS 區分大小寫、區分腔調字、區分假名、不區分全半形

_CS_AS_KS_WS 區分大小寫、區分腔調字、區分假名、區分全半形

_CS_AS_WS 區分大小寫、區分腔調字、不區分假名、區分全半形

文章來源:http://technet.microsoft.com/zh-tw/library/ms143515(SQL.90).aspx

2009年5月24日 星期日

修改php中的MAIL設定


修改C:\windows\php.ini
mail function 這節
指定mail server ip

2009年5月15日 星期五

java 從 window 移到 linux ,中文發生亂碼

試著將java 程式加上 -encoding 再重新編繹

javac -d . -encoding big5 Counter.java

2009年5月11日 星期一

在linux上設定java classpath變數

所有帳號都加入環境變數
vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.6.0_13

export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:./

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

source /etc/profile

單一帳號加入環境變數

vi /home/alanchang/.bash_profile

export JAVA_HOME=/usr/java/jdk1.6.0_13

export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:./

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

如果要立即讓變數生效
source /home/alanchang/.bash_profile

2009年5月8日 星期五

關於mysql_fix_privilege_tables

Warning: Your privilege table structure seem to be older than this MySQL version!
Please run the script mysql_fix_privilege_tables that should be included in your MySQL server distribution to solve this problem

出現這個訊息代表您的MYSQL版本已經升級,但權限未升級,請用root權限執行下列命令
/usr/bin/mysql_fix_privilege_tables --password=root密碼

rpm 用法

安裝RPM
rmp -ivh rmp名稱

升級RPM
rmp -uvh rmp名稱

移除RMP
rpm -e rmp名稱

RMP使用查詢
rpm /?

#1130 - Host XXX.XXX.XXX.XXX is not allowed to connect to this MySQL server

使用下句SQL授權給要連接MYSQL的IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'XXX.XXX.XXX.XXX' IDENTIFIED BY '11111' WITH GRANT OPTION;

2009年5月5日 星期二

java或iReport上產生PDF檔

要使用java或iReport上產生PDF檔,必須安裝iText
以iReport 安裝iText為例

1.先開啓iReport, 然後在工具 -> classpath --> 新增jar檔,然後在重新開啓iReport就完成了.

2009年4月16日 星期四

斷行符號的處理

字串中有斷行符號,可以把它取代成空白或HTML的<BR>標記。

Str.replace("\r\n"," ")

Str.replace("\r\n","
")

2009年4月15日 星期三

關於COLLATE Chinese_Taiwan_Stroke_CS_AS 用法

安裝的SQL Server是不區分大小寫的,
若要使用區分大小寫的SQL, 在Where後加上 COLLATE Chinese_Taiwan_Stroke_CS_AS

select * from Templatemaster
where TemplateID = 'PCA' COLLATE Chinese_Taiwan_Stroke_CS_AS

它另一個用途是如果要串兩個SQL資料庫, 也必須用到Chinese_Taiwan_Stroke_CS_AS

2009年3月18日 星期三

安裝 appserv + x64 tomcat 6.0 + win2003 x64

1.http://www.appservnetwork.com/?modules=&applang=tw 下載並安裝一舨的32位元的appserv,
這樣apache, php, phpmyadmin,mysql 就ok了.
方便又好用.

2.從 http://tomcat.apache.org/ 網站上下載tomcat , 但這是32位元用的.
先裝32位元的java及tomcat.
tomcat 及apache 連結方法請參閱這裏.

3.http://java.sun.com/javase/downloads/?intcmp=1281 下載64位元 JDK,
要for X64的

4.http://svn.apache.org/viewvc/tomcat/trunk/res/procrun/amd64/
從tomcat svn 下載 x64 的tomcat6.exe , tomcat6w.exe


5.先裝 JDK, 然後安裝tomcat , 但這只是32位元tomcat.
6.執行tomcat6w.exe 把每一個頁簽資訊都另外記錄下來.


7.將下載下的x64 tomcat6.exe及tomcat6w.exe 到tomcat\bin 目錄下, 把原x32
tomcat6.exe 及 tomcat6w.exe 蓋過去.


8.執行tomcat6w.exe , 把每一個頁簽設定都填回去.

9.再啓動tomcat 就完成了.
10.這樣java 核心及tomcat 6都是x64的, 我在x64 win2003上跑還蠻順的. 沒有發生過什麼問題.