給 Gradle 入門者的 Groovy 語言特性介紹

這篇文章目標群眾並非已經熟悉 Groovy 語言的朋友們,不過若是不吝指教的話也歡迎讀完,指出可能有錯誤的地方(畢竟這都是筆者自己從書上看來的),或是筆者遺漏了什麼為了學習 Gradle 所需了解的 Groovy 的重要特性的話,也歡迎補充指教 :)

由於盧育聖 (Sam Lu)老師在 Facebook 上貼的這篇文章:

就像是一盞明燈一樣點亮了 Android 開發者學習 Gradle 的康莊大道啊!一點都不誇張!

所以翻了翻目前市面上有的書籍,決定先挑本「Gradle in Action」來看,這本書在附錄的章節有介紹一些要認識 Gradle 所需具備的 Groovy 的基礎,個人覺得還不錯,以下是這個章節個人的幾點筆記:

Read on

Apache JMeter™ : 負載測試與效能測量的好工具

JMeter 是 Apache 組織下一套百分之百由 Java 來開發的 open source 軟體,主要設計用來測試軟體行為在負載較重的情況下是否能夠正常運作且不出錯,以及測量軟體在給定負載量(or給定壓力)下的效能表現。

時下的軟體架構,隨著硬體架構主流轉為分散式架構設計,也開始要求盡量利用並行程序的方式來盡可能的榨取硬體的效能,利用硬體本身的多個 CPU 及單 CPU 擁有多個核心設計,進而達成大量且高速運算的要求,來符合今日大數據時代的需要。這樣的軟體架構要求,自然讓人必須改變從前設計軟體的舊思維,從而擁抱今日因多執行緒需求而生或再度崛起的各式語言,如 Scala、Erlang、Haskell…等這樣的 functional program language。

似乎有點離題了,JMeter 能夠 理論上模擬無限多個執行緒來同時存取你的服務(如呼叫API,取得網頁內容等),測試在各種極端環境下,軟體行為是否都能夠正確的執行,協助我們找出未來服務正是上線後可能碰到的問題,以及測量在該極端環境的下,服務的效能是否夠好,能夠讓使用者感覺不到那一片的存在一般。

舉些簡單的例子的話,就是每當五月天、阿妹、江蕙要開演唱會,數萬人同時間湧入售票系統搶票的時候,就在這短短的幾分鐘內,對於售票系統的負載可不是鬧著玩的,這時有沒有事前先做好這方面的測試,從事後鄉民的謾罵聲便可一窺一二了!

Read on

2015年展望與回顧

新的一年又來到,照慣例(謎之音:喂~你以前根本沒寫過這類的文章吧!)要來發一篇「展望與回顧」系列的文章,整理與總結一整年來的工作與生活心得;以及對未來一年的期許與抱負!

廢話不多說,就讓咱們先一起來回顧一下:

2014回顧

工作:

在過幾個月,我就在「史塔克科技」待滿兩年的日子,總結一下2014年的工作成果

  1. 某跨國廠商台灣分公司委託開發的 Android CRM App (In-House)
  2. 供新竹物流運輸線上人員使用的 App 開發 - 貨追雲端 (In-House)
  3. 誠和資訊快照機 App 開發 - okid
  4. 捕獲相機
  5. 與深圳奇沃智联科技有限公司協同開發 BabyCare App (尚未發佈)
  6. 謝謝你好朋友客戶廠商的序號活動樣板頁面製作 (Github)
  7. 推動公司內部的「技術研討」活動,穩定舉行中,以下是本人主講的議題:
  8. 建置公司 Redmine 專案管理系統,並搭配 HipChat 作為公司內部溝通平台
  9. Sent 人生中在 Github 上的第一個 Pull Request!(這應該不算工作內容 xD)

生活:

這個部分就記錄一下2014年的旅遊行程好了:

  1. 日本新潟,朝聖日本三大花火節之一的「柏崎海の花火大会」,壯麗之程度,害人絕對想再去蒐集三大煙火的另外兩大煙火!
  2. 日本東北,夏季的奥入瀬渓流,被森林、自然擁抱的感覺真好,應當會在某年紅葉的十一月再度前往吧!
  3. 九月挑戰中級山 - 淒美絕頂的南投水漾森林
  4. 十月國慶假期至日本沖繩,被颱風追...
  5. 十月底員工旅遊至日本靜岡賞富士山與東京

嗯…好像太常去日本的感覺?不過廉航機票便宜加上日幣又整個大跌,基本上來說還OKAY囉!

Read on

Android : Tools Attributes

各位 Android 開發者若已經改採用 Google 官方所推薦的 Android Studio 作為開發時的 IDE 的話,那麼,在編輯 layout 的 XML 檔案時,有沒有注意到像是 Activity 的 root Layout 新增了 http://schemas.android.com/tools 這樣的一個 namespace,並且在 root Layout 的屬性 (attribute) 中多了以 tools: 這個 namespace 開頭的 attribute tools:context="your_activity" 這樣的屬性呢?

這個新的 namespace 是在哪個版本後加入的,筆者也不太清楚…趁著最近專案告一段落之際(所以才有時間寫部落格呀),閱讀到一些有關這個 namespace 的妙用,本篇就幾個較感興趣運用方式作介紹。

Read on

在 AWS 上安裝 perl 模組

這兩天手邊較閒,便想說幫公司撰寫隻簡單的 perl script ,搭配方便好用的 HipChat ,用來提醒當週的值日生,此舉立意甚好,自動化腳本本來就該是程式人追求的終極目標嘛!(笑)

所撰寫的腳本因為利用了一些 perl module,像是 DateTime, Text::CSV 這些模組,因此直覺的在本機上透過 CPAN 來安裝這些模組,以解決繁複的套件相依性的問題,一切都是這麼的美好、順利,直到當要 porting 到 AWS 的機器上...

一如往常的,執行起在本機端開發時的指令流程,採用 cpan 的 shell 環境指令安裝,如下:

cpan[1]> install Text::CSV
Fetching with LWP:
http://httpupdate35.cpanel.net/CPAN/authors/01mailrc.txt.gz
Reading '/home/starktech/.cpan/sources/authors/01mailrc.txt.gz'
............................................................................DONE
Fetching with LWP:
http://httpupdate35.cpanel.net/CPAN/modules/02packages.details.txt.gz
Reading '/home/starktech/.cpan/sources/modules/02packages.details.txt.gz'
  Database was generated on Tue, 07 Oct 2014 07:53:28 GMT
..............
  New CPAN.pm version (v2.05) available.
  [Currently running version is v2.00]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.


.................................killed

但是不管嘗試幾遍,安裝哪個模組,所有的程序都會被系統給 kill 掉,完全無法安裝任何模組...(這樣我辛苦寫的 script 是要怎麼用啦!)

經過了 Google 大神一番的幫助,在閱讀過一些討論串後,發掘其實這是由於系統的資源不足所導至的!公司因為要省錢,所以租用的也是 AWS 上最不給力的 EC2 T1.Micro 方案,運算與儲存資源受到相當的限縮。而 CPAN 在安裝模組的過程中所需要的記憶體資源算是相當的龐大,所以在這類平台或是運算資源有所限制的機器上,這個方法是行不通的!

那,該怎麼辦呢?這就是為什麼 cpanminus 誕生的原因了!

使用方式

  cpanm Test::More                                          # 安裝 Test::More 模組
  cpanm MIYAGAWA/Plack-0.99_05.tar.gz                       # 帶版號的 Tarball 檔名
  cpanm http://example.org/LDS/CGI.pm-3.20.tar.gz           # 從網路上的 Tarball 檔安裝
  cpanm ~/dists/MyCompany-Enterprise-1.00.tar.gz            # 從本機端的 Tarball 檔案安裝
  cpanm --interactive Task::Kensho                          # 互動式地安裝過程
  cpanm .                                                   # 從當前資料夾安裝

之後無論是在自己的 laptop 上開發,或是 porting 到其他地方,都用這個 cpanm 幫你搞定吧!