2014年4月7日 星期一

Invoking 'Spring Project Builder' on '/project' 花費時間太久

最近遇到在Ecslipse使用Spring開發程式時,常常Build WorkSpace時很慢
訊息僅顯示Spring Project Builder on /projectName

看了好幾篇文章,看來這是Spring的小Bug,我不想要撰寫幾行程式,一儲存就要等個
3-5分鐘甚至更久才能測試程式,這裡連續提供幾個我試圖解決的方法

1.在 Eclipse上方Windows-->Preference-->Spring-->Bean Support-->Timeout[sec]改成了600秒

本來還未改此設定之前,default是300秒,但由於專案太大,總是會花超過300秒,改成了600秒之後專案就沒有Error了<忘了Error是啥,意思好像是Build的時候timeout>

2.修改(1)剛開始沒問題,後來出現標題的問題,所以修改設定在
Windows-->Preference-->Spring-->Project Builders
把 Spring Bean Meta Data Builder 不要打勾,如圖
3.如果仍然有問題,因為Spring把所有Libris中所使用的jar檔中 import的class都搜尋了一遍
可以參考設定在 你的專案名字按「右鍵」-->Properties-->Spring-->Beans Support下面的Options把 Enable support <import/> elements in configuration files 試著勾或不勾看看

補充可加速 Spring Tool Initialize

  1. Disable validators: Preferences -> Validation: check Suspend all validators
  2. Disables Spring validation: Preferences -> Spring: uncheck unwanted validation rules
  3. Disable Build Automatically: Preferences -> General -> workspace: uncheck build automatically

參考資料
http://www.bmchild.com/2013/01/speeding-up-springsource-tool-suite-sts.html





2014年1月6日 星期一

解決 SQL Plus 在 Linux上無法使用 SQL History(按上) 使用 rlwrap 功能

在工作中常常遇到連線 Linux Oracle DB時,下SQL指令,打錯後要重新打無法使用向上鍵而必須重打的冏境,rlwrap是一個好用的工具,且安裝方便

首先至rlwrap官網download最新版本
http://utopia.knoware.nl/~hlub/uck/rlwrap/

之後將此檔案放至您想放的目錄下,我是放在/home/oracle下(我使用WinSCP工具)
記得使用 root下指令喔!解壓縮吧!

接著輸入如下指令(記得要到rlwrap-0.37目錄下喔!)
中間的訊息我就省略了
最後的訊息大概像這樣
接著準備 su - oracle 吧!
在.bash_profile加入
alias sqlplus=”rlwrap sqlplus”
alias rman=”rlwrap rman”


之後離開session(putty),重新登入os後試試sqlplus及上一步功能有沒有顯示上一個SQL Commad嘍!  










2013年12月25日 星期三

Oracle user密碼過期解決方式

最近使用很久沒使用的Oracle DB發現出現密碼過期的提示訊息
解決方式如下:

首先使用有 DBA 擁限的使用者登入 通常會用 sys as sysdba 這邊我採用sqlplus連線
接著查詢一下user的status看一下是否真的過期了(Expired)
接著修改密碼使用期限後,再修改使用者輸入新的密碼,如圖


恭喜搞定!



2013年12月24日 星期二

修改Linux目錄顏色 從深藍變淺紫色

看Linux畫面時目錄顏色常常讓人看不清楚,因此這篇文章教學如何快速修改目錄顏色


之後離開termnial後 重新進入就會看到目錄變色嘍!



2013年12月17日 星期二

JQuery Validate Password Format

好久沒寫文章,事實上幾乎都把很多技術文章都轉成文件了,最近比較有空就寫個最近用到的東西,JQuery Plugin Validate

首先當然你可能必須要了解什麼是 JQuery,網路上的文章很多,這部分我就不贅述了!
而且我今天所要用的是在前端頁面就可以做一些判斷,例如必填欄位,至少需幾位字元等等

話不多說,Let do it !!!

首先至 JQuery官網 Download JQuery js,再到http://jqueryvalidation.org/ download JQuery validate js
如下 我寫了一個範例程式有2個欄位,請使用者輸入第一次與第二次密碼確認

<form method="GET" id="myform">
<table align="center" style="width:100%; height: 100px; text-align:center;" class="queryTable">
<tr>
<th align="center" colspan="3" class="detailTitle" >
個人更新密碼
</th>
</tr>
<tr>
<td class="queryHeader">更改密碼<span style="color:red;">*</span></td>
<td><input type="password" id="ps" size="30" name="ps"/></td>
</tr>
<tr>
<td class="queryHeader">確認密碼<span style="color:red;">*</span></td>
<td><input type="password" id="ps2" size="30" name="ps2"/></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type=button value="更新" onClick="send()" class="radiusBtn"/>
</td>

</tr>
</table>
</form>

這邊我就不附上我的css class了,首先完成了你的 password form 後,接著記得 在你的jsp頁面上把剛才download的檔案(解壓縮在dist目錄)把js放入你的Web Project(Content)下的目錄
<script src="js/jquery-1.10.2.js" type="text/javascript"></script>
<script src="js/jquery.validate.js" type="text/javascript"></script>
<script src="js/additional-methods.js" type="text/javascript"></script>

開始主要驗證程式 如下
<script>
// just for the demos, avoids form submit
jQuery.validator.setDefaults({
  debug: true,
  success: "valid"
});
$( "#myform" ).validate({
  rules: {
    ps: {
      required: true,
      minlength:8
    },
    ps2: {
      equalTo: "#ps"
    }
  }
});
</script>



重點提示 ps,ps2 這邊是指的是name而不是id,所以沒設定name是不行的
基本上有許多規則可以設定使用可參考其它網址
http://www.coolsun.idv.tw/modules/xhnewbb/viewtopic.php?topic_id=1244
http://jqueryvalidation.org/equalTo-method/
http://iphp.wesped.es/wp/blog/2012/09/page/3/

如上面圖示你會發現我的訊息提示是中文的,基本上套件預設的是英文的
我使用的方式是建立一個message_cn.js 接著同樣在剛在import jquery的位置 import進來
<script src="js/messages_cn.js" type="text/javascript"></script>

其中js的內文就如下
jQuery.extend(jQuery.validator.messages, {
required: "必要欄位",
remote: "請修正該字段",
email: "請輸入正確格式的電子郵件",
url: "請輸入合法的網址",
date: "請輸入合法的日期",
dateISO: "請輸入合法的日期 (ISO).",
number: "請輸入合法的數字",
digits: "只能輸入整數",
creditcard: "請輸入合法的信用卡號",
equalTo: "請再次輸入相同的值",
accept: "請輸入有效的字符串",
maxlength: jQuery.validator.format("請輸入一個長度最多是 {0} 的字元"),
minlength: jQuery.validator.format("請輸入一個長度最少是 {0} 的字元"),
rangelength: jQuery.validator.format("請輸入一個長度介於 {0} 和 {1} 之間的字元"),
range: jQuery.validator.format("請輸入一個介於 {0} 和 {1} 之間的值"),
max: jQuery.validator.format("請輸入一個最大為 {0} 的值"),
min: jQuery.validator.format("請輸入一個最小為 {0} 的值")
});

結果訊息就會是中文的嘍!^^"
===============================================================
接著我想加入我密碼的規則,除了套件預設的規則外,我們還可以自訂規則
如下我的規則是必須符合至少8位至多10位,含!@#$%特殊字元與數字,及英文字母大小寫各1位
$.validator.addMethod("pwcheck", function(value) {
  return /^[A-Za-z0-9\d=!\-@._*]*$/.test(value) // consists of only these
      && /[a-z]/.test(value) // has a lowercase letter
      && /\d/.test(value); 
});

然後加上對於此規則的訊息提示使用原本的js變成
$( "#myform" ).validate({
  rules: {
    ps: {
      required: true,
      rangelength:[8,10],
      pwcheck: true
    },
    ps2: {
      equalTo: "#ps"
    }
  },
  messages: {
      ps: {
     required: "必填欄位",
     rangelength: jQuery.validator.format("請輸入長度介於 {0} 至 {1} 之間的字元"),
     pwcheck: "請輸入正確的密碼格式"
      }
  }
});
很神奇吧!,事實上訊息會優先讀取這邊的設定喔!




2012年7月25日 星期三

在xsd complexType 加入 simpleType 做條件限制

由於之前寫了一個WebService method 名為searchActiveDepts,我一開始預設是使用String[],由於 java已預設會將String的xsd(XML Schema) maxOccurs 設為 unbound,若企圖改寫xsd並加入simpleType的條件限制,以下為成功的範例碼。


<xs:complexType name="searchActiveDepts">
<xs:sequence>
<xs:element name="keywords" minOccurs="0" maxOccurs="3">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="10"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>
<xs:element name="account" type="tns:userAccount" minOccurs="0"/>
</xs:sequence>
</xs:complexType>


若直接用瀏覽器查看xsd,亦會看到如下

-<xs:complexType name="searchActiveDepts">
  -<xs:sequence>
    -<xs:element name="keywords" minOccurs="0" maxOccurs="3">
      -<xs:simpleType>
        -<xs:restriction base="xs:string">
          <xs:maxLength value="10"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="account" type="tns:userAccount" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

關鍵在於在尚未加入simpleType時,本來是
<xs:element name="keywords" type="xs:string" minOccurs="0" maxOccurs="unbound">

而我為了加入simpleType必須將紅色的部分拿掉
且我的目的是 使用此element(keyword)最多只能一次使用3組,所以設定maxOccurs="3"

並且利用simpleType,將每組keyword的長度不可超出10 (ex:"123456",長度為6)


因此現在我的關鍵字查詢功能 可以設定成至多同時輸入 3組查詢,且每組不超過10的長度


另外 simpleType可以加入許多不同的條件限制,詳見
http://www.w3schools.com/schema/schema_facets.asp





2012年7月18日 星期三

分析空白字串及空字串及空白鍵好用的判別式 in java

某天為了撰寫可以判別空白字串" ",空字串"",null 發現了好東西,不用寫一堆||或&&,是由apache所提供的 import org.apache.commons.lang.StringUtils;
public static boolean isBlank(String str) Checks if a String is whitespace, empty ("") or null. ex1:StringUtils.isBlank(null) = true 
ex2:StringUtils.isBlank("") = true 
ex3:StringUtils.isBlank(" ") = true 
ex4:StringUtils.isBlank("test") = false
ex5:StringUtils.isBlank(" test ") = false //空白+文字+空白
ex6:StringUtils.isBlank(" test") = false  //空白+文字
ex7:StringUtils.isBlank("test ") = false  //文字+空白
所以我只要將程式事先import我要用的package即可使用StringUtils內的isBlank(or isNotBlank) 而我可以利用此方式先用isBlank判斷出前三種情況(ex1~3),而對於ex5~7的情況,先用isBlank判斷後, 再使用trim()方式將ex5~7的字串順利轉成ex4,得到一個不含空白字串或null或空字串的String