2016/12/31

FluxJava 與 Rx 結合的使用示範

這篇是「FluxJava: 給 Java 使用的 Flux 函式庫」的延續,會透過建構一個示範的 Todo App 的過程來說明如何使用 FluxJava,所有示範的原始碼都可以在 Github 上找到。 大部份的內容其實都已經寫在另一篇中,但考量到有一些性急的朋友對於要開另外一篇文章,來看與想找的主題無關的內容會感到不耐,所以在這篇文章中還是會呈現完整的步驟及相關的內容。 Flux 簡介 為了方便不熟悉 Flux 的讀者,一開始會先簡短地說明這個架構。以下是借用...

2016/12/7

FluxJava 與 EventBus 結合的使用示範

這篇是「FluxJava: 給 Java 使用的 Flux 函式庫」的延續,會透過建構一個示範的 Todo App 的過程來說明如何使用 FluxJava,所有示範的原始碼都可以在 Github 上找到。 Flux 簡介 為了方便不熟悉 Flux 的讀者,一開始會先簡短地說明這個架構。以下是借用 Facebook 在 Flux 官網上的原圖: 從圖上可以看到所有箭頭都是單向的,且形成一個封閉的循環。這一個循環代表的是資料在...

2016/12/2

如何消除間接呼叫 Method 在 Android Studio 中的編譯警告

如果有使用過 DI (Dependency Injection) Framework 像是 butterknife,或是 Bus 一類的 Framework 像是 Otto 或 EventBus,一定會撰寫出 Method 是沒有被自己開發的程式碼直接呼叫的。這時在 Android Studio 的即時編譯檢查就會出現警告: Method ‘...’ is never used 就像這篇文章裡提到,警告的出現會形成一定程度上的困擾,最好是能夠消除掉,畢竟這是一個無法避免的寫法,但又不應該是個問題。 照「調整...

2016/11/28

設定 build.gradle 來用 Spock 對 Android 元件進行測試

在「使用 Android Studio 開發 Web 程式 - 測試」中說明了為什麼要選擇 Spock Framework 來做為測試時的 Framework。在實作時 build.gradle 要做一定程度上的設定,才能夠使以 Spock 寫出來的程式碼得以運作,以下將會說明相關設定上的細節。 首先,Spock 的測試程式碼需要使用 Groovy 語言來撰寫,所以 build.gradle 中要先引用 Groovy 的 Gradle Plugin。第一步要在 Root 的 build.gradle 中增加以下內容: ...

2016/11/16

2016/11/12

FluxJava: 給 Java 使用的 Flux 函式庫

為何選擇 Flux 設計上遇到的問題 最初在接觸 Flux 時就有一種驚豔的感覺,長久以來在設計上所出現的困擾似乎出現了曙光。在 Flux 還沒有出現之前,MVx 系列 (MVC、MVP、MVVM) 的 Design Pattern 就一直引領風潮。這類型的 Design Pattern 成功地解決了特定的問題,但卻也形成了某些尾大不掉的隱憂。在畫面不多、顯示資訊單純的應用程式中問題不容易顯現,但隨著程式複雜度的昇高,設計上所隱含的矛盾也不住地增強。 MVx...

2016/10/28

如何在 Drawable 的 Selector 中使用 Theme 所定義的 Color 值

在最新的 Android 版本中提供了一項方便的功能,可以指定 Theme 中定義好的顏色到 Layout 中的對應 Attribute。例如:在 Theme 中會定義 android:colorPrimary 來代表主要的顏色,此時可以指定 TextView 的 textColor 為 "?android:attr/colorPrimary”,則 Text 的顏色就會呈現 colorPrimary 所設定的數值。當 Theme 的 colorPrimary 更改時,TextView 上的 Text 顏色也會隨之修正。 不過這並不是這個功能的優勢,在 textColor 中指定 “@color/primary”,再透過修改預先在...

2016/9/22

軟體的盈利模式

當辛辛苦苦開發好一個應用程式、一套系統,如果想要期望這個軟體能夠養家活口、甚至是榮華富貴,就必須要思考一個問題:如何向使用者收錢? 軟體可以收錢的模式,大致可分為幾種類型: 依功能計價 依資料容量計價 依使用人數計價 依使用時間計價 依內容與服務計價...

2016/8/4

如何使用程式更改 Activity 中 App Bar 的背景顏色

一般在設計 Activity 時,會設定 Activity 的佈景主題,也就是套用某一個特定的 Theme。如果今天在啟動 Activity 後想要動態調整 App Bar 的背景顏色,可以在另外指定 Activity 所套用的 Theme 後重新啟動 Activity。然而,這樣的程序只是為了換個顏色似乎有一點小題大作,所以在這篇文章中提供了另外一種不用重新啟動 Activity 的方...

2016/7/29

在可收合的 App Bar 中加入 Subtitle

可收合的 App Bar (以前叫 Action Bar 後來又一度改成 Tool Bar) 是 Android 平台上新推出的 Material Design 效果。要在開發的 App 中使用這個效果並不難,只要在最新的 Android Studio 中,於新增 Activity 時選擇【File -> New -> Activity -> Scrolling Activity】,並依照「Configure Activity」視窗的欄位填好內容,按下【Finish】按鈕,就可以有一個執行起來如下圖的畫面,頗為無...

2016/7/17

解析 Android 開發時的 SDK 版本參數設定

在開發 Android App 時,開發人員最容易出現困惑的地方之一應該是 compileSdkVersion、minSdkVersion 和 targetSdkVersion 這些參數的用途。對此,有 Google 內部的 Android 開發人員就這個議題寫了一篇文章:Picking your compileSdkVersion, minSdkVersion, and targetSdkVersion。在這裡會用不同的角度來說明這些參數的用途,希望能對大家在應用上有所幫助...

2016/6/25

行動裝置的資料存取選項

今天如果是要開發一個在行動平台上的應用程式,應用程式的功能要夠豐富,就勢必得牽涉到資料存取的議題。否則使用者在操作程式時,就如同和海底總動員的 Dory 對話一般,每次開啟程式都只能反覆地進行基本的作業、無法累積操作狀態的資訊...

2016/5/30

使用 PMP 的 EVM 追蹤軟體開發進度

軟體開發在追蹤上的難題 一般在企業內部要開始一個軟體開發的專案有很多時候是老闆忽然靈機一動地問說:「我們來開發一個某某系統,你覺得需要多久?」有經驗的人聽到這個問題時就知道這是考驗專業能力與政治敏感度的時刻,因為這是一個兩難的問題。在好傻好天真的時期會想:「天啊!系統要做到什麼程度、有多少人參與、要給多少資源都還沒確定,就要押完成日?」會有這樣的想法不意外,就像是要蓋一個房子,連要蓋幾層都不確定、設計圖都還沒畫,更別提建材和工人都還沒有著落的情況下就要問何時入住,回答得出來才有...

2016/3/25

驚!點鈔機進化到足以全面取代人工作業

日前 DeepHand 發表了一款新的點鈔機取名為 BetaCo,該點鈔機具備了可自我調整力道的滾輪、高精度的感應器,並且提昇了對於各種鈔票狀況的學習能力,能夠在收集一定數量的資料後適應並清點各種不同情況的紙鈔。雖然前一代的點幣機成功地擊敗了世界知名的點幣好手,但由於紙鈔具有柔軟的特性,而且有可能因為髒污、破損、折痕等各種情況導致機器在判讀上的失誤,難度相較於硬幣要高出好幾個等級,所以這一款點鈔機問世對於產業界來說有一定的指標意義。 DeepHand 的技術人員透過大量地餵入各種情況的鈔票,來讓機器收集資料、建立樣本庫,以便機器在面對不同情況的紙鈔時能更準確的調校內部機構的出力及感應器的門檻值,正確地算出鈔票的張數。為了更進一步驗證機器的能力,於是...

2016/2/25

使用 iWork 的 Pages 來撰寫軟體開發文件

撰寫軟體開發文件在團隊裡往往都是一個讓人愛恨交織的課題,開發人員的身體裡大多都帶著討厭寫文件的基因。所以在時程不充裕的案子中,文件撰寫一定是背負著拖累時程的原罪、頭一個被捨棄的工作項目。但是在接手既有系統時,又期昐原本系統的開發相關人員能留下文件,哪怕是文字殘缺不全、沒有隨著最新的程式碼同步修正,就算只有隻字片語也多少能做為一窺系統設計全貌的契機。 文件本來的目的就是用來溝通(不過制度僵化的公司也許會拿文件來做神主牌),而用什麼工具來撰寫文件會是個影響這項工作成效的關鍵因素。用 iWork 的 Pages 來撰寫軟體開發文件?用慣微軟產品組合的人第一個想法可能會是:為什麼這麼想不開?既然是要溝通,撰寫出來的文件內容就要具備可交換性。如果只是要文件內容可以被閱讀,那麼能輸出成類似...

2016/1/29

來自 Play Store 的流量垃圾 (Referrer Spam)

長見識了,原來流量垃圾 (Referrer Spam) 的「轉介網址」跟廣告信的「寄件信箱」一樣,可以被設定成任何的網址。不過想想也不意外,HTTP 裡本來就有轉介規格,如果 Blogger 是利用這個規格來記錄流量來源,那送出要求端要設定成什麼字串就隨人高興了。 最近在檢視 Blogger 提供的「統計資料」功能時,發現有一個集中的流量來源是轉自 Play Store (play.google.com),看網址是指向某個 App。至於哪一個就不附上來,被騙已經心有不甘了,不想再替他廣告,讓更多人點進去。 看到這個網址當下的想法是,會不會有人在評論中加上了文章的網址。但想想又有點奇怪,有什麼樣的...