Software entities (class, modules, functions, etc.) should be open for extension, but closed for modification.
- Bertrand Meyer
Junior programmers create simple solutions to simple problems. Senior programmers create complex solutions to complex problems. Great programmers find simple solutions to complex problems.
- Charles Connell
註1:本部落格的範例程式碼在 2015 年以前的文章中,大多是以全型空白做縮排。如需服用,請自行用文字編輯器的取代功能把全型空白取代成半型空白。
註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 來解析:
1 2 3 4 |
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 會回傳錯誤訊息。
1 2 3 |
from datetime import datetime, timezone datetime.now(timezone.utc) |
計算時間
取得三小時前的時間1 2 3 |
from datetime import datetime, timedelta, timezone datetime.now(timezone.utc) - timedelta(hours = 3 ) |
參考資料
2018年1月9日 星期二
AWS DynamoDB SDK v2 基礎使用(三):寫入資料
DynamoDB 不得不說,其實表達的格式相當囉唆~
所以想要存取 DynamoDB,無論如何程式碼都會寫得有點冗長。
而其中因為 Java 又是格式嚴謹的語言,於是又比別的語言再更囉唆一些……。