code_prettify

2014年11月12日 星期三

設定 tomcat startup.bat 視窗標題(command prompt title)

測試環境常需要開好幾個 tomcat佈署程式給 user測試
一堆人一起用,全安裝成 service也很煩
直接用 startup.bat啟動是個好方法
不過一堆 command prompt
又分不清楚哪個是誰的

command prompt有個指令可以設定視窗標題
command: title
example: title Elie Program
Elie Program: 自己想要的視窗標題
不用加引號, title後面的所有文字會全部被當成一個字串做為標題 ㄋ
環境: windows 7

至於 tomcat, catalina.bat中有如下說明
"Do not set the variables in this script. Instead put them into a script
setenv.bat in CATALINA_BASE/bin to keep your customizations separate.
.....
TITLE           (Optional) Specify the title of Tomcat window.
......"
簡單說就是不要直接去改 catalina.bat
省得手殘改壞開不起來浪費時間而是在 catalina.bat所在目錄中增加一個 setenv.bat
裡面打上
set "TITLE=Elie Server 1"
這樣用 startup啟動 tomcat後的 command prompt視窗的標題就會變成Elie Server 1
不只視窗左上角的標題欄,工作列 ICON上的文字也會變成Elie Server 1
全部最小化,誰是誰的誰依然是一目瞭然:Q

2014年7月17日 星期四

Play 操作使用筆記-安裝


Play framework 個人當它是一種 rails-lik開發工具

rails-like 我個人是指一種基於 CoC( Convension over Configuration) - 慣例先於設置的開發流程觀念.
事實上, Struts, Spring, Tapestry, ZK 寫久了, 很多人都會對一大堆設定檔感到厭倦.
不設不行, 設嗎其實都大同小異, 通常都是 copy 一段來改一下就搞定了.
是沒花多少時間啦, 但是像我這種大而化之(=粗心)的人也不是沒發生過手殘打錯設定檔內容, 然後 debug 好久的情形(不出則已, 一出通常就鬼打牆. 因為根本不會想從這邊找問題-潛意識認為錯誤不可能出現在設定-事後證明我的手真的挺殘低)
那麼有沒有甚麼方法, 可以讓我不要再跟這些枝微末節打交道了. 不過就寫個 MVC, 能不能讓我寫個 M, 寫個 V, 寫個 C 然後其他的就有人/ 工具替我代勞?現在網路對一些熱門事件不是很流行懶人包嗎? 用 framework 能不能也來個懶人包-替我們這些懶人把程式碼包一包.

ruby on rails- 不怎麼考慮, 對我來說像是另一個世界
Spring Roo- 網路上看了一下, 好像 trouble 還滿多低, 既然是懶人就不想多找麻煩了
Spring Groovy on Grails- 也有在玩. 主要是看上 Spring 用太多了. GoG 基本上就是 Spring 的懶人包(雖然也是有加入別家的東西啦)
Play- 正在玩(俗話說蛋不要放在一個籃子裡, 除了 Spring 這個籃子, 另外找個籃子玩)

OK. GO!!

1. 下載 Play.

Play 的原作者好像成立了家公司 Typesafe. 然後雖然看起來是下載 Play 2.3.1 including activator-1.2.3, 但是下載的程式叫作 typesafe-activator-1.2.3-minimal.zip, 解出來的 folder 叫做 activator-1.2.3-minimal. 害我以為我上了釣魚網站.

2.解壓縮到任意位置.

除了 typesafe-activator-1.2.3-minimal.zip, 還有個typesafe-activator-1.2.3.zip(300 多M)可下載.這個待會會提到.

3.設定 Path.
開始>電腦->右鍵選內容>進階電腦設定>環境變數->系統變數
  JAVA_HOME
  必須指向 JDK. JRE 不夠. ex.C:\Program Files\Java\jdk1.6.0_45
  PATH
  在 PATH 變數增加一個項目(PATH 中各個項目用分號分隔, 最後一個項目後面不需要分號, 也   就是不需要用分號結尾, 但是加了也沒差就是了).ex.E:\activator-1.2.3-minimal

4.測試安裝
開始>執行>cmd 或開始>所有程式>附屬應用程式>命令提示字元開啟一個 Command Line 視窗
key 入(key 完指令後按 enter 執行)
>javac -version
驗證 JDK
>java -version
驗證 JRE
>activator
會打開一個 html 說明文件(因為沒有指定要執行的命令)

Typesafe Activator Documentation

說明 activator 用法
activator [options] [command]
ps. activator 算是一個前導指令, 真正要做甚麼事看後面的功能指令
>activator help
activator 使用略述






2014年4月9日 星期三

半自動解決瀏覽器憑證錯誤

senario: 佈署了 security HTTP後, user很不爽每次 IE都會出現憑證錯誤,是否繼續瀏覽然後得按繼續瀏覽才能進到頁面.

solution:
叫 user手動接受我們產生的自簽核憑證(sellf-signed certification).
不過,還是得處理一下我們的自簽核憑證才能順利讓 user接受憑證
錯誤訊息有三:
1.此網站出示的安全性憑證並非由信任的憑證授權單位所發行。
ans:這部份需要 user手動接受.首先,須將本網站加到信任的網站(網際網路選項>安全性>信任的網站,細節不贅述.然後點選網址列最右邊的憑證錯誤,在打開的視窗中點安裝憑證(先加信任網站才會有安裝憑證可以點),然後把憑證安裝到信任的憑證區.

2.此網站出示的安全性憑證已過期或尚未生效
ans:夠清楚了,憑證過期.那憑證如果是別人發行的,就只好檢查或改改自己的電腦時間.但是我們是發行者,憑證有效期限要多久我們自己可以決定.
keytool -genKey -keyalg RSA -alias <%aliasName%> -keystore <%keystore-path%> -storepass 1234qwer -validity 10000 -keysize 2048 -dname "CN=abc.com, OU=def, O=ghi, L=jkl, S=mno, C=pqr"
-validity 10000就是代表從下這個指令開始,產生的憑證在 10000天內有效:)

3.此網站出示的安全性憑證是為其他網站的位址所發行的
ans:上面那個 keytool指令, -dname中的 CN就是瀏覽器用來判斷"位址不符"的根據.把 CN改成自己的網址(不用加 https://)就符了.

tomcat+struts url querystring中文編碼解碼

senario: xmlhttprequest GET傳送含中文資料到 action, AP Server tomcat 6.x, struts 1.x

solution:
1. url path沒有中文,只有傳遞的參數有中文,所以對參數做 encodeURIComponent
2. tomcat \conf\server.xml中 Connector並未設定 URIEncoding屬性(因此為預設值 ISO-8859-1)
3. request.getParameter 會做 URLDecode, 但是因為 2., 所以得到的中文是 ISO-8859-1編碼
4.對request.getParameter重新編碼就拿到想要的 utf-8 encoded string
   new String(req.getParameter("xxx").getBytes("ISO-8859-1"), "utf-8");

2014年3月19日 星期三

jquery 五種取 selected text的方法

console.log($('select[name="leave_type_auto_id"] option:selected').text());
console.log($('select[name="leave_type_auto_id"] option').filter(':selected').text());// optimized(maybe)
console.log($('select[name="leave_type_auto_id"]').children().filter(':selected').text());
console.log($('select[name="leave_type_auto_id"]').children('option').filter(':selected').text());// fastest(maybe)
console.log($('select[name="leave_type_auto_id"]').children('option:selected').text());
console.log($('select[name="leave_type_auto_id"]').children(':selected').text());// fastest(maybe)
有篇比較各種 selector速度的測試
http://jsperf.com/get-selected-option-text

2014年3月12日 星期三

懶得寫 bean. java內建的 key value paire.

java.util.AbstractMap.SimpleEntry<K, V>(K, V).
腦袋一下轉不過來,一直無法建構
new java.util.AbstractMap.SimpleEntry<Integer, String>(new Integer(1), "foo");

2014年2月14日 星期五

Win7下 eclipse註解字型太小

網路上搜尋了一下,主要是因為字型的關係, 而非 font size.
eclipse - Window> Preferences> General> Appearance> Colors and Fonts> Java,選中Java Editor Text Font,點 Edit,把字型改成 Courier New就 OK了

如果點 Edit後字型沒 Courier New可選,在作業系統 - 控制台>外觀及個人化>字型,找到  Courier New右鍵選單選顯示,回 eclipse就有 Courier New可選了