code_prettify

2016年10月12日 星期三

javascript parseInt(string, radix),忘了 radix就會有些怪怪的 bug

公司有個功能需要 user輸入月份,長度強制兩位數,所以是 01, 02.....12

UI很簡單的用 parseInt(string)檢查輸入月份是否為介於 1-12之間的數字, server side會 format user input

功能一直沒問題,直到 8月開始... user送不出表單,頁面一直跳請輸入 1 ~ 12之間的數字

因為 0開頭的字串,parseInt視為 8進位 parse

"If the radix parameter is omitted, JavaScript assumes the following:

If the string begins with "0x", the radix is 16 (hexadecimal)
If the string begins with "0", the radix is 8 (octal). This feature is deprecated

If the string begins with any other value, the radix is 10 (decimal)"
.....摘自 W3Schools

意思是
0x開頭的字串,視為 16進位
0開頭的字串,視為 8進位(已棄用)--棄用歸棄用,user的 browser又不見得永遠是最新的
其他的都視為 10進位

01 - 07都是合法的 8進位,但是 08以 8進位來說不是正確的數字, parseInt return 0, bug於焉而生

加上 radix 10就 OK了

2016年6月30日 星期四

Eclipse突然失去與 SVN的連結

從 SVN checkout的 project在開發過程中出現了一些錯誤訊息後就失去與 SVN的連結
在 project右鍵選單>team只剩下 Apply Patch,Share Project,Share Projects


2016年2月17日 星期三

異體中文



上面那個 UTF-8是 E6B49B,下面那個 EFA495
在公司的 jasper report(2.0.1, 報表字型標楷體)中下面那個印不出來
iTextAsian版本 1.3.1應該是原因
推測 iTextAsian 1.3.1中沒有下面那個字

2016年1月30日 星期六

format all files in eclipse

Work under package explorer.
Right click on target(folder) > source > format

2016年1月13日 星期三

JSP custom tag attribute reused

依照 JSP spec, custom tag的 instance會被 pooled及 reused.
stack overflow

公司系統的 custom tag dbText沒有在適當的地方(doEndTag()) release掉所有屬性
造成其中一個用來可以取代 property做為 input name的 not required屬性 showName一旦使用過
會因為 tag handler instance pooled的關係
如果後續使用時沒指定 showName,就會一直沿用最後一次使用的值
showName = showName == null ? property : null;
而且這段程式碼還位於不見得一定會被執行到的位置
衍伸出產生沒有 name屬性 input的 bug