book

回應無法跑步的人的內心話

  • 「我這一生都被說成是運動白痴,怎麼可能現在開始跑步……」
    • 每周都感受到成果就是件很棒的事,重量少一點,體脂少一點,就會很有成就感
  • 「我很胖,所以沒信心跑得動……」
    • 自己依照書中建議,先從快走開始,慢慢的速度可以提升,目前是搭配另一本書 [超慢跑] 交的方式,感覺很輕鬆,也會讓自己可以持之以恆
  • 「就算跑步,也馬上就累了」
    • 有時候加班比較累,狀況比較不好,不會勉強自己,慢慢走就好了,主要讓自己喜歡這個運動,可以持續
  • 「我跑了幾次,不過想到要持續就覺得心情沉重……」
    • 跑兩個星期後,會打開身體變瘦的開關
    • 自己實驗,確實現在若隔一兩天沒跑步,就覺得怪怪的
  • 「跑很快的話應該可以瘦得很快!」
  • 「聽說跑步會讓腿變粗,真的嗎?」
  • 「一跑步食慾就會增加,感覺反而會變胖!」
  • 「大量流汗就會瘦吧!」
  • 「不能穿減肥鞋跑嗎?」
  • 「想要每個星期跑兩次,有效率地『累積跑步』」
  • 「跑了幾次,膝蓋和腳踝都很痛,太可怕了……」
  • 「已經超過四十歲了,也沒想過要瘦身……」
  • 「下雨天好懶得跑喔……」
  • 「老實說,跑步前後要做伸展操好麻煩!」
  • 「結果只維持三分鐘熱度就結束了」
  • 「雖說要跑步,也不知道要怎麼開始跑……」

讓體脂肪不斷減少的

  • 全世界第一有效的跑步瘦身法究竟是什麼呢?
  • 把想變瘦的理由銘記在心
  • 選鞋子的祕訣就是「穿得舒服」
  • 也可以靠衣服提高脂肪燃燒效率
  • 一個星期要跑幾次,才能達到全世界最有效的減肥呢?
  • 為了達到全世界最有效瘦身的跑步時段是何時?
  • 「全世界第一有效的跑步瘦身法」裡有特別的呼吸方法嗎?
  • 要了解「跑一公里就可以消耗和體重同樣數字的卡路里」
  • 訂立出確實瘦身的瘦身計劃
  • 「慢慢地跑久一點」最適合燃燒脂肪
  • 想要瘦快一點的話,要怎麼做呢?
  • 不要太在意姿勢
  • 跑著跑著身體感到變輕鬆的瞬間,才是決勝負的開始
  • 增加成功體驗的模式吧
  • 如果只是「有做至少比沒做還好」這種程度的話,就休息吧
  • 習慣跑步之後,就不會再瘦了嗎?
  • 讓脂肪燃燒到極點的小物,是心跳錶
  • 如果跑了一個月體重還沒減輕的話

體格專家傳授更有效率的加速瘦身法

  • 體重有個「想要回復到原來數值的」習性
  • 跑步前做的伸展操可以有效分解附著在身體上的脂肪
  • 有全世界最能瘦下來的肌力訓練的道具嗎?
  • 戴上沙袋跑步較容易長肌肉嗎?
  • 跑步和泡半身浴結合,可以瘦得更快嗎?
  • 傍晚跑步,瘦身效果較高嗎?
  • 在健身房實踐「全世界第一有效的跑步瘦身法」的方法
  • 感到疼痛或極度疲勞時,要馬上保養
  • 從身體把跑步力氣奪走的「屈膝伸展操」的恐怖之處
  • 側腹突然一陣劇痛的話,當場就要伸展
  • 做血液檢查預防過度跑步
  • 想要在短時間內瘦下來的話,要委託私人教練嗎?
  • 無論是誰一定都會碰到停滯期
  • 也有人一個月跑了一百公里,皮下脂肪還減不下來

體格專家傳授更有效率的飲食瘦身法

  • 吃下去的東西經過三天後才會變成體脂肪
  • 一天吃幾餐最容易瘦呢?
  • 全世界第一效的飲食瘦身法
  • 靠「捨棄的勇氣」改掉飲食習慣
  • 把吃美食當作「獎賞自己」的人要特別注意
  • 胺基酸飲料和蛋白質,哪個較易瘦?
  • 酵素瘦身的實情
  • 要冷靜處理飽足感和瞌睡蟲
  • 心情好時容易吃過多

覺得跑步很痛苦時,找到持續下去的動力

  • 跑過頭時會傷到身體且受到挫折
  • 遇到瓶頸時,看看身邊成功的人
  • 持續下去的調味料是「誇獎的話語」和「夥伴」
  • 如果真的不適合跑步,就不要只局限於跑步

book

不再為錢焦慮的習慣

  1. 戒掉逛超商的習慣
  2. 事先規畫用錢的緩急和優先順序
  3. 不須過分節儉
  4. 將消費和投資分開考量
  5. 電影如果不好看就乾脆離開吧
  6. 不要去考慮成本效益比(CP值)
  7. 別買特價品
  8. 真正想要的東西別等到打折
  9. 健康的生活是最大的復仇
  10. 因缺錢而焦躁的話就工作吧
  11. 在健身房中找一個專業教練
  12. 要有尊重專業的付費觀念

不再為人際關係焦慮的習慣

  1. 中止無意義的交往
  2. 將自己的時間用在喜歡的人身上
  3. 無須因為備受期待就過度勉強自己
  4. 對方達不到自己的期望也要坦然接受
  5. 不用特地尋找和別人不同之處
  6. 馬上找到和對方的共通點
  7. 遠離網路社群讓你生活更自在
  8. 多聽聽別人幸福的故事或成功的經驗
  9. 不要因為聽了別人的建議才積極面對
  10. 無須傾聽少數閒雜的意見
  11. 慎選朋友
  12. 即使是長輩也無須附和他的價值觀

不再為工作生氣的習慣

  1. 憂鬱星期一不再來
  2. 不去明顯切換ON和OFF
  3. 貫徹「2分鐘法則」不再拖拖拉拉
  4. 善用「10分鐘法則」完成不想做的事
  5. 不用勉強自己閱讀
  6. 無須因為不努力學習就有罪惡感
  7. 想休息就休息吧
  8. 理直氣壯地給自己放特休吧
  9. 為什麼即使痛苦還是要上班呢
  10. 別因對方用LINE請假而生氣
  11. 多說廢話只會引來麻煩
  12. 專心思考「要如何完成工作」

不再對自己生氣的習慣

  1. 「好人」是煩躁之源
  2. 積極的開放自己
  3. 享受「一個人的用餐時光」
  4. 寫下「自己不想做的事情」
  5. 身邊的東西夠用就好
  6. 消除過去焦慮與未來不安的方法
  7. 確認是否充分運用自己的五感
  8. 再度呈現「最完美的自己」
  9. 感覺舒服的時候就該放手
  10. 習慣享受一個人的時光
  11. 在吃到飽餐廳中選擇「不吃」

不再為個人問題生氣的習慣

  1. 每天早上看不同的電視節目
  2. 試著打破自己的生活模式
  3. 拋卻使用慣的東西轉而嘗試新事物
  4. 對食物過度堅持會破壞你的幸福
  5. 只要端上桌的食物都要懷著好吃的心情享用
  6. 與其勉強配合彼此的價值觀,不如試著接受它
  7. 將感覺用語言傳達給對方
  8. 出口之前再次確認「氣話」的強度和意思
  9. 自己是否帶著「有色眼鏡(偏見)」呢
  10. 努力讓自己取得好的睡眠品質
  11. 「紀錄→實驗→改善」可以提高熟睡度
  12. 千萬不要憤怒駕駛

不再為人生生氣的習慣

  1. 自己的人生由自己決定
  2. 理解「逃避也是一種勝利」
  3. 無需過度自我克制
  4. 以中庸的生活方式為目標
  5. 肯定自己的小小成就
  6. 與其想著逆襲不如選擇周邊效益
  7. 不要一下子就把目標放得太大
  8. 相信自己努力5年後的成果
  9. 自己即使不是獨一無二的存在也沒關係
  10. 獲得絕對自我肯定感的技巧
  11. 順著環境變化生存
  12. 不搶交通號誌,不搶著上車

不再為社會生氣的習慣

  1. 對事情的判斷不要太先入為主
  2. 為什麼會亂發脾氣遷怒他人呢
  3. 不要特別去找某個人的麻煩
  4. 別讓他人擺佈自己的人生
  5. 不去看網路評論
  6. 對於訊息來源要有所取捨選擇
  7. 包容接受各種觀點
  8. 少看綜藝節目
  9. 沒有手機也能輕鬆自在的方法
  10. 不要依賴別人,也別讓自己被依賴
  11. 不要自己埋下焦躁的種子

book

大部分投資人賠錢原因,就是一個貪字,貪快,貪多,貪便宜

四支股

  • 核心,元大臺灣50 0050
  • 衛星,元大高股息 0056,台灣50正2 00631L,臺灣50反1 00632R

0056

  • 適合,第一種,正為工作努力打拼,資金不多的小資族,可以讓你買了它,幾乎忘了它,專心拼事業
  • 第二種,非常保守的人
    • 台灣指數到 9000點 買0056
    • 8000點可以開始慢慢買0050
    • 7000點多買0050
    • 5000點一下可以開始買50正2
  • 不要執迷選股不選市

0050怎麼買

  • K 小於20買0050
  • K 大於80賣0050
  • K向上穿越D買進
  • K向下穿越D賣出

book

學會分析記帳

  • 我們需要能分辨投資與消費,並且還要細分為需要的投資,需要的消費,想要的投資與想要的消費
  • 分別輕重緩急,分析每月支出,定義儲蓄金額

懂得花錢

  • 值得用錢買經驗與回憶
  • 值得用錢買健康與安全
  • 值得用錢買時間與精力
  • 花錢前先給自己一個冷靜期

累積資產

  • 累積資產靠主動收入,生活品質靠被動收入
  • 提升的收入不能拿來增加生活支出
  • 學習適應低支出生活

小資理財需要注意

  • 緊急預備金
  • 保險費用
  • 投資本金
  • 投資自己

book

DataFrame 結構

DataFrame 結構其實就是 Time Series 衍生,它的應用與 Time Series 極為相似

1. 建立第一個 DataFrame

s1 = pd.Series([1,2,3,4,5,6], index=date)
s2 = pd.Series([5,6,7,8,9,10], index=date)
s3 = pd.Series([11,12,5,7,8,2], index=date)

dictionary = {
    'c1': s1,
    'c2': s2,
    'c3': s3,
}

df = pd.DataFrame(dictionary)
df

book

2. 繪圖

%matplotlib inline
df.plot()

book

3. 使用 loc() 查找某一個值

r1 = df.loc['2018-01-02']
print(r1)
r2 = df.loc['2018-01-02':'2018-01-05', ['c1', 'c2']]
print(r2)

book

4. 使用 iloc() 查找某一個值

r1 = df.iloc[1]
print(r1)
r2 = df.iloc[1:4, [0, 1]]
print(r2)

book

5. 數值計算

df.cumsum()
df.cumprod()

book

book


book

為何 Pandas ?

Pandas 是 Python 語言中的一個資料分析工具,提供高效能,簡易使用的資料格式,讓開發人員能快速操作資料與分析。 Pandas 主要提供兩種資料結構 :

  • Time Series: 時間序列結構,Time-Value 組成的結構
  • DataFrame: 是屬於 Time Series 的延伸,相同時間可以搭配多組資料,成為多維結構

Time Series 結構

接下來我們來看看它有哪些應用

1. 建立第一個時間序列

import pandas as pd
s = pd.Series([1,2,3,4])

book

2. 加上時間 TS

date = pd.date_range('20180101', periods=6)
s = pd.Series([1,2,3,4,5,6], index=date)

book

3. 一次設定所有值

s = pd.Series(2, index=date)

book

4. 使用 loc() 查找某一個值

date = pd.date_range('20180101', periods=6)
s = pd.Series([1,2,3,4,5,6], index=date)
s.loc['20180104']

book

s.loc['20180102':'2018-01-04']

book

5. 使用 iloc() 查找某一個值

s.iloc[1]

book

s.iloc[1:4]

book

6. 數值計算

print(s)
r1 = s.max()
print(r1)
r2 = s.min()
print(r2)
r3 = s.mean()
print(r3)
r4 = s.std()
print(r4)
r5 = s.cumsum()
print(r5)
r6 = s.cumprod()
print(r6)

book

7. 整體序列計算

print(s)
print(s + 1)
print(s - 1)

book

print(s * 2)
print(s / 2)
print(s > 3)
print(s < 3)

book

8. 繪圖

%matplotlib inline
s.plot()

book


book

為何需要自動產生 API 文件 ?

這是源自於工程師的天性,懶得寫文件,我們常常一接到專案,就開始埋頭寫 code,修 bug ,偶爾會先寫 Design Document 但是常常到後來 Document 與實際程式碼,相差甚遠。 造成後續維護與交接時,還需要再重寫文件。 經過多次專案的經驗,發現工程師比較願意再寫 code 時順便改一下註解,所以如果能夠透過註解內容產生文件,這樣文件可以與 code 的版本趨於一致。 傳統使用 C++ 開發 Windows 應用程式時,我都會使用 Doxygen 但是開發 RESTful APIs 就發現 Flasgger 這個好用的工具。

Swagger 簡介

Swagger 是一個大型的 API 開發者的工具框架,該框架提出了一個編寫OpenAPI的規範(命名為OAS),並且 Swagger 可以跨整個API生命週期進行開發,從設計和文檔到測試和部署。 透過 OpenAPI 規範, Swagger 能夠自動產生 Web 版的 API 文件,並且可提供網頁 UI 進行 API 測試

Flask 簡介

Flask 是一個使用 Python 撰寫的輕量級 Web 應用程式框架,由於其輕量特性,也稱為 micro-framework(微框架)。 Flask 核心十分簡單,主要是由 Werkzeug WSGI 工具箱和 Jinja2 模板引擎所組成,Flask 和 Django 不同的地方在於 Flask 給予開發者非常大的彈性(當然你也可以說是需要思考更多事情),可以選用不同的用的 extension 來增加其功能。

Flasgger 出現

在 Flask 框架中使用的 Swagger 即為 Flasgger, Flasgger 是 Flask 支持的 Swagger UI, 方便讓我們基於 Flask API 基礎上自動產生 Swagger Style 的 API 文件。 可以參考作者這篇 Blog

安裝 Flasgger

安裝方式非常簡單,首先透過 pip 進行安裝

pip install flasgger

在 Flask Web API 上設定 Flasgger

from flasgger import Swagger
app = Flask(__name__)
app.config['SWAGGER'] = {
    "title": "My API",
    "description": "My API",
    "version": "1.0.2",
    "termsOfService": "",
    "hide_top_bar": True
}
CORS(app)
Swagger(app)

在 API 上加上 API 說明

@app.route('/v1/node', methods=['GET'])
def node_topo():
  """
    Get All Node List 
    Retrieve node list 
    ---
    tags:
      - Node APIs
    produces: application/json,
    parameters:
    - name: name
      in: path
      type: string
      required: true
    - name: node_id
      in: path
      type: string
      required: true
    responses:
      401:
        description: Unauthorized error
      200:
        description: Retrieve node list
        examples:
          node-list: [{"id":26},{"id":44}]
  """
  ret = jsonify(ret_list)
  return ret

啟動 Flasgger

使用 Flasgger 最大的好處驅動自動文件產生不需要特別指令,只需要重新執行 Flask Web API 即可

sudo python api.py

這時候 Flasgger 就會自動在 Web API 上面建立 /apidocs/ 目錄夾

畫面如下 book

book


EdgeX Foundry API 測試

edgex

edgex

edgex

edgex

edgex

edgex

edgex

edgex

edgex


edgex

安裝 Docker

透過 Docker.sh edgex

確認安裝 Docker 成功 edgex

安裝 Docker Composer

edgex

安裝 EdgeX Composer Yml 檔

edgex

edgex

安裝 EdgeX 相關服務

edgex

edgex

edgex

edgex

確認 EdgeX 服務

edgex


edgex

EdgeX Foundry 簡介

EdgeX 的目標是要分離連接標準與應用程式的裝置介面,EdgeX 也因為獨立平臺和鬆散耦合的微 服務,獲得更好的彈性與擴展性,並能使用通用API將不同語言開發的服務整合在一起。

  • South Side: All IoT objects
  • North Side: The Cloud

最新版 EdgeX California 版本

EdgeX California 的主要新功能旨在提高安全性,基於 Kong 的新反向代理要求任何 EdgeX 微服 務的外部用戶端,載入 EdgeX API 前先身分認證,這將有助於保護 REST API 通訊並保護儲存。

California 版的另一個重大變化是將開發平台從原本 Java 語言移轉至 Go 語言。

Go 語言只是一種基準參考語言,開發人員可一起使用相同 API 與其他語言,除 Go for the Device Service SDK 外,該項目還將支援 C 語言。

從下圖看出,使用 Go 語言後 Footprint 由 267MB 縮小為 42MB

edgex

EdgeX Foundry 架構

edgex

Core Service (CS) Layer

  • Core data Service : 收集由 South Side Object 所收到的資料
  • Command Service : 將 North Side 控制命令送到 South Side Objects
  • Metadata Service : South Side Object 的 Meta Data
  • Registry and Configuration : 註冊或是配置 Micro services

Supporting Service (SS) Layer

  • 主要是增加 Edge 智能方面的 micro services

  • Logging, Scheduling, Data Clean, Rule Engine, Alert, Notification

Export Service (ES) Layer

  • 負責將 South Side 資料傳送到 North Side

  • 通知 REST API 位置與 JSON 格式

Device Service (DS) Layer

  • 提供 SDK 整合不同 Device 通訊介面,讓不同 Device 可以與 Core Service 溝通

Security Infrastructure

  • 提供資料保護與不同 Device 的命令

System Management

  • 負責 Microservices 的 installation, upgrade, start, stop, minotring