Posts Tagged ‘IT’

Java JSP 正規式取出中文字

5 六月, 2009

import java.util.regex.Matcher;import java.util.regex.Pattern;String str="o中文o";String pattern="";Pattern p=null;Matcher m = null;//中文字碼範圍pattern="[\u4e00-\u9fa5]";p=Pattern.compile(pattern);m=p.matcher(str);while(m.find()){	System.out.println(m.group());}

Java JSP 讀取UTF-8檔案

4 六月, 2009

以下程式不考慮UTF-8 BOM的問題
 

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;File fn=new File("utf8.txt");FileInputStream fis = new FileInputStream(fn);//指定utf-8編碼BufferedReader br = new BufferedReader( new InputStreamReader( fis,"utf-8" ) );String file_str_append="";String file_str="";while((file_str_append=br.readLine())!=null){  file_str+=file_str_append;}br.close();fis.close();//將utf-8所有檔案內容輸出System.out.println(file_str);

中央氣象局 RSS 解析正規式 Regex

1 五月, 2009

<%@page contentType="text/html; charset=utf-8" errorPage=""%>&#x10;<%@page import="java.util.regex.Pattern"%>&#x10;<%@page import="java.util.regex.Matcher"%>&#x10;<%&#x10;out.clear();&#x10;%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">&#x10;<html xmlns="http://www.w3.org/1999/xhtml">&#x10;<head>&#x10;<title>Parse Central Weather Demo</title>&#x10;<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />&#x10;</head>&#x10;<body>&#x10;<%&#x10;String str="";&#x10;String pattern="^([\\D]+)\\d{2}/\\d{2}\\s([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s(\\d{1,3})%\\((\\d{2}/\\d{2})\\s(\\d{2}:\\d{2})[\\D]+\\)$";&#x10;Pattern p=null;&#x10;Matcher m=null;&#x10;%>&#x10; 台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)<br />&#x10;<%&#x10;str=" 台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)";&#x10;pattern="^[\\D]+\\d{2}/\\d{2}\\s([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s*(\\d{1,3})%\\((\\d{2}/\\d{2})\\s(\\d{2}:\\d{2})[\\D]+\\)$";&#x10;p = Pattern.compile(pattern);&#x10;m = p.matcher(str.trim());&#x10;if(m.find()){&#x10;	for (int i = 1; i <= m.groupCount(); i++) {&#x10;      out.println("group(" + i + "):" + m.group(i)+"<br />");&#x10;    }&#x10;    m.reset();&#x10;}&#x10;%><hr />明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0% <br />&#x10;<%&#x10;str="明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0% ";&#x10;pattern="^([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s*(\\d{1,3})%$";&#x10;p = Pattern.compile(pattern);&#x10;m = p.matcher(str.trim());&#x10;if(m.find()){&#x10;	for (int i = 1; i <= m.groupCount(); i++) {&#x10;      out.println("group(" + i + "):" + m.group(i)+"<br />");&#x10;    }&#x10;    m.reset();&#x10;}&#x10;%><hr />05/02 溫度:22 ~ 28 晴時多雲&#x10;<%&#x10;str="05/02 溫度:22 ~ 28 晴時多雲";&#x10;pattern="^(\\d{2}/\\d{2})\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s([\\D]+)$";&#x10;p = Pattern.compile(pattern);&#x10;m = p.matcher(str.trim());&#x10;if(m.find()){&#x10;	for (int i = 1; i <= m.groupCount(); i++) {&#x10;      out.println("group(" + i + "):" + m.group(i)+"<br />");&#x10;    }&#x10;    m.reset();&#x10;}&#x10;%>&#x10;</body>&#x10;</html>

&#x10;

 

&#x10;

執行結結果:

&#x10;

台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)
&#x10;group(1):今晚至明晨
&#x10;group(2):晴時多雲
&#x10;group(3):22 ~ 24
&#x10;group(4):0
&#x10;group(5):05/01
&#x10;group(6):16:30

&#x10;


&#x10;

明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0%
&#x10;group(1):明日白天
&#x10;group(2):晴時多雲
&#x10;group(3):24 ~ 28
&#x10;group(4):0

&#x10;


&#x10;

05/02 溫度:22 ~ 28 晴時多雲&#x10;group(1):05/02
&#x10;group(2):22 ~ 28
&#x10;group(3):晴時多雲

&#x10;

 

&#x10;

 

&#x10;

 

&#x10;

備註:中央氣象局的RSS2.0並不是完全符合W3C的標準,且資料呈現不夠有條理,不易被解析

瞎掰Vista的由來

1 五月, 2009

瞎掰Vista的由來

M$總裁問開發團隊:Longhone要到哪個版本開始發行?
團隊:Beta。
M$總裁:Vista~~sounds good, just do it!

所以其實 **Windows Beta** ,才是正解
Vista只是口誤,而Windows7才是真正的stable release。

開發有中文內容的專案要考慮的事情

30 四月, 2009

跟一個美工人員說目前的專案要有中文,

&#x10;

美工會考慮有沒有適合的中文字型

&#x10;

 

&#x10;

跟一個程式人員說目前的專案要有中文,

&#x10;

程式人員會考慮會不會有中文衝碼

&#x10;

 

&#x10;

跟一個資料庫管理人員說目前的專案要有中文,

&#x10;

資料庫管理人員會考慮資料儲存是否要用Unicode儲存中文

&#x10;

 

&#x10;

跟一個企劃人員說目前的專案要有中文,

&#x10;

企劃人員會考慮內容是否能夠因為中文而引人注目

&#x10;

 

&#x10;

跟老闆說目前的專案要有中文,

&#x10;


老闆會考慮什麼時候開始專案會開始賺錢,有沒有中文都沒關係

Win32 PHP5 ODBC To Access Demo

27 四月, 2009

//設定ODBC來源,使用真實檔案路徑&#x10;$dblink_id = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\db.mdb","mdb id","mdb pw"  ) or die ("db error");&#x10;//sql式,選出id的欄位&#x10;$sql='SELECT id FROM ur_table';&#x10;&#x10;if ($dblink_id) {&#x10;  //執行sql&#x10;  $res=odbc_exec($dblink_id,$sql);&#x10;  if($res) {&#x10;    //初始陣列&#x10;    $arr=array();&#x10;    //odbc_fetch_row不會回傳陣列,所以必須自行轉置,並指定使用hash的方式推入陣列&#x10;    while($list=odbc_fetch_array($res,ODBC_ASSOC)){&#x10;      array_push($arr,$list);&#x10;    }&#x10;    for( $i=0;$i<count($arr);$i++){&#x10;      //從陣列中取值的方式$arr[陣列索引].[欄位名稱]&#x10;      echo 'id:'.$arr[$i]['id']."\n";&#x10;    }&#x10;  }&#x10;  else{&#x10;    echo 'odbe_exec error'."\n";&#x10;  }&#x10;}&#x10;else{&#x10;  echo 'db link error'."\n";&#x10;}&#x10;

Firefox3 Add-ons PlainOldFavorites FX使用IE我的最愛

21 四月, 2009

PlainOldFavorites

&#x10;
https://addons.mozilla.org/zh-TW/firefox/addon/668

&#x10;
說明:在Firefox內使用IE我的最愛

&#x10;

&#x10;

這個plugin適合剛從IE跳槽到FX3的使用者,

&#x10;

安裝完後,在Firefox內就會出現"我的最愛"了,而且跟IE上,我的最愛使用方式相同喔!

&#x10;

PlainOldFavorites_bar

&#x10;

jQuery 1.3.2 Selectors Demo

9 三月, 2009

Selectors:Hierarchy

  1. ancestor descendant
    選出所有ancestor之下的descendant元素,不論descendant位於ancestor之下幾層。
    類似xpath語法://ancestor//descendant
  2. parent > child
    選出parent的子元素。
    類似xpath語法://parent/child
  3. prev + next
    選出prev元素接著next元素的所有next元素。
    類似的xpath語法://prev/next
  4. prev ~ siblings
    選出prev的所有siblings
    類似的xpath語法://prev/siblings/following-sibling::*
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery 測試</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" mce_src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<div id="msg_div">default text</div>
<form name="f1">
<span>
<input type="text" name="text1" value="this is f1 text1 value" /><br />
<input type="text" name="text2" value="this is f1 text2 value" /><br />
</span>
<input type="button" value="Demo parent child" id="btn1" /><br />
<input type="button" value="Demo parent > child" id="btn2" /><br />
<input type="button" value="Demo prev + next" id="btn3" /><br />
<input type="button" value="Demo prev ~ siblings" id="btn4" /><br />
</form>
<script type="text/javascript"><!--
$(document).ready(function(){
	var ck='blue';
	$('#btn1').click(function(){
		$('#msg_div').text($.trim($('form[name=f1] input[name=text1]').val()));
	});
	$('#btn2').click(function(){
		$('#msg_div').text($.trim($('form[name=f1] > span > input[name=text2]').val()));
	});
	$('#btn3').click(function(){
		if(ck=='blue'){
			$('span+input').css("color", "yellow");
			ck='yellow';
		}
		else{
			$('span+input').css("color", "blue");
			ck='blue';

		}
	});
	$('#btn4').click(function(){
		$('span ~ input[id=btn1]').css('color','green');
	});
});
// --></script>
</body>
</html>


XSS 攻擊!?walkOne安全嗎?附 XSS 簡易阻斷方法

2 三月, 2009

平常在看不知名人士的部落格時,

&#x10;

也許會被一些部落格元件給吸引,覺得自己也想用一個,

&#x10;

就隨便把來路不明的部落格元件掛到了自己的部落格,

&#x10;

過沒多久卻發現一些私人文章、上鎖文章、甚至完全沒有公開的相簿,

&#x10;

在別處被人完完整整,臉紅心跳的貼出來(這不是塵灌吸~這不是塵灌吸~)

&#x10;

&#x10;

通常人的第一反應,都是:"我的電腦中毒了",

&#x10;

然後就


正妹

好人
,好人去 黃色鬼屋,辛辛苦苦的把電腦重灌完畢

&#x10;

接著平靜的生活過沒多久,同樣的事情又發生了,陷入無盡的重灌...(鄉民也開心的無盡的抓~~喂)

&#x10;

&#x10;

其實~~這最大的元兇也許就是那個來路不明的部落格元件,元件內可能包含了 XSS 攻擊的程式碼!

&#x10;

而不是自己的電腦中毒所造成的資料外流。

&#x10;

 

 

&#x10;

Q:沒有辦法防範XSS攻擊嗎?

&#x10;

A:XSS的攻擊是非常難看出的,因為它完全不會破壞你的系統。只能消極的慎選自己平時逛的網站,不要使用來路不明的部落格元件,一定要養成登出後再關閉瀏覽器的好習慣,最後一個良心的建議:
敢放上網的東西,就不要怕被人看
…XD

&#x10;

 

 

&#x10;

Q:walkOne會有此問題嗎?

&#x10;

A:目前 walkOne 的登入機制採 IP+cookies+多網認證制,且有提供高安全性模登入模式,安全性較高。

&#x10;

&#x10;

以下是寫給網站開發人員看的,不懂的人請把它當是我的碎碎唸吧!

&#x10;

 

 

&#x10;

基於網站開發人員有義務把會員的資料做到最嚴密的
流出
保護,

&#x10;

我們必須設法阻斷XSS攻擊,以下是重點:

&#x10;

&#x10;

訪客未登入的系統 key 值在 front.net 與 back.net 相同,

&#x10;

當訪客從 back.net 登入後,會有一固定的新系統 key 值,

&#x10;

同時存於 front.net 及 back.net ,並在 back.net 建立 cookies,

&#x10;

再將已登入的訪客導至 front.net ,且也於 front.net 建立 cookies,

&#x10;

正常訪客身上將同時帶有 front.net 及 back.net 的認證 cookies,

&#x10;

當 XSS 攻擊者偷取cookies時,僅能偷取到 front.net 的 cookies,

&#x10;

只要 XSS 攻擊者沒有真正於 back.net 上建立過 cookies,

&#x10;

則back.net會一直回傳未登入的系統 key 值,

&#x10;

於是當訪客登入後在 front.net 操作時,

&#x10;

判斷 front.net 的系統 key 值與 back.net 傳回的系統 key 值是否相等,

&#x10;

即可判斷該訪客是否有透過正常管道登入。

&#x10;

至於如何在 front.net 的頁面中取得 back.net 的 cookies,

&#x10;

可以參考 jQuery 1.3.1 Ajax Cross Domain JSP Demo

&#x10;

Win32 Apache2.2.x 上建置SVN服務

14 一月, 2009

Apache官網:http://httpd.apache.org/

文中使用Apache版本:http://archive.apache.org/dist/httpd/binaries/win32/apache_2.2.10-win32-x86-no_ssl.msi

SVN官網:http://subversion.tigris.org/

文中使用SVN版本:http://subversion.tigris.org/files/documents/15/44589/svn-win32-1.5.5.zip

1.Apache2安裝及設定
(使用下一步安裝法…略),開啟防火牆80埠
本人是將Apache安裝於C:\Apache2.2\bin\httpd.exe
新增 C:\Apache2.2\bin 到環境變數PATH
svn-win32-1.5.5.zip 解壓縮到 C:\svn-win32-1.5.5 資料夾
新增 C:\svn-win32-1.5.5\bin 到環境變數 PATH
為了讓環境變數 PATH 生效,強烈建議您重新開機
Stop Apache,將 Apache 服務停止
複製 C:\svn-win32-1.5.5\bin\mod_dav_svn.so 及 C:\svn-win32-1.5.5\bin\mod_authz_svn.so
將兩檔案貼至C:\Apache2.2\modules
開啟 C:\Apache2.2\conf\httpd.conf
移除 #LoadModule dav_fs_module modules/mod_dav_fs.so 開頭的#
移除 #LoadModule dav_module modules/mod_dav.so 開頭的#

httpd.conf 的尾端加入

#修改/WEB-INF/及/META-INF/,配合tomcat目錄權限,
#要瀏覽這兩個目錄時,至少要通過基本Apache的帳號認證
<LocationMatch "/WEB-INF/">
  AllowOverride AuthConfig
  Order allow,deny
  Allow from all  
  Order deny,allow
  Deny from all
</LocationMatch>
<LocationMatch "/META-INF/">
  AllowOverride None AuthConfig
  Order allow,deny
  Allow from all  
  Order deny,allow
  Deny from all
</LocationMatch>

# 添加 SVN 的模組
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

#http://localhost/svn的目錄設定
<Location /svn>
  DAV svn

  #SVN實體磁碟路徑
  SVNPath C:/svn-win32-1.5.5/svn
  AuthType Basic
  AuthName "Subversion repository"

  #使用者權限設定檔
  AuthzSVNAccessFile C:/svn-win32-1.5.5/auth

  #使用者密碼檔
  AuthUserFile C:/svn-win32-1.5.5/pwd
  Require valid-user
</Location>
httpd.conf 存檔
2.權限設定說明
目前有3個帳號,admin_user是總管理者,user_a、user_b都是一般使用 者,http://localhost/svn/project_1可讓一般使用者讀寫,http://localhost/svn/project_2 只可讓一般使用者讀,但不可以寫入
開啟命令提示字元cmd.exe
輸入:svnadmin.exe create C:\svn-win32-1.5.5\svn ,並按 Enter 鍵送出
建立新的純文字文件 C:\svn-win32-1.5.5\auth
注意:auth 是一個無副檔名的純文字檔而非一個目錄
於auth內輸入:

[groups]
admins = admin_user
users = user_a,user_b

[svn:/]
* = r
@admins = rw

[svn:/project_1]
@admins = rw
@users = rw
[svn:/project_2]
@admins = rw
@users = r
auth 存檔
3.使用者的密碼設定
在命令提示字元內
  • 輸入 htpasswd.exe -c C:\svn-win32-1.5.5\pwd admin_userEnter 鍵送出,會提示設定 admin_user 的密碼兩次,-c 代表初始建立密碼檔案
  • 輸入 htpasswd.exe C:\svn-win32-1.5.5\pwd user_aEnter 鍵送出,一樣會提示設定 user_a 的密碼兩次
  • 輸入 htpasswd.exe C:\svn-win32-1.5.5\pwd user_bEnter 鍵送出,一樣會提示設定 user_b 的密碼兩次
4.啟動 Apache
5.建立SVN內的目錄
在命令提示字元內
6.最後測試
開啟瀏覽器,輸入網址 http://localhost/svnEnter 鍵送出
輸入 admin_user 的帳號密碼
設定Apache2.2+SVN1.5.5成功的畫面
album_photo_9639_031941.jpg