[異常記錄] 多語系架構上線

前情提要

很久很久很久以前,
【跨國語系基礎架構】上線了.
又過了很久很久 我們評估這多語系 API 需要上 CDN
我們評估這多語系 API 需要上 CDN

Release 項目與工作內容

  • 8/16 要 release 什麼?
    我們要將多語系開始開發的項目一次回台灣正式環境。
  • 我們作了什麼
    • sp23/sp24/sp25/sp26/sp27
    • 前端多語系底層架構的調整(含 CDN)
    • 國別設定
    • 還有一大堆 Merge 解衝突的項目…
  • 為什麼要等這麼久才上線 ?
    風險考量,我們先上了基礎架構,
    在 G3 環境上觀察了一段時間確定沒有問題才上線。
  • 講到風險,我們有多少保險 ?
    • 只上基礎架構 (讓異動最小)
    • 只上 G3 環境 (讓 impact 最小)
    • 藍綠部署 (標配,讓壞掉的時間儘可能縮短)
    • Merge Before Build (讓原始碼不受影響,rollback 時不會拔掉其它團隊的功能)

講那麼多,還不是壞掉了。

錯誤原因

錯誤畫面

錯誤畫面

錯誤原因

錯誤原因

多語系 CDN 的 Response Header Access-Control-Allow-Origin Protocol 與主頁面不符;

流程面

測試環境 測試結果
QA8 OK
QA OK
PP OK
鎖 Host 測試 OK
半數機器上線 OK
全數機器上線 OK,好 (壞了)

為什麼全數機器上線才發生異常。

  • QA8 沒有 CDN
  • 鎖 Host/半數機器上線未開 CDN
  • QA / PP CND 設定與正式環境不一致
    • RD 並未 Check 設定的一致性
    • RD 沒有權限

技術細節

  1. 使用 Partial View 與 OutputCache
  2. 小心 Browser Cache
  3. 站台上會有跨 Domain 的存取行為
    • Service to Official
    • Service to CDN
    • Official to Service
  4. CDN & Access-Control-Allow-Origin
  5. 稍微提一下 CORSModule

錯誤分析

錯誤分析

TranslationCDN : 用來防止瞬間量對 Server 的 Impact
FingerprintTag : 一份Cache的時戳, 用以取得新版多語系 Json 檔
site : BrowserCache 遇到跨 Domain 存取時, 會發生 CORS Error
  1. Partial View 會有 OutputCache
    → 保得了一時,保不了一世
  2. 為了 Browser Cache ,F2E 在 QueryString 作了加工。
  3. 網站跨 Domain 的存取行為,歷史共業。
  4. CDN & Access-Control-Allow-Origin
  5. CorsModule,有必要區分 protocol 嗎 ?

架構圖

1
2
3
4
if (httpContext.Request.Url.Scheme == Uri.UriSchemeHttps && (sourceUri == null || sourceUri.Scheme == Uri.UriSchemeHttps))
{
allowOrigin = allowOrigin.Replace("http:", "https:");
}

問題處理經過

  1. 第一時間 QA 有看到異常, 但是在 PO 的環境無法重現, RD 初步判斷為快取的問題, 並嘗試重現錯誤 。

  2. SRG 收到通報有客戶反應顯示異常,立即啟動藍綠部署,耗時 93 分鐘

  3. 縮小範圍至 CDN 與 Access-Control-Allow-Origin 異常,但是仍然無法完整重現錯誤(時好時壞)

  4. 申請 CDN 權限,確認各環境的設定值。

  5. 申請 QAn 測試用 CDN,在 QA8 環境反覆測試,
    發現頁面 OutputCache 會影響測試
    關閉 QA8 OutputCache
    測試步驟如下:

  6. 確認 Prod CDN 的 WhiteList Header 的設定有問題,
    那為什麼 PP/G3 不會有問題呢 ?
    => 在 PP/G3 設定為 Referrer

  7. 測試過程發現 x-cache Header 常常
    Miss from cloudfront,
    表示資料並非來自 CDN .
    實際測試 Origin 比 Referrer 更適合

回饋與後續

1. 團隊評估欠缺數據 →
2. 客戶反應異常。
3. 藍綠部署異常回覆速度,耗時 93 分鐘 → `已有RD著手改善`
4. 無法完整重現錯誤
5. RD 沒有 CDN 權限 → `已申請`
6. QAn 沒有設定 CDN → `沒有CDN的Issue沒必要特別設定(因為需要對外)`
7. 頁面 OutputCache 會影響測試。
8. PP / G3 與 Prod  CDN設定不一致 → `webapi/translate/* 已調整一致`
9. Release 三步驟 , 最後一步才會開啟 CDN

Q. 下次我們怎麼作 ?

補充資料

  • 什麼是 CDN ?
    什麼是 CDN

    Server 跟 CDN 就像工廠與便利店的關係, 你要買東西不用跑到工廠
    只要在離自已最近的便利店買就好了, 過期的商品(資料)會被丟掉
    重新跟工廠進貨(拉新資料)。
    
  • 什麼是 CORS ?

  • 什麼是 Origin

  • 什麼是 Referrer

  • Slide

(fin)

[踩雷筆記] .Net專案升級 SpecRun.Runner 與調整 CI

前情提要

  • 專案使用 Specflow 寫 BDD
  • Visual Stuio 找不到測試所以才升級 SpecRun 與 Specflow
  • Visual Studio 2017 升級到 15.8.1 後突然無法正常搜尋到測試
  • SpecRun.Runner 升級(1.2 → 1.8.2)

去年 12 月跟 Visual Studio 折騰了許久,才讓專案的測試項目重見光明
在今年與其它專案合併後,測試又從我們團隊的眼前消失了。

調整項目

升級 Specflow 與 SpecRun 相關套件
升級 Specflow 與 SpecRun 相關套件

取得 SpecRun 位於專案的 packages 資料夾中。
取得 SpecRun 位於專案的 `packages` 資料夾中。

設定 CI

由於 SpecRun 版本不符會導致 CI Job Error , 需要設定以新的 SpecRun 執行 CI

D:\SpecRun.Runner.1.8.2\tools\SpecRun.exe run D:\Project\Core.Test\bin\Debug\Core.Test.dll /baseFolder:Core.Test\bin\Prod /toolIntegration:vs201 0 /reportFile:Core.Test.TestResult.html

參考

(fin)

[踩雷筆記] 誰改了我的 package-lock.json ?

環境

OS Windows 10
npm v6.2.0
node v8.11.1

問題

承上篇[實作筆記] 設定 NPM Registry
後續發生的一些問題,
每當我執行 npm install 的時候都會異動到 package-lock.json 檔;
異動這個檔案並不意外,可以參考官方文件的說法。

奇怪的點是,異動竟然包含 Registry !?
全部都被置換成公司的 Domain , WTF ?

公司的 Domain

原因與坑

當執行 npm install 的時候,
node 會去檢查你實際安裝的 node_modules,
並產生 package-lock.json 檔。
可以把 package-lock.json 想像成 node_modules 的映射。
而恰巧之前所安裝過的檔案,是在 Registry 為 npm.mycompany 時下載的;
這導致產生 package-lock.json 的時候會映射出 npm.mycompany 的資訊。

小心有坑!!
即使刪除了 node_modules 再重新 npm install
仍然會產生錯誤的 package-lock.json;
這個原因是 npm 會有 npm-cache;
這個資料夾位在 %Users%\AppData\Roaming

解決方法

  1. 設定 npm registry

    npm set registry https://registry.npmjs.org

  2. 刪除專案底下的 node_modules 資料夾
  3. 刪除 npm-cache
  4. 重新執行 npm install

(fin)

[實作筆記] 設定 NPM Registry

原因

最近換了新電腦,在家工作時發生了 npm install Error;
錯誤訊息如下,明顯看到 npm 嘗試去連線 http://npm.mycompany.io
http://npm.mycompany.io 是公司內部的私有網路;
印象中沒有特別設定,可能是公司內的預設安裝設定的。

1
2
3
4
5
6
7
8
9
10
11
12
PS D:\Repo\Marsen\Marsen.Node.Express> npm i -g gulp
npm ERR! code ETIMEDOUT
npm ERR! errno ETIMEDOUT
npm ERR! network request to http://npm.mycompany.io/gulp failed, reason: connect ETIMEDOUT ***.***.***.***:80
npm ERR! network This is a problem related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settings.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly. See: 'npm help config'

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Mark Lin\AppData\Roaming\npm-cache\_logs\2018-07-29T07_17_25_263Z-debug.log

解法

一個簡單的方法是 VPN 回公司內部網路;
另一個方法是重新設定,

1
2
3
4
5
> npm get registry
http://npm.mycompany.io
> npm set registry https://registry.npmjs.org
> npm get registry
https://registry.npmjs.org

(fin)

[閱讀筆記] The Great Scrum Master 第二章

大綱

  • 心態模式
    • 教導和輔導
    • 移除障礙
    • 引導
    • 教練
    • 觀察

教導和輔導

初期需要一再解釋為什麼要實施 Scrum 和 Agile 方法和如何運作,
團隊成熟後,共享經驗,並且更多的實踐

移除障礙

排除團隊的障礙,是將責任、活動和所有權都下放給團隊,讓團隊可以自行解決問題

1
2
3
4
實務上資安、權限和風險上的控管似乎不可行?
雖然說信任團隊,但是上述的角度來看,這些限制是必要之惡。
新創團隊怎麼作 ? 規模擴大後的團隊又該怎麼作 ?
系統思考?

引導

確保會議有效率,使每次談話有目標/結果。

1
2
3
4
5
開會前確認討論的主題與範圍,
開會中確保有效討論與時間控制;
開會完產出相對的決定/行為/文件。
其中以行為最為重要,也是所謂的action item
或是下一步清單。

教練

Scrum Master 最重要技能之一,關注個人成長也關注團隊自組織、責任感與所有權

1
2
3
4
5
不知道這本書在供三小,知道的人請告訴我
我比較推薦以下這篇的說法,教導是單向的,教練則是的迴圈
教導比較像是說明、講解、指示;或許有點像上課、聽演講或是看一本書
教練比較有互動性,除了上述所說也包含了給予回饋、示範與局部修正
指導者與被指導者都會參與其中。

觀察

觀察、聆聽而不是干預;保持耐心再採取行動。

1
2
3
4
5
6
7
8
9
10
11
12
13
20180724讀書會回饋:
1. Scrum Master 要有意識的不作為(Actively Doing Nothing)
2. 移除障礙:還是先觀察,讓團隊自行解決問題,個人的問題或許不是團隊的問題;
站立會議是個人尋求團隊意見的好時機。
3. 引導的方法就是問問題與對話。
4. 引導分為個人與團隊
- 個人
引導作對方想作或是 Scrum Master 想作的事
- 團隊
尋找一個目標,發散 → 收斂 → 執行
再找下一個目標,發散 → 收斂 → 執行
持續這樣的步驟,並隨時回頭看看效果如何,
有些想法或許會被錯過

其它

教練的實例

提問篇
解答篇
Coaching example : Kasatkina
Coaching example : 跆拳道
Coaching example : 空手道

(fin)

[閱讀筆記] The Great Scrum Master 第三章

#ScrumMasterWay

第一個層次 — 我的團隊

Scrum Master 只對開發團隊負責,
「如何讓自已每天都發揮作用?」
建立具有敏捷思維與 Scrum 價值觀的自組織團隊是個長期活動。
第一步是觀察,並抑制親力親為的衝動(具體建議/親自排解障礙),

可能的問題在於,團隊缺乏理解、所有權、責任感與經驗;
或是團隊的抵制。

1
2
3
回饋:
沒有主管並不會讓團隊自組織!給團隊解決不能只靠再想想
https://www.facebook.com/91agile/posts/986977734810178

Scrum 的價值觀

  • 承諾、專注、開放、尊重、勇氣
    — ScrumAlliance 《Scaling Lean & Agile Development》
  • 誠實、開放、勇氣、尊重、專注、信任、授權和合作
    —Kenneth S.Rubin《Essential Scrum》
  • 謙虛、尊重、信任
    — 《Debugging Teams: Better Productivity through Collaboration》
    謙虛、尊重、信任

第二個層次 — 關係

  • Scrum Team

    • 建立連貫、自信的團隊
    • 將 PO 整合進入團隊
    • 建立三個角色平衡的關係
  • 利害關係人

    • 客戶、用戶、經理、銷售人員、維運人員、客服、其它團隊
    • 將自組織用于參與的所有人員

    這需要 Scrum Master 對 Scrum 定義、理解與解釋的能力,
    不只是會議/角色或產出物,而是從文化、價值觀與思維方式對 Scrum 的內化。
    在這層次下,需要建立靈活的虛擬團隊擁有所有權,承擔某些責任,
    有些團隊在解決問題後就可以淡出,有的要維持一段時間。

1
2
3
4
5
6
7
8
開發團隊與 Scrum 團隊不是組織中唯一的團隊 ?
持續存在的團隊 ? 專案團隊 ? DevOps ?
短暫存在的團隊 ? 救火團 ? 跨專案團隊 ?
這些團隊的資源從何而來 ?
持續存在又特殊的團隊? 維運?
花很多時間釐清問題,卻沒有辦法解決問題?
受限於什麼原因 ?
技術不足 ? 沒有人領導 ? 沒有所有權 ? 風險導向 ? 不受重視 ?

第三個層次—整個系統

Scrum 是「一種生活方式」,成為生活哲學的一部份,改造整個系統(世界)。

提示

  • 先觀察
  • 幫助團隊,讓團隊移除障礙
  • 引導不是讀一本書或上一次課
  • 教練法是提出問題的能力(你會問問題嗎?)
  • 不要停留在開發層次,融入工作生活之中
1
2
3
太高大上了,跟不上…
問個問題,如果障礙是組織內的要員或大主管呢 ?

Scrum Master 小組

如果要讓組織敏捷,核心是一個強大的 Scrum Master 小組。
如果組織在「第一個層次 — 我的團隊」中擁有一個強大的 Scrum Master 小組,
那麼 Scrum Master 只需要完善團隊就好了;
比起單獨創立完善一個 Scrum Team 或是依賴 Agile Couch,
Scrum Master 小組是改變組織最好的起點。

Scrum Master 小組的目標

  • 替其它人作好系統層次的準備
  • 關注整個系統
  • 建立虛擬組織讓人參與並擁有所有權

挑戰

  • Scrum Master 否定 Scrum Master 小組的價值
  • 防衛心理:
    • 缺乏同理心,從別的團隊角度觀察事情
    • 缺乏系統觀點與思維
    • 缺乏管理變革經驗

組織即系統

將組織視為系統而非階層架構。

  • 系統思考,了解彼此的關系與動態
  • 觀注 impact mapping

Cynefin 框架

  • 簡單明確(Simple / Obvious)
    • 你只需要分類,選擇最佳解即可
  • 人為/物理複雜(Complicated)
    • 像是組裝模型,你需要先分析計劃,
    • 當事情變得簡單明確即可。
    • 沒有最佳解,只有最適合的選擇
  • 抽象/化學複雜(Complex)
    • 重複實驗評估,直到事情逐漸明確可以進行下一步,
    • 通常要大量的試錯才能有解答
  • 混亂(Chaotic)
    • 你只能依賴直覺,先逃離危險,分析情況後再決定下一步
  • 無序(Disorder / Confusion)
    • 如果你無法分辨情況,就是處理無序的狀態
    • 先搜集資訊,分析再前進
      Cynefin 框架

練習

  1. Obvious : 多語抽換字串
  2. Complicated : 整個 sprint 範圍多個頁面抽換;
    RD 彼此衝突 / Merge Before Build 造成的衝突與浪費
  3. Complex : 風險控管多種理由不準上線
  4. Chaotic : 上線後引發 SQL 問題當下是混亂的

回饋

1
2
3
4
5
6
7
8
9
10
11
1.
組織或團隊會抗拒改變;
又或者組識本身的價值觀與 Scrum 有所抵觸。
以這個層面來說 Scrum Master 能作得很有限,
所以又有 Agile Coach 的產生 ? → 說穿了就是顧問 ?
第一現場的工作者給的問題,如果不虛心接受
以現場角度思考,全盤歸疚於心態問題,是在逃避問題
抱著過往成功不放,不願具體改變或聆聽異議,
由上而下獨幹而非由下而上改變,喊喊口號「速度感起來了!」
敏捷淪為口號,實踐就成了宗教儀式。
不論是 Scrum Master 或是 Agile Coach 都是觀察者/顧問的角色,
1
2
3
4
5
轉型的路上我質疑一切
質疑主管、質疑公司、質疑理論、質疑作法;
甚至質疑我自已,然後我的心態還不能崩了,
真是有病…
要正心,保持陽光。
1
2
3
4
5
6
7
8
9
10
11
12
13
Unit Tests Team ?
為什麼有這樣的想法 ? 單元測試很重要,卻沒有人寫。
原因1. 沒有時間
原因2. 流程內未包含寫單元測試與執行單元測試,
Scrum 的 User Story 或 Task 也不會包含,驗收條件也不包含 Unit Tests。
原因3. 責任規屬不明? QA Team 專心作測試,RD Team 專心作開發
沒有一個團隊專門來處理單元測試
原因4. 導入失敗
- 跨領域 BeckEnd、F2E、IOS、Android 缺乏足夠知識
- 跨專案開發資源就不夠了,怎麼寫測試 ?
- 遺留代碼難以開發,技術水平不夠,缺乏領頭羊。
- 讀書會成為逆向宣傳。
- 沒有人專職導入,導入船過水無痕。

Unit Tests Team ?

參考

(fin)

[閱讀筆記] The Great Scrum Master 第一章

ScrumMasterWay

大綱

  • Scrum Master 的角色與責任
    • 自組織
    • Scrum Master 的目標
    • Scrum Master Pattern
      • Scrum Master 是團隊成員
      • Scrum Master 是 Product Owner
      • Scrum Master 是人事經理
      • Scrum Master 兼任多支團隊
    • Scrum Master 領導
      • 僕人式領導

CH1 Scrum Master 的角色與責任

  • 不是團隊的祕書
  • 不是額外的開銷
  • 負責創造高績效團隊
  • Agile 與 Scrum 思想的專家(信徒)

質疑

1
2
3
4
5
我一直認為盲信是相當危險的,這個世界與其說*沒有銀子彈*,
不如說沒有狼人,或是說你面對的永遠不只是狼人,而是未知。
現場看到太多的 Scrum But(我比較喜歡叫 Scrum Buffet 或敏捷自助餐)
當人人都說「敏捷大法好」的時候,我分不清邪教大典/直銷與敏捷的差別了…
還是鬼島就是神祕力量能將好東西質變成孬東西呢?

自組織

我們應該如何組織我們自已,達成目標?

  • 決定誰作什麼
  • 協助對方
  • 學習新知
  • 劃分優先級

Scrum Master 要提醒個人,團隊是一個實體,比個人更重要

Scrum Master 的目標

  • Scrum Master 建立自組織的團隊
  • Scrum Master 教練與引導
  • Scrum Master 不負責交付
  • Scrum Master 負責排除障礙(而非斟茶遞水的祕書)
  • Scrum Master 鼓勵團隊承擔責任

Scrum Master Pattern

Scrum Master 是團隊成員

  • con
    • 參與過多,缺乏系統觀點與系統思考的能力
    • 缺乏領導能力與變革管理的技能
    • sprint 無法按時完成時,通常會不太願意改進團隊
    • 缺乏將進一步提昇團隊的能力
  • pro
    • 通常與團隊高度互相信任
    • 了解團隊的優缺點
  • result
    • Scrum Master 角色被邊緣化
    • Scrum Master 變成團隊助理或無事可作

Scrum Master 是 Product Owner

  • con
    • 角色本身會互相衝突
  • pro
    • Product Owner 較容易被視作團隊的一份子
  • result
    • Scrum Master 角色會被忽略
    • Product Owner 控制所有事情
    • 團隊缺乏自組織

Scrum Master 是人事經理

  • con
    • 團隊對 Scrum Master 缺乏信任
    • 往往變成下命令,教導而非輔導
  • pro
    • 優秀的領導者當 Scrum Master 可以加速過渡轉型期
  • result
    • 可以縮短轉型期
    • 團隊對缺乏自組織、自信與所有權

Scrum Master 兼任主管 可

能成為團隊成員無法暢欲所言的原因,更不樂見的是,也許主管本身就是阻礙。
但同時這也會帶來一些機會,擁有管理權限的主管,
會更有力道推動變革,也可以直接調動資源,給予團隊更快更實際的支援。

→ to be read one more time

Scrum Master 兼任多支團隊

  • con
    • Scrum Master 缺乏時間
    • 不同團隊同時發生問題時無法即時引導
    • 通常兼任超過三支團隊會缺乏足夠訊息
  • pro
    • Scrum Master 能快速學習
    • 較能了解不同團隊有不同文化
  • result
    • Scrum Master 能累積更多經驗
    • Scrum Master 在系統思考上表現較好
    • 更有可能將 Scrum 應用於整個組織
回饋
1
2
3
4
5
6
7
8
9
10
20180717 讀書會
Q:Scrum Master 應該先成為觀察者的角色,
再進一步作引導或指導,兼任多支團隊的情況下,
可能會受限於環境,導致無法作第一線的觀察,而導致效果不佳。
A:較成熟的團隊可以稍微放一下,多參與初心團隊,
自組織的成熟團隊就不必要每件事。
feedback:
1. 不成熟的 Scrum Mater 應該跟著成熟的 Scrum Master 共事。
2. 不成熟的團隊應由成熟的 Scrum Mater 帶領。
3. 成熟的團隊 Scrum Mater 的角色仍在,但是可以淡出。

Scrum Master 領導

  • Scrum Master 要注重整個組織,非單一支 Scrum 團隊,
  • 關心長期目標與策略。
  • 領導者不是由時間表所趨動的。

僕人式領導

  • 傾聽
  • 同理心
  • 治療關係
  • 要意示到自已是領導者(你要帶領團隊到何方?)
  • 說服而非權威
  • 承諾他人成長
  • Big Picture — 在日常與短期目標之中,抱持繪製遠景的能力
  • 管家 — 抱持開放與服務他人
  • 先見之明 — 經驗與直覺
  • 建立共同體

(fin)

[生活瑣事]徵工讀生有感

原文

開發團隊需要找 二名工讀生, 請幫忙問問家裡有沒有專科大學含以上的小朋友,
有興趣來公司實習的, 條件可以到公司再談

我們希望你

  • 對電子商務有興趣、有熱忱, 喜歡解決問題
  • 樂於溝通與分享
  • 喜歡團隊合作

工作內容

  • 協助專案開發, 修改前端 Javascript/CSS, HTML頁面調整
  • 協助頁面功能測試

條件

  1. 熟悉HTML(接觸過JavaScript,CSS佳)
  2. 接觸過任意後端程式語言(C#,ASP。NET MVC佳)
  3. 具備網頁應用程式開發的概念或經驗佳
  4. 暑假期間7/1 ~ 8/31, 上班時間, 09:00 ~ 18:00 (edited)

心得

一眨眼也工作十年了,不說自已,
身邊年輕的朋友也不是小朋友了;
各種意義上也沒有小朋友;
視茫茫,髮蒼蒼,齒牙動搖;
身體平安,惟膀子疼痛厲害,轉身射門,諸多不便。

補充

  1. 薪資會優於勞基法加面議。
  2. 95% 的信賴區間下,可能會落在 150 左右,正負6個百分點。

(fin)

[生活記事]五月身體異常

下玉山

登玉山是我的年度計劃之一,至少已經規劃 3 年了
過程也是一波三折,如果不是身體發生的狀況
現在這篇文章應該是登玉山的甘苦談了,
簡單的說一下原因,我是帶著落枕上山的,
爬山的過程中,身體為了保護脖子,不自然的動作導致了肩膀也傷痛
目前還在復健中,這跟後來的病痛有沒有關係,我就不知道了

5月9日晚上

當天晚上的計劃是閱讀單元測試的藝術
這是在公司參加的讀書會,剛好下山後的那個禮拜就是我負責的章節,
因為身體還在很疲累的狀態,所以我只打算在床上稍作閱讀,
沒有計劃要刻 Code 。

1
2
3
4
程式相關的書跟其它書籍最大的不同是,
如果裡面有程式碼,你很容易去實踐書裡面的內容,
有好有壞,它不像一些高大上的東西,說得到作不到(光說不練)(就是幹話)
程式寫下來,跑一下就可以很清楚作者要表達的東西。

症狀

一開始是看不清楚一兩個字,單純以為是眼花了而已。
隨即發現這跟平常的眼花並不一樣,左邊的視野完全消失了,
當下立即對自我作了一下檢查,不論是左眼右眼看到的東西是相同的,
就是左邊的視野是糢糊不清。

當下時間已經是凌晨 1:00 多了,從來沒有這樣的症狀,
很害怕是視網膜剝離或是急性青光眼之類的,
真的是有想到各種失去視力的恐怖想像,
不過症狀卻隨著我到達醫院消失了,

當下醫生也只有量血壓,看起來也正常,
也沒有其它症狀,就被趕回家了……

回到家沒多久,先是視野又出現相同症狀,沒多久就開始頭痛
從右眼到到後腦勺的疼痛,有點類似吃太冰的東西引發的頭痛感覺
再一次去到了醫院,這次本來想就近看診所以選了西園
想不到西園沒有急診眼科就又去了台大一趟
醫生直接幫我抽血並給了我一個藥丸(止痛藥)
吃了藥後,症狀有所舒緩,在醫院等了幾個小時後,
終於有眼科醫生來作檢查,只有簡單的眼壓與視野檢查。

預約了眼科與腦神經科的門診後,就回家了,
不過那時已經快過 11:00 了,在醫院忘了帶手機,
還麻煩了同事C代請假。

休息

症狀發生後的當天是完全無力上班的,而門診時間是抓在二日後,
緊接著又是六日,所以直接請了 3 天的假
幾本上是睡了三天,當然門診那天也跑了很多地方,
雖然我姐陪我去看診,但是另人傻眼的是最後被丟包只能自已回家。
而整個過程當中他也只是在逛兒童醫院的小賣部,或是滑手機
事後想想,我自已去醫院說不定會更輕鬆一些。

檢查

門診後安排了檢查,另外就是一個月份量的止痛藥,
醫生開了「普拿疼」跟「羅莎疼」,備而不用能不吃就不吃,
之後的檢查分屬不同的時間,有時候是一個人去的;

MRI

MRI 是一個漫長的檢查,在電視上常常看到,可以透視你的腦與血管,
聽說輻射量會比較少,整個過程就是躺著聽噪音,
真的很吵,大概要 30 分鐘不能動,希望你們不會有這種體驗。

清醒期腦波

在頭上黏一堆電線(?),檢查人員會跟你說話
或是要你呼吸,讓你看燈光,感覺上是為了觀察你的腦的反應,
算是輕鬆的檢查,可是用完後整個頭超黏,
強烈建議作完後去洗個頭,特別是入暑後的夏天。

視野檢查

單眼測試,要看視野中央的亮點,
手上會有一個按鈕,隨機出現一個亮點就按一下,
作完右眼換左眼,蠻快速簡單的,
唯一有點難過的事是外面跟一個大媽聊天,
好像是腦瘤造成視野異常,
「弟弟,我什麼亮點都看不到」「…」
「你有看到嗎?」
我真的不知道怎麼回答……
「阿姨,我們先走了…」

天使

在公司基本上應該不要說這些私事的,
但是有些團隊成員在問,我又不想一直被問,
就直接濃縮成「眼睛看不到(清楚),看了醫生還在等檢查…」
謝謝那些關心我的人,雖然我仍會感到不自在…
上午跟團隊報告,下午就被長官關心了,
嗯…那種感覺比較像「聽說有個零件壞掉,看一下,如果不行就換一個吧…」
不過還是有天使,謝謝同事R,不管是小紙條或是熱敷眼罩都很溫暖,
真的有種遇到天使的感覺,特別是在被家人丟包之後…

Swing

很神奇的是在檢查完後的那個下午,
因為沒事可作,就到了華山,那邊有個 Swing 的跳舞活動,
之前就很感興趣,可惜19:00對我來說仍是個奢侈的下班時間。
活動蠻有趣的,社交場合所以大家的心態也比較開放,
可惜我完全不會跳,不過遇到了牧羊犬(如果我是羊,祂是牧羊人的話)
知道了彼此的身份後,我們一起禱告,

1
2
3
4
5
我看到上帝將你的心捧在祂的手掌上,  
細心的、仔細的在拼揍你破碎的心。
可能是過去從家人、朋友、職場…而來的傷害,
讓你的心碎成好幾塊,
但神說不要怕,放心交給祂…

唔…我還要想一想,不過當下還有另一個男生說他想去教會
(os:有沒有這麼突然,你是不是想……?)
不過基於個人原則,有人想去教會我一定會帶他去的。
後續有什麼發展就等著瞧了……

ps. 聽說有8:30的舞蹈教學時間,如果有 lv1 我應該會去參加。

教會朋友家聚餐

是一個好久不見的朋友,他在泰國,
所以我們大概一年只能見一次,
之前一直說要去泰國找他,總總因素總沒有成行,
很突然的一個邀約,大家帶一點吃的
我還剛踢完球,全身臭臭的,除了我大家都結婚生子了,
這種感覺是很尷尬的,某種程度上的,
不過因為我們也沒有團契,也沒有一起聚會(好啦,我知道是我沒去教會)
連繫上是很薄弱的,本來想說就好久不見的朋友,
後來一起唱了詩歌又一起禱告……
又把焦點作到我身上了,weeeeeee
或許需要恢復團契與聚會習慣吧。

不然我會止不住這些聲音的。

記錄

我的 blog 本來是不打算記錄這些東西的,
不知道為什麼就想記下來,
或許有一天會用到吧,或許不會,
等著瞧了。

(fin)

[活動筆記] 有關海外工作的大小事

隨手記

讓企業買你的專業與合作能力;而不是買你的時間

有關薪水

台灣通常最後才談薪水 , 在海外可以先提薪水

在台灣也要先提啦 , 講那麼多最後薪水談不攏只是浪費時間

薪水是少數客觀的指標 , 所以怎麼談很重要.
海外工作怎麼談薪水 ? 請考慮以下幾點:

  • 家庭移居(relocation)
  • 津貼(allowance)
  • 健康保險(healthcare insurance)

而在海外工作的技能最重要的是語言與專業,
目前軟體工程最熱門,英文很基本
中文其實也沒什麼.
另外注意簽証通常有最低薪保障,
在台灣年薪 250 以上才是獵頭的目標,
在選擇方面,建議考慮 個人成長 > 公司賺不賺錢
小公司或新創公司可能沒有很好的薪福;
可能有以下幾種選擇:

  • 分紅
  • 公司股票
  • 選擇權

有好有壞,要自已拿捏;
如果不是核心骨幹的話,拿到錢最重要
要不然很容易被大股東透過一些手段稀釋股權
有選擇當然更好,但是往往會變得更複雜

薪資不應與前公司掛勾,你可以選擇不透露你的薪資
薪資保密,應該是指公司要替你保密,
你可以選擇讓誰知道,而非限制自已不得透露給任何人

台灣公司很常對內搞薪資保密,
甚至視為禁語, 只能說弊大利
徒生猜疑 惹人聯想是否不同工不同酬 .

另外公司常用競業條款作一些轉職的限制,
為了自保應該有但書與對價關係 .

國際狀況

台灣青年的評價算肯吃苦,但是要求快速得到回報
目前缺工的鄰近國家:中國、菲律賓、日本,
英/美/歐/澳算相對困難,瑞典有一些機會,
新加坡的所得稅很低.

(fin)

Please enable JavaScript to view the LikeCoin. :P