2007年12月18日 星期二

四拾五入-- 以 java 為例

四拾五入的方法很多, 我個人比較常使用的概念是 直接對 數值 + 0.5 後進行無條件捨去

例如:
java.math.BigDecimal b = new java.math.BigDecimal("1234.51");
double d = java.lang.Math.floor((b.doubleValue()+0.5));

2007年12月6日 星期四

ArrayList 轉 String Array

List selectedList = new ArrayList();
selectedList.add("111");
selectedList.add("222");
selectedList.add("333");

for(int i = 0 ; i System.out.println(selectedList.get(i));
}

String[] rebuildArray =(String[])selectedList.toArray(new String [0]);

for(int j = 0 ; j System.out.println(rebuildArray[j]);
}

2007年11月12日 星期一

產出pdf 備忘(一)

public String pdf(){

query 後的datasource
this.query();

用來裝相關pars用的

Map pars = new HashMap();
pars.put("title", "jimmy title 測試");


FacesContext fc = FacesContext.getCurrentInstance();

fc.responseComplete();這個method沒處理會發生Servlet response already use stream, Writer not possible
透過 FacesContext 來取得 HttpServletResponse
HttpServletResponse res = (HttpServletResponse) fc.getExternalContext().getResponse();
透過 FacesContext 來取得 ServletContext
ServletContext servletContext = (ServletContext) fc.getExternalContext().getContext();

String path = servletContext.getRealPath("/report/test.jasper");
File jasperFile = new File(path);

try {
ReportUtils.createPdf(res, jasperFile, pars, this.userlist, 1);
} catch (Exception ex) {

}
return null;
}

2007年11月11日 星期日

建立 DBCP ConnectionPool (不使用server.xml方式)


利用此方法也是另一種設定connection pool 的方法 , 不一樣的地方是, 這種方法設定相關的properties值是寫在程式, 若是要方便維護 , 就得用另一種方法, 有空再來寫吧。
詳細說明直接參考dbcp docs的說明就很清楚了。

package com.cps.sql;


import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS;
import org.apache.commons.dbcp.datasources.SharedPoolDataSource;

public class connectionManager
{
private static DataSource ds;

public static DriverAdapterCPDS cpds ;

public static SharedPoolDataSource tds;

private final static int maxActive = 100;

private final static int maxIdle = 10;

private final static int maxWait = 10;

private final static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

private final static String url ="jdbc:sqlserver://test.infinitiessoft.com:1433";

private final static String username = "test";

private final static String password = "1234";

static
{

cpds = new DriverAdapterCPDS();
try {
cpds.setDriver(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();

}
cpds.setUrl(url);
cpds.setUser(username);
cpds.setPassword(password);

tds = new SharedPoolDataSource();
tds.setConnectionPoolDataSource(cpds);
tds.setMaxActive(maxActive);
tds.setMaxIdle(maxIdle);
tds.setMaxWait(maxWait);

ds = tds;

}

public static Connection getConnection() throws SQLException
{
Connection cn = null;
status();//印出連線狀態
//判斷連線的數量是否超過設定的數值
if(tds.getNumActive() < tds.getMaxActive()){
return ds.getConnection();
}else{
return cn;
}
}

public static void status(){
System.out.println("[NumActive]:"+tds.getNumActive());
System.out.println("[MaxActive]:"+tds.getMaxActive());
System.out.println("[MaxIdle]:"+tds.getMaxIdle());


}
public final static void freeConnection(Connection con){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

public final static int getActiveCon(){
return tds.getMaxActive();
}

public final static int getIdle(){
return tds.getMaxIdle();
}

public final static int getNumActive(){
return tds.getNumActive();
}

public static void main(String[] a){

try {
Connection con1 = connectionManager.getConnection();
Connection con2 = connectionManager.getConnection();
for(int i = 0 ; i<100;i++){
connectionManager.getConnection();
}
connectionManager.freeConnection(con1);
connectionManager.freeConnection(con2);
Connection con3 = connectionManager.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}


}

2007年11月6日 星期二

Change Tomcat Port

這個問題,應該會滿常遇到的才對
tomcat default port 是 8080 ,若是要改成80或是其它的port 做法如下:

以tomcat 5.5.25為例
1.先打開 tomcat\conf 下server.xml

2. 找到 line 94 port ="8084"
.....> 將port的部份改掉就可以了。

2007年10月31日 星期三

寫一支簡單的 java程式 來取得資料庫連線(getConnection)

package com.test.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
*
* @author jimmy
*/
public class simpleConnection {


Connection conn = null;

simpleConnection(){}


//get connection
public Connection getConnection(){
try {

Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ICPS","root", "");
/*
利用properties
Properties props = new Properties ();
props.put("user", "root");
props.put("root", "");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ICPS",props);
*/
System.out.println("=================== getconnection Success ======================");
}catch(Exception e){
e.printStackTrace();
System.out.println("=================== getconnection error ======================");
}
return conn;
}


//close connection
public void closeConnection(){
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

//execute query
public void sqlexecuteQuery(Connection conn){

String sql = "select * from icpsuser";
try {
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);

while(rs.next()){
System.out.println(rs.getString("userid")+"/"+ rs.getString("username"));
}

} catch (SQLException ex) {
ex.printStackTrace();
}

}


public void run(){
Connection conn = this.getConnection();
this.sqlexecuteQuery(conn);
this.closeConnection();
}

public static void main(String[] arg){

simpleConnection sc = new simpleConnection();
sc.run();
}

}

2007年10月30日 星期二

利用 seam-gen 快速生產程式

1. seam setup
建立設定檔(build.properties)

#Tue Oct 30 20:24:11 CST 2007
hibernate.connection.password=1234
workspace.home=c\:/icps
model.package=com.icps.entity
hibernate.default_catalog=icps
driver.jar=c\:\\icps\\lib\\sqljdbc.jar
action.package=com.icps.session
test.package=com.icps.test
database.type=mssql
hibernate.default_catalog.null=
hibernate.default_schema=dbo
database.drop=n
hibernate.default_schema.null=
project.name=icps
hibernate.connection.username=icps
hibernate.connection.driver_class=com.microsoft.sqlserver.jdbc.SQLServerDriver
hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider
project.type=war
icefaces.home=
database.exists=y
jboss.home=C\:/icps//jboss-4.2.1.GA
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.connection.url=jdbc\:sqlserver\://59.127.137.13\:1433

2. seam new-project
建立專案檔案

3. seam generate-entities
產生資料庫所有的 action bean 及 form bean

2007年10月15日 星期一

Ant 環境變數設定

SET ANT_HOME=C:\JAVA\ant
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
set PATH=%PATH%;%ANT_HOME%\bin

2007年10月5日 星期五

StringUtils 使用subStringBetween

package com.test;
import org.apache.commons.lang.StringUtils;

/**
*
* @author macbook
*/
public class splitString {


public String substringBetween(String var,String open ,String close,String d4 ){
return StringUtils.isBlank(StringUtils.substringBetween(var, open, close))?d4:StringUtils.substringBetween(var, open, close);
}

public String splitLeft(String var){
return StringUtils.substringBetween(var, "(", ",");
}


public String splitLeft(String var ,String d4){
return StringUtils.isBlank(this.splitLeft(var))?d4:this.splitLeft(var);
}

public static void main(String[] arg){
splitString s = new splitString();
System.out.println(s.splitLeft("(,)", "--"));
System.out.print(s.substringBetween("(20070401,)", ",", ")", "--"));

}
}

2007年10月2日 星期二

使用 dbcp 做 connection pool(下)

實做connectionManager

/**
* 2007-08-20 create by jimmy
*
*/
package com.infinitiessoft.sql;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.*;
import javax.servlet.ServletException;
import javax.sql.*;
import org.apache.commons.dbcp.BasicDataSource;


/**
*
* @author jimmy
*/
public class ConnectionManager {

public static final String JDBC_MYSQL = "jdbc/mysql";
public static final String JDBC_ORCALE = "jdbc/orcale";
public String JDBC_TYPE;
public static DataSource dataSource = null;
public String connectionStatus = "";

public ConnectionManager(){
this.init();
}
public ConnectionManager(String type) {

if(type.equalsIgnoreCase(this.JDBC_ORCALE)){
this.JDBC_TYPE = this.JDBC_ORCALE;
}else{
this.init();
}
}

public void init(){
this.JDBC_TYPE = this.JDBC_MYSQL;
}

public Connection getConnection(){

Connection conn = null;
DataSource ds = null;
BasicDataSource bds = null;

try{
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup(JDBC_TYPE);

BasicDataSource dbs =(BasicDataSource)ds;
this.connectionStatus = "jdbc type:"+this.JDBC_TYPE+"MaxActive:"+dbs.getMaxActive()+",NumActive: " + dbs.getNumActive() + ",NumIdle: " + dbs.getNumIdle();
//System.out.println(this.connectionStatus);

if( dbs.getNumActive() >= dbs.getMaxActive()){
// System.out.println("`" + JDBC_TYPE + "' is an unknown DataSource");
// System.out.println("'Connection is Busy!!");
this.connectionStatus = "Connection is Busy!!";
}else{
conn = ds.getConnection();
}

}catch(Exception ex){
ex.printStackTrace();
}finally{
System.out.println(this.connectionStatus);
}
return conn;
}



public int getMaxActive(BasicDataSource bds){
return bds.getMaxActive();
}


public int getMaxIdle(BasicDataSource bds){
return bds.getMaxIdle();
}


public String printStatus(){
return this.connectionStatus;
}
public void freeConnection(Connection conn){

if(conn!=null){
try {
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}



}

使用 dbcp 做 connection pool(上)

1. context 設定



auth="Container"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
loginTimeout="10"
maxWait="5000"
maxActive="100"
maxIdle="10"
name="jdbc/mysql"
testOnBorrow="true"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/TICP"
username="root"
password=""
validationQuery="select 1"/>



2. web.xml

....

JNDI JDBC DataSource
jdbc/GUESTBOOK
javax.sql.DataSource
Container

.....

2007年10月1日 星期一

取得localhost ip及轉換DNS TO IP

package com.webtest;

import java.net.InetAddress;
import java.net.UnknownHostException;

/**
* @author jimmy
*/
public class ip {

public String getip(){ //local ip
String localip = "";
try{
InetAddress address=InetAddress.getLocalHost();
localip=address.getHostAddress();
} catch(UnknownHostException uhe){
localip = "Unable to find: ";
}
return localip;
}

public String DNS2ip(String hostname){ // server ip
String strvar="";
try{
InetAddress address=InetAddress.getByName(hostname);
strvar=address.getHostAddress();
} catch(UnknownHostException uhe){
strvar="Unable to find: "+hostname;
}
return strvar;
}

static public void main(String args[]){
ip a=new ip();
//System.out.println(aa.getip(args[0]));
System.out.println(a.getip());
System.out.println(a.DNS2ip("www.yahoo.com.tw"));
}

}

2007年9月26日 星期三

JSP Context 備忘 -- 抓取server Path 路徑

抓取server Path 路徑,我比較常用的二個方法


方法一(印出的時侯code比較短)
<%
String addr = request.getRemoteAddr();
int port = request.getServerPort();
String contextpath = request.getContextPath();
String path = "http://"+addr+":"+String.valueOf(port)+contextpath;
pageContext.setAttribute("path",path);
%>
${path} //印出

//方法二(一行搞到)
http://${pageContext.request.remoteAddr}:${pageContext.request.serverPort}

2007年9月17日 星期一

mysql install --Mac OS X (TAR packages)

下載 Mac OS X (TAR packages)

1.解壓縮放到自已方便記住的地方

2.執行以下的command

shell> scripts/mysql_install_db --user=root
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &

3.加上權限

macbook@jimmys-Macbook[[~/data/mysql/bin]$./mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database testdb character set utf8;
Query OK, 1 row affected (0.04 sec)

mysql> grant all on *.* to jimmy@localhost identified by '1234';
Query OK, 0 rows affected (0.00 sec)

4.測試

macbook@jimmys-Macbook[[~/data/mysql/bin]$./mysql -u jimmy -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.0.45 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from user;

2007年9月5日 星期三

jforum 討論區 測試

在安裝的過程當中,出現了一個很奇怪的error
Please give write access for the user who is running the webserver
to the file 'index.htm' and for the directory 'WEB-INF/config' and its
subdirectories before continuing.
叫你要把那些地方的權限修改成可以讀寫的,但是都改了仍舊不行
在網路上有找到一個解決的方法

命名一支為 __index.redirect 的檔案,且內容是空的就可以了

太神了,這樣竟然過了。

2007年7月23日 星期一

越來越無所謂了

我很久沒接過你真正關心的電話
我很久沒感受到你想我的感覺

這一切似乎
關心少了點
想我少了些
愛自己多了點
你的態度變得越來越強烈
爭執是少了點但你卻已不再想要了解我的感覺

以前很多都是你讓我 現在很多都是我讓你
以前你常擔心我心情不好 現在是我常擔心你心情煩躁
你累的時侯 我會想辨法讓你心情變輕鬆
你煩的時侯 我努力說一萬個理由讓你解憂解愁
你心情不好的時侯 我盡可能說些事讓你變快樂

或許是我說話不夠動聽不夠溫柔
少了話言密語 少了表達感情
最近 很少讓我感受到你很想我
最近 很少讓我感受到你需要我
最近 很少讓我覺得你很在乎我
一切開始隨著時間
一點一滴的流逝了妳以前純真愛我想我的感覺
多年來的感情
有時讓我覺得
這一切 也變得越來越無所謂了

2007年7月1日 星期日

ISS流浪記

在2007年七月一日這一天我公司(Infinitiessoft)必須流浪一個多星期的日子,因為新公司還沒裝潢好,而原本在中山的臨時辦公室時間也到期了。 所以今天在七賢路上的尚品咖啡暫居一天,換個角度來看,偶爾在外面上班的感覺也還滿新鮮的,老闆文裕很辛苦的在經營這間公司,歷經了許多的風風雨雨,我想在7月應該是公司收穫的日子了。未來的日子,....... Infinitiessoft大家加油!!

2007年6月14日 星期四

Mappings of IP addresses to host names

如果是在 XP OS 位置是在 C:\WINDOWS\system32\drivers\etc
找到 hosts檔案就可以加上你要對應ip 的 hostname
例如:
127.0.0.1 localhost
140.117.42.231 svn.infinitiessoft.com

2007年6月6日 星期三

被開紅單了

唉啊,在從中山大學回高雄的路上,因為沒停紅燈被開紅單了啦,一方是自己講話沒注意,另一方面是那邊紅綠燈不是非常的明顯,當看到紅燈時,已經快到白線的地方,想說不想這樣繄急煞車,所以就給它過去了,沒想到後過竟跟來了一台警車,....實在是有夠....背的,說什麼那個地方平常都是勸導,因為最近這三天交通大執法,所以抓的很嚴。

2007年5月31日 星期四

公司搬家的最後一天

今天是在博愛路的這邊的最後一天了,準備搬家到大順路附近,雖然在這邊我才來半年多的時間,但因為前陣子光陽事件走了二個同事,中間又有阿凱的短暫的回插曲,接著在六月底公司的惠淳也因為家裡的因素,所以要上台北去工作了。這段時間實在是發生了太多的事情了,所以,也留下了不少深刻回憶。往後公司要更努力的繼續經營下去,我想一樣仍舊能朝南區最大的java team的目標前進的,而我也會比以往更努力的學習。

2007年5月27日 星期日

好熱的天氣

5/26(六),老姐下午因為要去跳騷市場賣東西所以要幫忙搬東西,我只能說...熱...熱...熱,跟之前在屏東讀書一樣,沒事多流汗,多流汗...會出事,因為我太會流汗了,不用幾分鐘就全身溼了,所以趕快回家洗澡去,這們熱的天氣,實在是不適合在外面papago。

2007年5月24日 星期四

Studio creator 真是大怪物

用creator來開發 web 在前端 view的部份是省下了不少工,但是它的效能...實在非常可怕,如果筆記型沒有1G的記憶體以上,我還是建議你不用裝來玩,不知道是專案比較大的原因還是本來它就是大怪物,現在開啟creator平均都要5~10分鐘,而已動不動就給我當掉。今天早上一來就開了creator,好不容易順利開啟了,第一個動作拉一個label後,它竟然給我睡著了,過了5分鐘它也不理我,唉,只好又重開吧。

2007年5月23日 星期三

mac Book 入手

前陣子買了macBook,同時跑二、三個作業系統的感覺真是,因為最近工作比較忙,所以沒有太多時間在把舊資料轉到mac上,不過,昨天在mac os上把php+mysql+apache架好了,真是太.....爽了。

開張心得

我己經忘記這是我第幾個blog了,每個blog的日誌似乎都不會太久。