2016年5月9日 星期一

GXT Component 的 onLoad 與 onShow 時機點

最近想要在 UI component 出現 / 消失的時候自動做一些事情,於是打算從 GXT Component 下手。不過怎麼寫怎麼有問題,只好寫 n 個 SSCCE 來確認一下,實驗結果紀錄於此。

基本認識

我關心這四個 method:

  • onLoad()
  • onUnload()
  • onShow()
  • onHide()

onLoad()onUnload() 是從 GWT 的 Widget 就定義的 method。理論上跟 onAttach()onDetach() 等意,就是這個 component 加入到 DOM(或是從 DOM 中移除)時會觸發的 method。不過 API 都強烈建議用 onLoad()onUnload() 了,就乖乖照辦。

onShow()onHide() 是 GXT Component 開始定義的 method,最常遇到的 caller 大概是 GXT Component 的 setVisible()(override UIObject)。

2016年4月14日 星期四

service 版的 Tomcat 無法列印

web server 的環境:

  • Windows Server 2008 Enterprise SP2
    • 64bit
    • 32bit
  • JDK 1.7.0_55 (32bit)
  • Tomcat 6.0.26
  • 印表機:TSC TTP 345,以網路印表機的方式連接。

有一個功能是使用者按下按鈕後,web server 會用 JNA 載入印表機的 DLL,然後以程式控制列印內容。印表機不是實際連接到 web server,而是用網路印表機的方式連到 LAN 上頭某台使用者的 PC。

2016年2月27日 星期六

不同量級的數值在同一個圖表上呈現

標題好難下,完整的標題應該是:

在 GXT Chart 中,如何把兩個不同量級的數值在同一個圖表中都用長條圖當中呈現。

拿這張圖表來舉例說明:

2015年11月15日 星期日

HTTP/2

原文網址:http://www.integralist.co.uk/posts/http2.html


引言

這是一篇很簡短的文章,展示如何利用新的 HTTP/2 通訊協定。如果你不熟悉它,那麼讓我花一點點時間來討論其中的一些亮點:

  • 單一、持續的連線
  • Multiplexing
  • 壓縮 header
  • 優先等級
  • 加密
  • Server Push

如果這些功能對你而言都不知所云,讓我作進一步的解釋……

2015年10月30日 星期五

Maven Assembly 的各種版本哏

故事是這樣的,專案的 project 海當中有一個是處理 Applet(不要問為什麼這個年代還在用 Applet,我後來改了一個 JWS 的版本,但是客戶還是想要保留 Applet [攤手])。雖然這個 project 是 maven 結構,但是 sign jar 還有最後整合進去真正的 web project 都還是用人工手動作的(不要再問了,我都要落淚了)。

雖然千百個不願意碰這個 Applet project,但事情終究還是發生了,因為最底層的 library 升級了,所以不改不行,那就順便把他變得自動化一點吧… Orz

sign jar 當然是找 maven-jarsigner-plugin(以下簡稱 jarsigner),掛上去之後發現… 奇怪,怎麼始終 build 失敗?用他錯誤訊息噴出來的那個 Windows command 字串去執行看看(當然要把 keypass 跟 storepass 換回實際的字串)卻又沒問題。喔對了,似乎這個問題只會在 Windows 上頭重現… Orz

最後發現,問題不是出在 jarsigner 上,而是 project 當中本來就有掛的 maven-assembly-plugin(以下簡稱 assembly)造成的。因為如果拿掉 assembly 的設定、或是把 jarsigner 挪到 assembly 之前(這居然是某些人認為的解法… 完全沒意義阿… WTF),是可以正常運作的。

兩個 plugin 的官方 issue tracker 都有這件事情(jarsignerassembly)。似乎是 assembly 2.2 版之後才會發生的事情,因為退回到 2.1 版就沒問題了,那就退回去吧… 祈禱不要踩到「為什麼要升級」的哏。

BUT…

希望 assembly 產生的檔名是乾淨的 foo.jar,所以加了 <finalName>、也加了 <appendAssemblyId>false</appendAssemblyId>,然後又開始 build 失敗了。問題點是卡在 <appendAssemblyId> 上頭。最妙的事情是… 這個問題在 2.2 之後解決了…

…………(嗶──)

好了,解法有兩個,一個是忘記 assembly 改成用 maven-shade-plugin,我用 2.0 版測試沒有問題,能滿足上述兩個需求。

另一個是… 把 assembly 提升到 2.6,也可以滿足上述兩個需求… (我沒有測 assembly 2.5 搭配 jarsigner 會不會出問題,但是 2.4 版是確定有問題的)

…………(嗶──)

我說那個 issue 可以麻煩順便關一關嗎?還是說根本是不知不覺間修好了,所以也沒發現......

這種排列組合的問題實在是很浪費生命阿… [淚目]