2013年10月22日

Java 7 update 45 與 Web Start JNLP 安全性問題解決方案

Java 7 安全性一直出包,所以 Oracle 頻繁更新修正漏洞。不過目前最新的 Update 45 對運行中的 Java Web Start 程式會有幾個重要影響。

參考資料:
  1. Update 45 Release Note
  2. Java 7 發行版本重點
  3. JNLP File Syntax

問題(一)、JNLP Property 設定無法傳遞

過去在 JNLP 可以直接使用 Property 設定。

<resources>
        <property name="config1.name" value="value1" />

Java7u45 只允許「javaws.」與「jnlp.」起始命名的設定,以及以下的例外。

    sun.java2d.noddraw,
    swing.useSystemFontSettings,
    swing.metalTheme,
    http.agent,
    http.keepAlive,
    sun.awt.noerasebackground,
    sun.java2d.opengl,
    sun.java2d.d3d,
    java.awt.syncLWRequests,
    java.awt.Window.locationByPlatform,
    sun.awt.erasebackgroundonresize,
    swing.noxp,
    swing.boldMetal,
    awt.useSystemAAFontSettings,
    sun.java2d.dpiaware,
    sun.awt.disableMixing,
    sun.lang.ClassLoader.allowArraySyntax

所以 JNLP 的 Property 設定必須全部更改為:

        <property name="javaws.config1.name" value="value1" />

或:

        <property name="jnlp.config1.name" value="value1" />

當然在其它程式碼存取 Sytstem.getProperty() 的參數也要一併修改。

問題(二)、Missing manifest attributes

打包 JAR 檔案時,需要增加以下 MANIFEST 屬性設定。

                    'Permissions'       : 'all-permissions',
                    'Codebase'          : 'http://url-to-codebase',
                    'Application-Name'  : 'AppName'

參考討論串:
http://stackoverflow.com/questions/19451356/whats-with-the-new-jnlp-missing-items-warnings-in-java-7

問題(三)、應用程式已被安全設定值封鎖

JAR 檔 MANIFEST 的 Codebase attribute 必須與 JNLP 指定的 JAR URL 來源一致,如果 javaws 發現實際下載 JAR 檔案的 URL 與 MANIFEST 設定不同,就會直接阻擋掉不能執行。

2013年10月20日

Ubuntu + XBMC 打造 Apple AirPlay 家庭無線影音多媒體串流中心

Ubuntu Linux 加裝 XBMC 後,就能享受跟 Apple TV 一樣的 AirPlay 便利功能,讓遠端 MacBook、iPad 或 iPhone 的影片,透過無線串流方式播放,是 C/P 值非常高的一種窮人版影音娛樂中心。

我的 Ubuntu Linux 桌面是每天工作的夥伴,最近也用它接上長物志的青龍(USB-DAC+耳擴)聽音樂。但是我大部分的音樂都在 iPad 及 iPhone,完全不想再複製一份到 Ubuntu 的硬碟,這時候 XBMC 幫了很大的忙。

在 Ubuntu 軟體中心搜尋「xbmc」,就可以安裝「XBMC 媒體中心」。


為了讓 AirPlay 能正常運作,再檢查另一個「avahi-daemon」套件是否已經安裝,如果沒裝就先將它也補上。


安裝好之後,在選單打開「XBMC Media Center」,等待 XBMC 首頁畫面。


XBMC 本身就是一套功能強大的家庭影音娛樂中心,可以看電視、播放電影、聽音樂或瀏覽照片。但這邊我們只使用它的 AirPlay 接收功能。

先將介面改成中文。進入【System / Settings / Appearance / International】設定畫面。


將「Language」修改為「Chinese (Traditional)」選項。


如果要一邊工作一邊使用 XBMC,預設的全螢幕模式並不合適,可以在【系統設定 / 系統設定 / 視訊輸出】,將顯示模式切換成「視窗」選項。


最重要的一個步驟,就是將【系統設定 / 服務 / AirPlay】的「允許 XBMC 接收 AirPlay 內容」選項開啟。


設定完成後,在 MacBook、iPhone 或 iPad 裝置上,就能看到 AirPlay 的選項多出「XBMC」可用。


以下是 AirPlay 音樂串流播放畫面。


解決 Ubuntu 13.10 升級問題:消失的英文輸入法

問題描述:

Ubuntu 13.04 預設使用酷音輸入法,升級到 13.10 發生無法切換成英文輸入的問題。

解決方法:

從右上方的系統選單進入「系統設定值」。


先打開「語言支援」,會看到套件不完全的提示,輸入登入密碼讓系統自動補裝欠缺的語言支援套件。


重新開機。

再打開「系統設定值」的「Text Entry」設定畫面,在「Input sources to use:」下方「+」新增輸入法「英文(美國)」。*如果沒有先透過「語言支援」補裝缺少的語言支援套件,就不會看到「英文(美國)」選項。

新增後調整順序,通常會讓英文在第一順位(預設輸入法)。


再點選右下方「Keyboard Settings」進入鍵盤快捷鍵設定,將「切換至下個來源」設定成「Ctrl+Space」,「切換至上個來源」設定成「Shift+Ctrl+Space」。


如此就能正常切換酷音、英文輸入法。

已知問題:

上述方法暫時解決沒辦法切換輸入法的問題;但是快捷鍵操作尚有不靈敏問題,按下 Ctrl + Space 組合鍵需要放慢速度,否則切換輸入法不會成功。

針對輸入法切換不靈敏的問題,可以嘗試執行:

sudo apt-get install --reinstall ibus

強制重新安裝 ibus 程式後,似乎能改善切換問題。

2013年10月17日

Grails 版本切換後出現 Error Error executing script Clean ... GrailsProjectCleaner 的解決方法

使用 gvm 切換 Grails 版本後,再使用 grails run-app 可能會出現 java.lang.NoClassDefFoundError:

| Error Error executing script Clean: org/codehaus/groovy/grails/project/creation/GrailsProjectCleaner (Use --stacktrace to see the full trace)

解決方法是先用 gvm 切換為上一次使用的 grails 版本,先執行 grails clean 再重新切換版本。

2013年10月16日

37signals 新書《Remote: Office Not Required》

曾經出版 《ReWork》(中譯:工作大解放)的 37signals 即將有新作出版。37signals 就是開發 Ruby on Rails 框架的公司,他們的快速成長倍受全球矚目,他們引領網路時代的新型態工作趨勢洞見,也持續透過出版與全球分享。

新書 REMOTE 談論「遠距工作」的新趨勢,有愈來愈多公司加入這個浪潮,讓員工在家甚至在海外工作;在可以期待的未來,這種工作型態的人們將不再是少數。

這本書預計在 Oct 29 出版,目前 Amazon 網站已可預覽部份章節內容。
  1. Amazon Product Page
  2. 37signals Official Page

As an employer, restricting your hiring to a small geographic region means you’re not getting the best people you can.As an employee, restricting your job search to companies within a reasonable commute means you’re not working for the best company you can. REMOTE, the new book by 37signals, shows both employers and employees how they can work together, remotely, from any desk, in any space, in any place, anytime, anywhere.

2013年10月12日

EPSON EH-TW550 打造高C/P值家庭劇院分享

在家裡打造家庭劇院一直是我的夢想,今年在台中找到中意的小宅後,這個夢想終於有機會實現。可惜在新家各項裝潢及家電的預算不斷追加後,劇院組合的預算一直不斷刪減,最後只剩下少少的萬把塊餘款。

我一直覺得看電影和看電視是兩回事,如果把電影拿到電視上面播,就會少了那麼一點看電影的感覺,所以儘管投影機使用環境限制多,還是堅持保留一個空間給投影機使用。如果預算和空間足夠的前提下,同時用投影機和高畫質電視打造劇院,就不會顧此失彼啦!

因為預算少買不起大房子,所以留給劇院使用的房間,前後牆之間的距離短得可憐,只有區區不到三米長。在這個投影距離的么壽限制下,手邊現有的 Optoma 入門機種完全派不上用場。

我的 Optoma 投影機是三年前約 1.6 萬購入的入門款,只有 800x600 解析度,輸入介面沒有 HDMI 只能透過 VGA;最近買了一組 HDMI to VGA 轉接頭,雖然有作用,但是無法適用於 APPLE TV 的 HDCP 播放。

雖然還能加減用,但在投影距離不足的殘酷限制下,舊投影機還是被我默默地打包收起來,因為它能投出的尺寸和畫質遠不及愈來愈便宜的 55-60" FULL HD 電視。

趁著上次促銷檔期在賣場添購新電視時,剛好看到 DM 的 EPSON 投影機在特價,吸引我的地方是(1)有 HDMI、(2)16:10寬螢幕解析度1280x800、(3)支援3D功能;而且價格只比入門款高一些,活動檔期贈送一副3D眼鏡,加購第二副3D眼鏡只要一張小朋友。

本來並沒有打算添購新的投影機;但是這款劇院投影機的心動價格,讓我狠下心決定電視買小一點的尺寸(最後只買47"電視),而將預算撥出一些來買新投影機。

在上網做功課時候,發現「EH-TW550」只有少數幾則剛發表的新聞廣告,並沒有什麼人討論過它,好壞實在無從得知。不過在賣場工作的朋友,很肯定這台投影機實際效果不錯,促銷價格也是絕無僅有。雖然心中還是有一絲絲不安;但是在劇院夢想的催化下,還是立馬到有現貨的門市扛一台回家。

EPSON EH-TW550 簡介:
  1. 支援 3D 畫面(搭配主動式 3D 眼鏡)
  2. 水平、垂直梯形修正(可放側邊茶几)
  3. 免 PC 可播放 USB 隨身碟照片與影片
  4. 解析度 1280 x 800(16:10)寬螢幕
  5. 內建 2W 喇叭,HDMI 可直接從投影機播放聲音
  6. HDMI、D-SUB、RCA / S-Video
  7. 3000流明亮度
  8. 3LCD技術


因為空間大小受限,只能選擇後壁掛方式安裝。選購壁掛架時比較了多款,由於大樓使用的輕質隔間(白磚牆)無法承重,本來跟橘子壁掛工廠買的一組堅固耐用壁掛架,因為重達數公斤,就不敢給它上牆,最後找了一組網拍常見的鋁合金壁掛架,重量只有一點多公斤,價格也很便宜,一組只要900元有找,用四根長螺絲和矽利康將壁掛架牢牢鎖上牆。


這款壁掛架可調整到投影機鏡頭與壁掛桿呈一直線,所以在安裝時很容易抓壁掛的中心位置。EH-TW550 的按鈕面板很容易操作,第一次使用只要調整焦距、微調水平與梯形校正。A/V Mute <-------> Open 可以輕鬆關上鏡頭蓋,避免沾上灰塵。


迎接 EH-TW550 的其他劇院設備有:
  1. HIMEDIA HD600A 平常拿來下載、播放 BT 高清影片的夥伴
  2. 谷津 DA&T U1 USB DAC + 耳擴 + 50W AMP
  3. AE EVO 1 書架喇叭
  4. 蓋世特 OH-T8B 電源插座


我的 HD600A 播放機不支援 3D 影片,為了測試 3D 投影效果,就借來這部內建 Sigma 8911 晶片的 Popcorn Hour A-400 播放機,這是台強悍的高清播放機,只是價格並不親民。


輕質隔間裝壁掛布幕,也需要考慮重量問題,原本和投影機一起購入的80吋手拉式布幕,因為重量大於七公斤,最後只好捨棄,改向網拍阿吉的店,訂購一組100吋的簡易型壁掛幕,價格非常便宜只要一千多元,重量僅有3.7公斤,只要用兩根鋼釘就能掛住,缺點是只能用捲的方式收納,不過平時並不打算捲起布幕,所以當固定式布幕使用反而方便。

雖然 EH-TW550 有3000流明,白天室內播簡報能看得清楚,但電影還是需要較昏暗的環境才能有最佳效果。為在白天也能看電影,房間裝上遮光率 97% 的捲簾。


再來清點一下 EH-TW550 投影機的其他配件,遙控器和收納包。遙控器的按鍵是中規中矩的設計,對劇院來說,遙控器在初始化設定完成後,就差不多可以收起來放了。


這次 EH-TW550 促銷最吸引人的,就是隨機附贈一支 3D 眼鏡,因為主動式 3D 眼鏡價格通常不便宜(ELPGS03 原價超過三千元),如果是選購品,我大概就不會考慮買它了,畢竟一年也看不到三部 3D 電影。但這樣一來,投影機的 3D 功能就形同雞肋,連拿來測試的機會都沒有。


播放經典 3D 電影阿凡達,初次體驗在家看 3D 投影的電影。







測試過程中發現一個問題,就是「自動光圈」應該保持關閉,因為自動光圈若開啟,在光圈切換時會有噪音產生,但是在看電影過程中,隨著畫面亮、暗變化,會造成自動光圈不斷作動,就會一直有噪音干擾,剛開始還以為是投影機風扇壞掉,後來才發現是自動光圈打開所引起的問題。


EH-TW550 不是短焦機種,剛買時很擔心距離問題無法投出大畫面。但是在不到三公尺的距離,EH-TW550 竟可以投出接近 1.8 公尺寬度的畫面,這一點是出乎我意料之外,對小房間來說,實際超過 80 吋的畫面已經相當有震撼感。

這款投影機整體來說最吸引人的就是 C/P 值,以 10 萬元以下(含音響)打造劇院的需求來說,它會是很不錯的選項,只佔不到三成預算,就能具備基本劇院投影機的幾項必要需求(寬螢幕、HDMI、720P以上)。

不過高流明雖然有亮度的優勢,但溫度高引起風扇狂轉的噪音,也是需要考慮的問題,特別是 3D 模式開啟後,風扇的聲音已經是很明顯的干擾,需要開冷氣來幫助降溫。不過既然是視聽室,看電影先開個冷氣應該也是理所當然囉!

2013年10月9日

使用 Sublime Text Snippets 快速編輯 Bootstrap 3 的 HTML 代碼

最近準備將手邊一個 Open Source 專案由 Bootstrap 2 升級為 Bootstrap 3,又開始陷入瘋狂的打字地獄。每天幾千行的 Coding 連續動作,已經接近 Typing 的速度。

Twiiter Bootstrap - http://getbootstrap.com/

但畢竟打字再快還是有極限,如果要讓 Coding 速度超越 Typing,就需要借助程式碼編輯器的神奇魔力。

最近迷上超好用的 Sublime Text 3,特別愛它的 Snippets 功能。

Sublime Text 3 - http://www.sublimetext.com/3

之前曾經介紹過 Sublime Text 的 Zen Coding 外掛功能,它確實讓 HTML 的輸入速度更快。


但是對於 Bootstrap 這種有自己專有結構定義的前端框架,需要更快的輸入方式;Sublime Text 很基本的 Snippets 功能反而更容易做到。

Working With Code Snippets In Sublime Text - http://www.hongkiat.com/blog/sublime-code-snippets/

自己建 Snippets 很簡單,但 Sublime Text 的強大之處,就是連自己建的動作都不必,只要利用強大的群眾外包力量。

以 Bootstrap 3 的 Snippets 來說,已經有開發者幫忙建好打包成 Package 分享。

先安裝 Sublime Package Control 外掛。


再利用 Package Control 安裝「Bootstrap 3 Snippets」套件。

A Sublime 2/3 plugin complete with Twitter Bootstrap 3 snippets

接下來就可以用簡單的代碼方式將 Snippets 貼到編輯區。

例如先輸入 bs3-alert 然後按下「TAB鍵」,就會自動貼上以下的 Bootstrap 3 HTML 代碼。

<div class="alert">
    <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
    <strong>Title!</strong> Alert body ...
</div>



2013年10月5日

Sublime Text 2 + Ubuntu Linux 中文輸入法問題解決方法(使用 Package Control 安裝 InputHelp)

關於在 Ubuntu Linux 下使用 apt-get 工具安裝 Sublime Text 2 的方法,請參考安裝篇

這篇主要針對 Ubuntu 執行 Sublime Text 2 無法輸入中文的問題,提供暫時的解決方案。

問題成因:

疑似 Sublime Text 2 並不支援 Ubuntu Desktop 預設的 iBus 輸入法工具,所以在編輯器無法使用 Ctrl + Space 切換輸入法。

解決方法:

InputHelper 是一個簡單的治標方法,雖然不完美目前看起來是管用的。它的原理是執行一支外部的 Python 程式,顯示一個對話視窗,提供 Input Box 讓使用者打字(可以切輸入法),再將輸入的文字貼回 Sublime 編輯區。

安裝方法:

為了讓安裝過程更友善,我們先介紹 Package Control 套件。這個工具本身是 Sublime Text 的 Plugin,先安裝它就可以方便安裝其它 Sublime Plugin。

Package Control 安裝介紹 - https://sublime.wbond.net/installation

安裝 Package Control 步驟:
  1. Ctrl + ` 叫出 Sublime Console 指令輸入畫面
  2. 將以下安裝指令貼上按 ENTER 執行
import urllib2,os; pf='Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler( ))); open( os.path.join( ipp, pf), 'wb' ).write( urllib2.urlopen( 'http://sublime.wbond.net/' +pf.replace( ' ','%20' )).read()); print( 'Please restart Sublime Text to finish installation')


重新打開 Sublime 在選單可以看到:Preferences / Package Control

接下來就能以 Package Control 安裝 InputHelper 套件。

InputHelper 專案首頁:https://github.com/xgenvn/InputHelper

安裝 InputHelper 步驟:

打開 Preferences / Package Control 彈出選單,選擇「Add Repository」設定新的套件來源。

輸入「https://github.com/xgenvn/InputHelper」並按下 ENTER 確認。

新增來源之後,再重新打開 Preferences / Package Control 選單,選擇「Install Package」安裝新套件。

輸入套件關鍵字「InputHelper」,只要打完 Inpu ... 就能看到篩選後的結果,選擇「InputHelper」開始安裝動作。

*雖然 Package Control 預設的套件清單(Repository)已經內建 InputHelper,但是該檔案下載位址有誤,會造成安裝失敗,所以上面才必須手動添加套件來源。

修正問題:

雖然到這邊已經裝好 InputHelper,但實際上還無法執行,因為自動安裝的 InputHelper 有一個
linux_text_input_gui.py 檔案權限設定不正確。

使用 chmod 指令手動修正。
  • chmod a+x ~/.config/sublime-text-2/Packages/InputHelper/lib/linux_text_input_gui.py

如果一切順利,重新啟動 Sublime Text 之後,就能使用「Ctrl + Shift + Z」叫出 InputHelper 輸入視窗,輸入文字後按下 ENTER 就能將訊息貼回編輯器。


2013年10月2日

在 Ubuntu Linux 下安裝及使用 Sublime Text 2 / 3

Sublime Text 是我第二喜歡的程式碼編輯器(第一名當然還是留給歷久彌新的 Vim)。

不管是 Mac OS X、Linux 或者偶爾不得已才用的 Windows,這三種主留作頁系統下都能使用 Sublime Text 編輯器,所以學會使用 Sublime Text 的投資報酬率極高,可以 Learn-Once-Write-Everywhere。

在 Ubuntu Linux 下安裝,有 PPA 可以用當然不要錯過。

安裝 Sublime Text 2:
  • sudo add-apt-repository ppa:webupd8team/sublime-text-2 
  • sudo apt-get update
  • sudo apt-get install sublime-text
安裝 Sublime Text 3:

  • sudo add-apt-repository ppa:webupd8team/sublime-text-3
  • sudo apt-get update
  • sudo apt-get install sublime-text-installer


Sublime Text 2 或 3 同時只能安裝其中一個版本。

這個 PPA 和其它 webupd8team 提供的套件有一樣的風格,也就是它本身並未包含 sublime-text 的軟體,只是自動幫你下載 tarball 檔安裝。不過可以使用 apt-get 安裝、升級和移除,還是比自己手動安裝方便。

調整一下字型和佈景,就能讓 Sublime Text 在不同作業系統,也能得到很接近的外觀。

Monaco 在 Mac OS X 系統是內建的字型,但是到 Linux 與 Windows 則必須另外安裝,字型檔可以從這個 GitHub 的專案取得:https://github.com/todylu/monaco.ttf

Sublime Text 的字型與佈景設定範本如下。


{
"color_scheme": "Packages/Color Scheme - Default/Solarized (Dark).tmTheme",
"font_size": 11,
"font_face": "Monaco"
}

Solarized 是一套講究準確用色的佈景,個人相當推薦。



停用 Ubuntu 13.04 自動登入的鑰匙圈密碼提示

設定成自動登入的 Ubuntu Desktop,在桌面開啟後,會顯示鑰匙圈的密碼詢問,輸入後才會解鎖一些程式需要的密碼功能。

但是對於不需要與別人共用的電腦來說,這個功能實在很煩。因為如果要設定密碼保護,還不如直接取消自動登入 : )

網路上已經有文章分享暴力取消的方法,但我還是比較希望使用循規蹈矩的作法。

取消密碼的步驟:

(1) 按下 Super 鍵(鍵盤左下那個該死視窗符號的按鍵),輸入密碼,找到「密碼與加密金鑰」

(2) 在上方選單「檢視」,將「依鑰匙圈」打勾,密碼及加密金鑰的左方就會出現隱藏版選項。

(3) 在左邊「密碼」的「登入」項目上面按右鍵,選變更密碼,先輸入鑰匙圈的舊密碼;看到新密碼的設定提示,將欄位都保留空白,直接按確認結束。

重開機就不會再被問鑰匙圈密碼了 :-)



Ext JS 4.2.x 使用 glyph 設定 ICON 圖示

Ext JS 的 Button 與 Tab 等元件,可以設定圖示,過去使用 icon 與 iconCls 屬性來設置。

Introducing Ext JS 4.2 文件中,建議使用新的 glyph 屬性來設定圖示。

主要的差異是過去經常使用 PNG 圖檔作為 ICON,而新的作法則改以 CSS3 @font-face 所定義的「字型」作為圖示。

目前並沒有太多關於 glyph 的文件可閱讀,只能先參考 KitchenSink 的範例,以下是 Tab 與 Button 搭配圖示之後的效果。



利用 Sencha Architect 可以看到 Button 除了 icon 與 iconCls 屬性外,也有 glyph 的屬性設定。


這組 glyph 屬性的設定值,必須是數字。而數字代表的其實就是 ASCII 字碼,例如 H 的 ASCII CODE 為 72,所以我們可以將 glyph 的值設定為 72。

{
    xtype: 'button',
    glyph: 72
}

在字型尚未設定前,實際顯示在畫面會直接秀出「H」的字母。

Glyph Icon 的意義,就是利用真正的字型來保存每個圖示,然後再利用一般文字的方式顯示。

目前 Ext JS 的佈景並未包含 Glyph Icon,但我們可以先從 KitchenSink 的範例「借」來用。

Pictos 是 KitchenSink 所使用的 Glyph Font,資料夾位於。

examples/kitchensink/resources/pictos

資料夾內包含 pictos.ttf、pictos.woff、pictos.eot 三個字型檔,除了複製到專案的資料夾下,還需要補一段 CSS3 的 @font-face 定義。

@font-face {
    font-family:'Pictos';
    src:url("../pictos/pictos.eot");src:url("../pictos/pictos.eot?#iefix") format("embedded-opentype"),url("../pictos/pictos.woff") format("woff"),url("../pictos/pictos.ttf") format("truetype");
    font-weight:normal;
    font-style:normal;
}

如此一來,就能在 Ext JS 使用 glyph 設置圖示。

查詢 Pictos 可用的圖示:http://pictos.cc/images/preview-font.png

使用 Glyph Icon 的優點是:

  1. 網頁資源載入快速(只要下載體積很小的字型檔)
  2. 能克服不同顯示解析度的圖片縮放問題

但也有缺點:
  1. 瀏覽器必須支援 CSS3 的 @font-face
  2. 必須取得字型的授權(本範例所提及的 Pictos 是需要付費的字型)
  3. 圖示無法支援彩色設計


使用 Python SimpleHTTPServer 模組快速測試靜態網頁

開發網頁在編寫前端 HTML / JavaScript / CSS 檔案,很多時候不需要後端程式就能測試;但是為了透過瀏覽器存取網頁資源,還是必須打開一個 Web Server 來服務這些靜態資源。

除了我們之前介紹過 Gradle + Jetty 的作法外,使用 Python 的 SimpleHTTPServer 模組也相當方便,只要一行指令就能起一個測試專用的微型 Web Server 服務。

以範例的個案來說,是 Sencha Architect 的 Ext JS 編輯功能,它的 Preview 依賴外部的 Web Server 來提供瀏覽器畫面的測試。

這時候只需要先切換到專案的資料夾路徑,然後執行:

python -m SimpleHTTPServer 8000

就能啟動一個測試專用的 Web Server,來提供 Ext JS 所需的 app.html 及 app.js 等相關資源的瀏覽器存取。

由於 Python 在 Linux 及 Mac OS X 通常已有內建,在 Windows 安裝也很簡便,這個方法不僅簡單易用而且跨平台。

2013年10月1日

認識 Gradle 專案建置自動化工具系列文章(2013年iT邦幫忙鐵人賽)


本月參加由 iT邦幫忙 舉辦的 2013 年第六屆鐵人賽,跟去年一樣報名技術組,希望能利用一個月的時間,產出連續 30 篇教學文章。

首發是關於 Gradle 的介紹,有鑑於這個工具已經跨越 1.x 邁入正式版本,今年還被 Google 選為 Android SDK 官方的 Build Tool,很值得 Java 開發者一起學習研究。

持續發佈更新中,全部文章皆歡迎轉載分享!
lyhcode by lyhcode
歡迎轉載,請務必註明出處!