前言
目前有數個專案使用了共同的核心架構,
一開始是每個專案都有一份相同的程式碼。
有天驚覺:
若哪天核心程式碼做了修改,
那麼每個專案都要跟著做調整;
一兩個還好,若是要修改數十個專案,
這肯定會是一場災難。
理想的作法是只要改一次,更改的內容便可同步到其他專案。
針對這個需求,最後決定採用 Git Submodules;
修改完核心程式,各專案的 Submodule 只要 git pull 就可以更新。 閱讀全文 Android 專案設定 Git Submodules
目前有數個專案使用了共同的核心架構,
一開始是每個專案都有一份相同的程式碼。
有天驚覺:
若哪天核心程式碼做了修改,
那麼每個專案都要跟著做調整;
一兩個還好,若是要修改數十個專案,
這肯定會是一場災難。
理想的作法是只要改一次,更改的內容便可同步到其他專案。
針對這個需求,最後決定採用 Git Submodules;
修改完核心程式,各專案的 Submodule 只要 git pull 就可以更新。 閱讀全文 Android 專案設定 Git Submodules
前陣子完成架構的升級後,接下來就是蔬果行情站本體的改造,主要是開發語言的更換,以及程式架構的調整;除了上述提到部分,我認為還有兩點相當重要:
這點我認為是最嚴重的,因為一直有使用者反應這件事,但又無法讓每一位使用者瞭解:預測零售價是可以自行修改的參數。改善方向就是拿掉這項功能,取而代之的是更客觀的方法:以上個月的平均價去比較當日平均價,並提供漲跌資訊,由使用者自行判斷便宜與否。
關於行情線圖,最常看到的評論是字太小,再來就是線圖不知如何使用。前者是介面上的設計不良,未能顧及某些使用者的需求,至少就有兩、三則評論提到:長輩看不清楚線圖上的數字,希望可以再大一些。後者則是未提供使用者操作教學,如:兩指放大、縮小的手勢;這類 UI / UX 相關的需求會在新版本加以改善。
最初只是想重構蔬果行情站的應用程式,
目前專案是採用非正規的架構寫出,
而且相當小眾,壞了很難追到問題的原因;
近期較熟悉官方推薦的方式,
也對於這個專案有些新想法,就決定把它砍掉重練。
而前陣子 Google I/O 宣布:
Google Cloud Platform 提供 Always Free 方案,
便衍生了把蔬果行情站後端拆出去的念頭,
因為目前主機上有數個專案在運作,負擔太大了。 閱讀全文 使用 Google Cloud Platform 翻新系統架構
以往寫 Java 或 C# 時,IDE 會提供開發者除錯的功能,
其中我最頻繁使用的是斷點 (Breakpoints),
點幾下就可以知道程式流程及變數內容,相當方便。
但寫 PHP 時,我除錯的方法是印出變數值,
相較之下根本還停留在石器時代,
趁著最近開始使用 Visual Studio Code,
就來紀錄一下 PHP Debug 的設定方法。 閱讀全文 Visual Studio Code 設定 PHP Debug
不曉得你們有沒有遇過這種狀況:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:drawableRight="@mipmap/arrow" android:text="免費註冊取得更多功能"/>
android:gravity="center_vertical"
,結果一旁的 Drawable 卻沒有置中對齊,變成這樣:
這是因爲字型設計時,文字會有筆畫延伸高度:
上延筆畫(ascender)
下延筆畫(descender)
而 Android 會針對這兩個高度去畫額外的留白空間,
此時就會導致視覺上文字無法跟圖片垂直置中。
設計師看到就會訐譙你這跟他畫的 mockup 不一樣。
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:drawableRight="@mipmap/arrow" android:includeFontPadding="false" android:text="免費註冊取得更多功能"/>
android:includeFontPadding="false"
這項屬性,Leave enough room for ascenders and descenders instead of using the font ascent and descent strictly. (Normally true).
預設為 true,此時會連同額外的留白空間一起畫,
也就是說,當屬性設定為 false 時,
應可預期那些額外的留白會消失,
讓 TextView 的 Drawable 可以垂直置中對齊 。
前陣子將推播服務換成 Firebase,
但發現一個問題:只有在前景時才收得到訊息。
官方文件指出:
App behavior when receiving messages that include both notification and data payloads depends on whether the app is in the background or the foreground—essentially, whether or not it is active at the time of receipt.
因此,想在背景收到通知,必須傳送 data message。
使用方式為:
curl -XPOST -H 'Authorization: key=<your_API_key>' -H 'Content-Type: application/json' -d '{"data":<data_you_want_to_send>, "registration_ids": [<device_FCM_tokens>]}' https://fcm.googleapis.com/fcm/send
偶然查到新莊有間抱石場:
因為有懼高症,遲遲不敢嘗試攀岩運動,
但簡介提及高度莫約四至六公尺,
感覺是可以接受的高度,就去挑戰了。
抱石是攀岩的一種型態,但是與多數攀登型態最大不同處是抱石不用繩索等器材確保,因而攀爬高度不高,以確保攀登者墜落無危險。 — 維基百科
簡單來說就是不需繩索的攀岩運動,
在攀岩牆下會有大型軟墊避免墜落傷害。 閱讀全文 抱石初體驗
EcoQube C 的開箱文是一月發表的,
但我遲遲沒有買魚,一直拖到了二月中旬才入手;
其實我已打定要養河豚,只是有些前置作業必須先處理。
魚缸是個半封閉的生態系,
裡面的活體需要乾淨、穩定的水質,
穩定的水質則依賴處理毒物的細菌。
(但這缸還有植物可以幫忙吸收毒物就是了) 閱讀全文 設缸紀錄 (一)
我在工作的專案中只要 Deadline 沒有很緊,
或者是程式要重構時,
我跟另一位工程師就會採用 Pair Programming 進行開發,
簡單來說就是:同時間一人負責寫,另一人負責檢查及提問,
透過此開發方式提高程式碼的品質。 閱讀全文 Pair Programming 心得