Software entities (class, modules, functions, etc.) should be open for extension, but closed for modification. Junior programmers create simple solutions to simple problems. Senior programmers create complex solutions to complex problems. Great programmers find simple solutions to complex problems. 註1:本部落格的範例程式碼在 2015 年以前的文章中,大多是以全型空白做縮排。如需服用,請自行用文字編輯器的取代功能把全型空白取代成半型空白。
- Bertrand Meyer
- Charles Connell
註2:本部落格的內容授權請參閱部落格底部的授權宣告。
2018年1月12日 星期五
2018年1月11日 星期四
(暫存) AWS Step Function
名詞
- terminal state:代表會讓流程結束的 State。具體有三種表現方式:
- State 具有 “End”: true 這個屬性。
- State 的種類是 “Type”: “Succeed” 或者 “Type”: “Fail”
訊息傳遞
在 Step Function 的每個 State 之間,預設狀況是呼叫一個 Task 時,Task 的回覆會成為 State 的 Output
然後原因是因為預設的 OutputPath 是 ‘$’。這裡 OutputPath 代表的是 Task 回覆的東西,要覆蓋到哪裡去。
如果 OutputPath 設為 null,表示回覆的內容不覆蓋,此時 State 的 Output 就會是 State 的 Input。
但如果 OutputPath 設定為像是 ‘$.result’ 的話,那麼 State 的 Output 就會是原本的 Input 再加上 result 這個 key。
參考資料
2018年1月10日 星期三
Python 的時間處理
字串轉時間
假設字串是「Wed, 10 Jan 2018 08:09:13 +0000」,可以使用這樣的 Pattern 來解析:
from datetime import datetime time_text = 'Wed, 10 Jan 2018 08:09:13 +0000' datetime.strptime(time_text, '%a, %d %b %Y %H:%M:%S %z')
其中 Pattern 的寫法可以參考官方的文件 [1]。
取得帶有時區資訊的現在時間
需要特別這麼做的原因,是因為如果是直接使用 datetime.now() 的話,得到的時間是沒有時區的這在需要做時間比較時有可能會有問題,尤其在要比較的時間本身就有時區資訊的話,Python 會回傳錯誤訊息。
from datetime import datetime, timezone datetime.now(timezone.utc)
計算時間
取得三小時前的時間from datetime import datetime, timedelta, timezone datetime.now(timezone.utc) - timedelta(hours=3)
參考資料
2018年1月9日 星期二
AWS DynamoDB SDK v2 基礎使用(三):寫入資料
DynamoDB 不得不說,其實表達的格式相當囉唆~
所以想要存取 DynamoDB,無論如何程式碼都會寫得有點冗長。
而其中因為 Java 又是格式嚴謹的語言,於是又比別的語言再更囉唆一些……。