建立群組與使用者
groupadd postgres
useradd -g postgres postgres
安裝RPM source安裝方式可參考這裡
rpm --import http://yum.pgsqlrpms.org/RPM-GPG-KEY-PGDG
rpm -ivh postgresql-libs-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-debuginfo-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-docs-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-devel-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-server-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-plperl-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-plpython-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh postgresql-test-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh uuid-1.6.1-3.fc9.i386.rpm
rpm -ivh uuid-pgsql-1.6.1-3.fc9.i386.rpm
rpm -ivh postgresql-contrib-8.3.7-1PGDG.fc10.i386.rpm
rpm -ivh tcl-8.5.3-1.fc10.i386.rpm
rpm -ivh postgresql-pltcl-8.3.7-1PGDG.fc10.i386.rpm
---------------------------------------------------------------------------
初始化DB
service postgresql initdb -D /var/lib/pgsql/data -E UTF-8 --locale=zh_TW
修改設定檔
cd /var/lib/pgsql/data
vi postgresql.conf
listen_addresses = '*'
port=5432
vi pg_hba.conf
host all all 192.168.0.0/16 trust
修改iptables,開放5432 port連線
vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
service iptables restart
service postgresql start
ps auxww | grep ^postgres
設定開機時啟動
chkconfig postgresql on
Google Code Prettify
2009年5月18日 星期一
Spring MultiActionController 也能應用在檔案下載功能
public ModelAndView download(HttpServletRequest req, HttpServletResponse res) throws Exception {
String sno = req.getParameter("abc");
try{
List list = dao.Select("select * from abc_file where abc="+abc);
if(list.size() != 0){
Map map = (Map) list.get(0);
String file_name = map.get("file_name")==null?"":(String)map.get("file_name");
Long file_size = map.get("file_size")==null?Long.valueOf(0):(Long)map.get("file_size");
byte[] file_contents = (byte[]) map.get("file_contents");
String content_type = map.get("content_type")==null?"":(String)map.get("content_type");
String agent = req.getHeader("User-Agent");
res.reset();
if(agent.indexOf("MSIE") != -1){
file_name = URLEncoder.encode(file_name,"UTF8");
}else{
file_name = new String(file_name.getBytes("UTF-8"),"ISO8859-1");
}
res.setHeader("Content-disposition","attachment; filename="+file_name);
res.setContentLength(file_size.intValue());
res.setContentType(content_type);
BufferedOutputStream ou = new BufferedOutputStream(res.getOutputStream());
ou.write(file_contents);
ou.flush();
ou.close();
}
} catch ( Exception e ) {
logger.error(e);
throw e;
}
return null;
}
String sno = req.getParameter("abc");
try{
List list = dao.Select("select * from abc_file where abc="+abc);
if(list.size() != 0){
Map map = (Map) list.get(0);
String file_name = map.get("file_name")==null?"":(String)map.get("file_name");
Long file_size = map.get("file_size")==null?Long.valueOf(0):(Long)map.get("file_size");
byte[] file_contents = (byte[]) map.get("file_contents");
String content_type = map.get("content_type")==null?"":(String)map.get("content_type");
String agent = req.getHeader("User-Agent");
res.reset();
if(agent.indexOf("MSIE") != -1){
file_name = URLEncoder.encode(file_name,"UTF8");
}else{
file_name = new String(file_name.getBytes("UTF-8"),"ISO8859-1");
}
res.setHeader("Content-disposition","attachment; filename="+file_name);
res.setContentLength(file_size.intValue());
res.setContentType(content_type);
BufferedOutputStream ou = new BufferedOutputStream(res.getOutputStream());
ou.write(file_contents);
ou.flush();
ou.close();
}
} catch ( Exception e ) {
logger.error(e);
throw e;
}
return null;
}
Spring MVC + Velocity
參考手冊
http://www.javaworld.com.tw/confluence/display/opensrc/Spring
http://velocity.apache.org/engine/devel/user-guide.html
開發外掛
SpringIDE http://springide.org/updatesite/
VeloEclipse http://veloeclipse.googlecode.com/svn/trunk/update/
Dreamweaver Velocity http://velocity.gilluminate.com/
設定
範例
http://www.javaworld.com.tw/confluence/display/opensrc/Spring
http://velocity.apache.org/engine/devel/user-guide.html
開發外掛
SpringIDE http://springide.org/updatesite/
VeloEclipse http://veloeclipse.googlecode.com/svn/trunk/update/
Dreamweaver Velocity http://velocity.gilluminate.com/
設定
- 相關jar檔
commons-collections.jar
commons-lang.jar
commons-logging.jar
log4j-1.2.15.jar
spring.jar
spring-web.jar
spring-webmvc.jar
velocity-1.6.2.jar
velocity-tools-generic-1.4.jar
velocity-tools-view-1.4.jar - web.xml
將所有網址.do的頁面導向spring servlet做處理。 - spring-servlet.xml
Bean id=velocityConfig,設定Velocity參數。
Bean id=viewResolver,解析*.vm頁面。
Bean id=paramMethodResolver,解析url上的method參數,導入至對應的Method,預設值為view。
Bean id=thinkonDao,宣告為Bean方式,方便其它Bean注入引用。
Bean id=urlMapping,解析url,導入至對應的Bean id。
Bean id=indexAction,測試範例,對應/index.do,注入dao引用。
範例
2009年5月15日 星期五
基本JSR-168 Portlet 開發範例
以下範例採用NetBeans 6.5開發,Portlet開發外掛為 Portal Pack 3.0。
1.建立新專案
2.填入專案名稱
3.選擇Portlet Supper相關設定
Portlet Version: 1.0(JSR-168) 2.0(JSR-286)
Create Portlet:產生Portlet java source
Create Jsps:產生 Portlet Mode對應的Jsp
Package: java source路徑
Portlet Mode: View 瀏覽模式,也是預設進入的模式。
Edit 編輯模式,通常用來修改設定參數。
Help 說明模式。
4.Portlet java source簡介
此檔類似於 Servlet
processAction:變更事件時的進入點,執行完此處在會進入所對應的事件funciton。
doView:執行VIEW模式時,所對應的function。
doEdit:執行EDIT模式時,所對應的function。
doHelp:執行HELP模式時,所對應的function。
5.processAction簡易應用
request.getPortletMode(),取得現在執行的模式。
request.getParameter(),取得傳入的參數。
request.setAttribute(),塞入參數,對應的模式或jsp顯示時,能取得此參數。
responese.setPortletMode(),修改預定要執行的模式。
6.JSP撰寫
Portlet java source中的RenderRequest會變成renderRequest。
Portlet顯示時不需要寫出完整的HTML(不需<html><body>),僅將區塊顯示出來即可,最好使用div的區塊方式。
1.建立新專案
2.填入專案名稱
3.選擇Portlet Supper相關設定
Portlet Version: 1.0(JSR-168) 2.0(JSR-286)
Create Portlet:產生Portlet java source
Create Jsps:產生 Portlet Mode對應的Jsp
Package: java source路徑
Portlet Mode: View 瀏覽模式,也是預設進入的模式。
Edit 編輯模式,通常用來修改設定參數。
Help 說明模式。
4.Portlet java source簡介
此檔類似於 Servlet
processAction:變更事件時的進入點,執行完此處在會進入所對應的事件funciton。
doView:執行VIEW模式時,所對應的function。
doEdit:執行EDIT模式時,所對應的function。
doHelp:執行HELP模式時,所對應的function。
5.processAction簡易應用
request.getPortletMode(),取得現在執行的模式。
request.getParameter(),取得傳入的參數。
request.setAttribute(),塞入參數,對應的模式或jsp顯示時,能取得此參數。
responese.setPortletMode(),修改預定要執行的模式。
6.JSP撰寫
Portlet java source中的RenderRequest會變成renderRequest。
Portlet顯示時不需要寫出完整的HTML(不需<html><body>),僅將區塊顯示出來即可,最好使用div的區塊方式。
Solaris10 安裝PostgreSQL 8.3.7
1.下載postgresql-8.3.7-S10.i386-32.tar.bz2
2.到postgres的目錄解壓縮檔案
cd /usr/postgres
bunzip2 < postgresql-8.3.7-S10.i386-32.tar.bz2 | tar xpf -
3.修改/etc/profile,增加設定
PATH=/usr/postgres/8.3-community/bin:$PATH
MANPATH=/usr/postgres/8.3-community/man:${MANPATH}
PGDATA=/var/postgres/8.3/data
export PATH MANPATH PGDATA
4.修改postgresql_83.xml內容,更新至最新版路徑
檔案路徑/var/svc/manifest/application/database/postgresql_83.xml
5.匯入設定
svccfg import /var/svc/manifest/application/database/postgresql_83.xml
svcs postgresql_83
6.初始化DB
su - postgres
/usr/postgres/8.3-community/bin/initdb -D /var/postgres/8.3/data -E UTF-8 --locale=zh_TW
7.啟動DB
/usr/sbin/svcadm enable postgresql_83:default_32bit
2.到postgres的目錄解壓縮檔案
cd /usr/postgres
bunzip2 < postgresql-8.3.7-S10.i386-32.tar.bz2 | tar xpf -
3.修改/etc/profile,增加設定
PATH=/usr/postgres/8.3-community/bin:$PATH
MANPATH=/usr/postgres/8.3-community/man:${MANPATH}
PGDATA=/var/postgres/8.3/data
export PATH MANPATH PGDATA
4.修改postgresql_83.xml內容,更新至最新版路徑
檔案路徑/var/svc/manifest/application/database/postgresql_83.xml
5.匯入設定
svccfg import /var/svc/manifest/application/database/postgresql_83.xml
svcs postgresql_83
6.初始化DB
su - postgres
/usr/postgres/8.3-community/bin/initdb -D /var/postgres/8.3/data -E UTF-8 --locale=zh_TW
7.啟動DB
/usr/sbin/svcadm enable postgresql_83:default_32bit
HTTP + SSL
//受信認的憑證方式,加入一行程式碼即可
-----------------------------------------------------------------------------------------------
//非受信認的憑證方式
//不判斷Hostname是否正確
System.setProperty( "java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol" );
URL url = new URL("https://xxx.xxx.xxx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
-----------------------------------------------------------------------------------------------
//非受信認的憑證方式
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager(){
public java.security.cert.X509Certificate[] getAcceptedIssuers(){
return null;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType){}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType){}
}};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
//不判斷Hostname是否正確
HostnameVerifier hv = new HostnameVerifier(){
public boolean verify(String hostname, SSLSession session) {return true;}
};
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(hv);
URL url = new URL("https://xxx.xxx.xxx");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
WebService + SSL
WebService Server 上的SSL憑證,為非公開受信任的憑證時
可手動將憑證匯入JDK之中
cd C:\jdk1.6.0_03\jre\lib\security
keytool -keystore client.keystore -import -file ooxx.crt
查詢清單
keytool -list -keystore cacerts
可手動將憑證匯入JDK之中
cd C:\jdk1.6.0_03\jre\lib\security
keytool -keystore client.keystore -import -file ooxx.crt
查詢清單
keytool -list -keystore cacerts
2009年5月11日 星期一
VirtualBox 筆記
訂閱:
文章 (Atom)