code_prettify

2019年12月29日 星期日

打掃阿貝

身為鼻子過敏的一員
掃地實在是無法避免的痛
掛口罩不舒服,不掛口罩事後更不舒服

而且不知道哪來那麼多棉絮,我又不是住紡織工廠

邊掃還得邊追四處飄散的飛絮,這種冷天掃完都會微出汗…

家裡人口不多,轉個念頭,先拖再掃


用濕潤的拖把先拖過

很快就乾了,過程中也拖掉不少髒污、飛絮,也不會四處飛散

等乾了後再用乾布把剩下的髒污擦一擦,快速搞定,還有時間寫文^_^

另一重點是分區、留走道,避免沒乾之前還得踩上去:髒兮兮的腳印看著就不蘇胡。

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

2015年12月31日 星期四

讓checkbox無法取消勾選

<input type="checkbox" checked onclick="myfunction();alert('就是不給動~~');return false;"/>

'return false' will cancel event bubbling and prevent checkbox from being changed
不管 user怎麼 click,甚至用 space鍵, checkbox都會保持被勾選

2015年8月26日 星期三

Word不自動取代引號

Word中打引號 '或",預設會被取代成’或”,這對 PG很不友善
要取消這個取代功能步驟如下:


把將「一般引號」取代為「智慧引號」 取消勾選

2015年8月13日 星期四

2015年7月24日 星期五

2015年7月3日 星期五

STS(Spring Tool Suite)無法刪除 STS.exe而無法更新

每次更新 STS,都會遇到錯誤訊息 File that was copied to backup could not be deleted : STS.exe而失敗.即使將 STS以管理員身份執行也一樣.
OS是 Windows 7,不知道是不是兇手
最後只能放大絕:
1.先啟動 STS
2.直接把啟動 STS的 exe檔改名成.backup: STS.exe->STS.exe.backup
3.然後就可以順利執行更新了

2015年6月12日 星期五

Eclipse中用 Jetty進行 webapp開發

....Jetty是一個純粹的基於Java網頁伺服器Java Servlet容器...
參考 wiki
想用她主要是看上她的輕量

2015年5月31日 星期日

ubuntu oracle sdk install

sdk8
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
replace java8 with java7 for oracle jdk7

2015年4月29日 星期三

register tomcat as service

1. register tomcat with service name xxx(without space)
First run cmd.exe as administrator
先以系統管理員身分執行命令提示字元

Then type following command
<tomcat-root>/bin/service.bat install xxx

Service name in Windows Service will be: xxx
display name in Windows Service will be: Apache Tomcat xxx
(tried under tomcat7)

remove service

<tomcat-root>/bin/tomcat7.exe //DS//xxx

2014年12月12日 星期五

Could not publish server configuration for XXX Multiple contexts with the same path error running XXX

Eclipse local server publish時出現上述錯誤訊息.
SO查到的答案是去看看 servers.xml

不過後來是刪掉 local server重新建一個搞定

2014年11月15日 星期六

64-bit 環境中設定 eclipse使用超過 2G記憶體

設定在 eclipse.ini個人試了沒用

啟動 eclipse, 到 Windows>Preference>Java>Installed JREs, 選擇使用的 JER 後點 Edit.
在 Default VM Arguments輸入 -Xms256M -Xmx8192M.
要確認目前運行環境,寫個 main method,看看下面兩個屬性
System.getProperty("sun.arch.data.model")
Runtime.getRuntime().maxMemory();

6 Common Errors in Setting Java Heap Size
這篇文章討論了常見的輸入錯誤
另外提供了 tomcat設定記憶體使用量的設定及幾個 IDE記憶體使用量的設定方式.

Einstein, where are u?

OK.我笨,被陷害了n個小時
一直以來傾向 Entity以單純 JavaBean呈現
所有 logic放在 service中

遇到 hibernate one-to-many中 element怎麼都放不進去
也不是不知道 java.util.Set不允許重複的物件
只是沒想到 n代前手去 override equals......

OK.我知道有一種看法覺得將 entity作業務邏輯封裝是自然的好事
我也承認
有些東西直接封裝到 entity中相當自然且方便
但是
我還是很難接受把 entity搞成帶業務邏輯的物件
讓它就是個單純的 DTO
把邏輯集中到 service是個人比較喜歡的單純化

也許,現在的 model只是更高維度的架構的 projective/affine space
還真期待 model的 4-dimension space會是什麼
Einstein, where are u?

maven使用下載檔案建立 local repository

專案將 datasource以 webapp/META-INF/context.xml設定
用 maven embedded tomcat測試時需要給 embedded tomcat設定 jdbc driver建立連線
maven central repository中並沒有 DB2 driver.

把從 IxM下載的 jar 檔註冊到 local repository 中,指令參考:
mvn install:install-file -DgroupId=com.ibm.db2 -DartifactId=db2jcc -Dversion=3.4.6 -Dpackaging=jar -DgeneratePom=true -Dfile=E:\jdbcDrivers\db2jcc.jar
其中 groupId, artifactId, version可自行設定,方便辨識即可.
-Dfile後面為下載的 jar檔存放路徑.

Compare java.sql.Date

以下的 Date專指 java.sql.Date.

在思考 Date比較時, 如果要用到 after or before, 最好不要用 a.after(b) or a.before(b)的思考邏輯,而是用 !b.before(a) or !b.after(a)的邏輯思考,在企業環境中比較不容易出錯.
Date的 after or before 怎麼比呢?
基本上等同於 a.getTime() > or a.getTime() <.其中沒有等於的空間,也就是沒有 >= or <=.
所以 a.after(b)等同於 a.getTime() > b.getTime(). a.before(b)等同於 a.getTime() < b.getTime().
這並不惱人, 邏輯其實很清楚.
但重點來了: 商用環境中,當你從 DB 拿到一個 Date時,你並不知道這個 Date到底當初是用
Date.valueOf(String)還是 new Date(System.currentTimeMillis())來的(也許有些規劃得很好的系統沒這問題,但是維護前人留下來的系統時,沒那工夫去檢查到底有沒有不一致的做法(甚至有時是不得已: 尤其有些日期是直接由 UI輸入,有些 Date是 current date, 而這兩種 Date須互相比較時.)
以 2014-05-02為例:
Date.valueOf("2014-05-02").getTime() == 1398960000000.
new Date(1399025789901(L)).toString == 2014-05-02.(事實上是2014-05-02 18:16:29.901)
從 DB看, 兩個都是 2014-05-02.
但是 equals絕對 return false.
因此純粹日期比較時要嘛先過一次水讓兩個日期的邏輯一致, 要嘛, 就是用 not after, not before去思考.