發表文章

目前顯示的是 一月, 2009的文章

Java Coding Style、Code Conventions

寫程式除了讓程式能達成我們的目的之外
平常寫程式也要注意一下coding style
如同這份文件中的導論所說的:* 一套軟體的生命期 80% 都是花費在維護上。
* 任何軟體都很難從頭到尾全由原來的作者來維護。
* 程式碼慣例改善軟體的可讀性,讓工程師可以更快速完整的了解新程式碼。
* 如果你將你的原始碼當作產品,你必須確定它跟你創造的其他產品包裝的一樣好,一樣乾淨。
這就是我們要建立好的coding style的理由

Sun Microsystems 官方文件 (英文)
Code Conventions for the JavaTM Programming Language
中文版
http://www.javaworld.com.tw/jute/post/view?bid=20&id=27897&sty=1&tpg=1&age=-1

Java:日期時間格式化輸出入處理:Date、Calendar、SimpleDateFormat

在使用Java的這些日子裡,
Java中的日期時間格式處理總是讓我覺得有些混亂不夠直覺。
例如我想要知道2009/1/1是星期幾,
那就要經過不少步的處理轉換才能得知正確的答案。

程式如下:
其中第一種方式可以接受我們常用的日期格式 2009/1/1 或 2009/01/01,
第二種看起來比較簡便但就必須自己把年月日分開再輸入呼叫程式,
其中年和日可以直接輸入2009和1,但月份的地方要特別注意,
最好使用 Calendar.月份的方式輸入,因Calendar.JANUARY的 int值是 0而非1。
若直接以月份輸入的話會出錯!


(2011.11.24更新)
在程式的最下面補充如何格式化印出現在的時間。
只要先用 Date() 取得現在的日期時間,
再用SimpleDateFormat格式化即可。

1 package demo; 2 3 import java.text.DateFormat; 4 import java.text.ParseException; 5 import java.text.SimpleDateFormat; 6 import java.util.Calendar; 7 import java.util.Date; 8 9 public class SimpleDateFormatDemo {10 11 public staticvoidmain(String[] args)throws ParseException {12 13 // 準備輸出的格式,如:星期四 2009/01/0114 SimpleDateFormat sdf =newSimpleDateFormat("E yyyy/MM/dd");15 16 // 利用 DateFormat 來parse 日期的字串17 DateFormat df = DateFormat.getDateInstance();18 Date date = df.parse("2009/1/1");19 Calendar calendar = Calendar.getInstance();20 calendar.setTime(date);21 Syste…

利用Jakarta.Commons.HttpClient抓取網頁、網站(Parser)

HttpClient 已推出 4.x 版,若您要使用最新的版本請看:
Apache HttpClient 4.x 使用 GET, POST 範例

在撰寫程式的時候有時會我們需要取回網路上的資料做處理
或者是要以程式模擬Client端發出request
這時候我們就可以使用Jakarta.Commons.HttpClient來完成

Jakarta.Commons.HttpClient使用到下列的函式庫
Apache Commons HttpClient 3.xApache Commons CodecApache Commons Logging
三者必須在使用前就都設好classpath否則在執行時會出錯

[Jakarta Commons] HttpClient模擬Client端發出request的介紹
Jakarta.Commons.HttpClient 能支援許多功能,例如:
實作所有的 HTTP methods (GET, POST, PUT, DELETE,HEAD, OPTIONS, and TRACE)
支援 HTTPS 的協定
支援 proxies 的各種情況
支援認證機制
自動的 cookie 處理模式 .....等等
更多介紹可連回[Jakarta Commons] HttpClient模擬Client端發出request查看

以下有幾個比較完整的 Get 和 Post的範例程式連結:
Get範例:
[Jakarta Commons] HttpClient模擬Client端發出request
JSP精選實用範例(五):抓取網頁
Post範例:
Re:TinyUrl using Jakarta HttpClient [Re:qrtt1]
更多原始的範例可以在HttpClient Examples看到

最後附上我自己改來用的程式碼
可能要看過上面的範例之後比較知道在做什麼

import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpMethod;import org.apache.commons.httpclient.NameValuePair;import org.apache.commons.httpclient.methods.GetMet…

java.util.regex正規式的應用:Pattern和Matcher

Regular Expression,中文稱:正規式、正規表示式、正則表示式,
在字串的比對上是無比強大的工具,
在java 1.4之後Regular Expression正式被java所支援,
若你使用Eclipse來開發Java,下面這兩個套件可在 Eclipse中幫助你測試你的Regular Expression。
Eclipse 好用套件:Regular Expression TesterEclipse 的 plugin,http://myregexp.com/eclipsePlugin.html 而若你需要的是線上的測試工具,可以參考: Online Regular Expression Tester:線上正規式測試驗證工具網站
一般我們常用的字串操作有很多
譬如說檢查字串中是否包含某個字串
這點可以利用contains來達到
也可以利用Regular Expression來比對

除此之外Regular Expression也可以達到更多判別
例如說字串是不是由什麼特定字串開始或結束
而更強大的功能在於能將符合需求的字串濾出
只要掃過一次就能得到所有符合的項目真的非常方便

如果想得到更詳細的介紹請看 Regular Expression 簡介
語法的介紹則可參考 Java Regular Expression的學習筆記 [精華]

以下的程式簡單地示範了幾個常用的method:
package demo.regex;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Regex {public staticvoidmain(String[] args) {// 測試 testString 中是否包含了 aaString testString ="ABCaaabcaac";System.out.println("String.contains():\t"+testString.contains("aa"));// 和上面目的相同,但運用了 regular expression// 而這其實是利用了 Pattern 的靜態方法matches()System.out.println("String.m…

Java:JSON in Java 的簡單程式範例

若你要找的是打包 json.jar 的方式或想直接下載,
請到 Java:JSON.jar 下載與JSON source code 打包教學

JSON(JavaScript Object Notation)
因為格式簡單且用純文字方便讀取
支援了各式各樣的語言(都有相關的函式可用)
在資料處理交換上是很方便的格式
可以在這邊看到詳細介紹

以下的程式簡單地示範了JAVA中JSON的應用
其中包含了一個 PeopleBean 及主要的程式碼

PeopleBean:
1 package werdna1222coldcodes.blogspot.com.demo.json; 2 3 public class PeopleBean { 4 5 private String name; 6 privateint age; 7 privateboolean gender; 8 9 publicPeopleBean(String name,int age,boolean gender) {10 setPeopleBean(name, age, gender);11 }12 13 public String getName() {14 return name;15 }16 17 publicvoidsetName(String name) {18 this.name = name;19 }20 21 publicintgetAge() {22 return age;23 }24 25 publicvoidsetAge(int age) {26 this.age = age;27 }28 29 publicbooleangetGender() {30 return gender;31 }32 33 publicvoidsetGender(boolean gender) {34 this.gender = gender;35 }36 37 /***************************************************************/38 publicvoidsetPeopleBean(String name,int age,boolean gender) {39 setName(name);40 setAge(age);41 setGender…

在blogger上使用Lightbox

圖片
Lightbox 2使用了Prototype FrameworkScriptaculous Effects Library
透過內嵌的 .js(JavaScript)和.css 達成圖片顯示的特效
這對會在blog上發表有照片的文章的部落客相當有幫助
因為只要點一下在文章中長寬受限的圖就能顯示完整的原始圖片了

首先先展示一下Lightbox 2實際運作的效果
點下圖片後應該就能感受到Lightbox 2的魅力了
如果沒辦法看到Demo請直接連結至Lightbox 2網頁觀看



要在blog上使用Lightbox 2的效果有兩個步驟
第一是要在blog本身的html中內嵌語法
以blogger來說先到 Lightbox 2下載最新的 zip檔後解壓縮
將 css、image、js資料夾上傳至自己的網路空間
上傳完後再到版面配置中的修改html
在<head>和</head>之間加入類似以下的語法
<!-- /************************ LightBox **************************/ //-->
<link href='你的網路空間/css/lightbox.css' media='screen' rel='stylesheet' type='text/css'/>
<script src='你的網路空間/js/prototype.js' type='text/javascript'/>
<script src='你的網路空間/js/scriptaculous.js?load=effects,builder' type='text/javascript'/>
<script src='你的網路空間/js/lightbox.js' type='text/javascript'/>
<!-- /************************* End LightBox *********************/ //-->
其中淺藍色的地方是註解,方便以後修改用
而你的網路空間的部分
若是自己架的blo…

相關文章